返回列表

25nd place Summary

405. Lyft Motion Prediction for Autonomous Vehicles | lyft-motion-prediction-autonomous-vehicles

开始: 2020-08-24 结束: 2020-11-25 自动驾驶决策规划 数据算法赛
第25名方案总结

第25名方案总结

作者:Chung-Hsien Tsai
比赛排名:第25名

使用的工具

  • Tensorflow/Keras
  • Colab(使用免费版 TPU)
  • Google Cloud Storage
    我在本地渲染数据,将数据打包成 .tfrec 格式,并上传到 Google Cloud Storage(约 2TB)。为了确保容量不会爆炸,我将图像压缩成了 PNG 格式。

数据集

  • 使用了训练集(非完整版*)和验证集数据
  • 使用了默认设置(来自示例代码)进行渲染,除了 min_future_frame(= 10)

网络主干

  • Xception
    我尝试了 Keras 提供的许多主干网络以及不同版本的 Resnet(101, 50, 34, 18),发现 Xception 的质量最好(通过验证集评估)。
  • Batch size = 256

其他技巧

  • 验证
    使用了验证集数据和部分训练集数据。我根据 Agent 中心点的 y 坐标位置,将训练集和验证集数据分成了五部分。我确保相同(或相似)的地图不会同时出现在训练集和验证集中。
  • 多模态
    我预测了 4 种模式,并选择了置信度最高的前 3 种模式。此外,我尝试过更多模式(> 4),但发现只有 4 种模式具有较大的置信度值,而其他模式从未被选中。这种不平衡问题在多模态技巧中似乎很常见。
  • 标签平滑
    我对每个真实标签“乘以”了一个微小的高斯噪声(均值 = 1,标准差 = 0.00333)。
  • 自定义损失函数
    我使用了官方提供的多模态评估指标作为损失函数。为了对极端情况给予更多的惩罚,损失值乘以了一个权重,该权重与每个 Agent 的“角度”成正比。
    角度计算公式:Angle = acos(x/sqrt(x**2 + y ** 2)),其中 是每个 Agent 最终位置的坐标。
  • 丢弃历史帧
    我使用了 10 个历史帧进行训练,但我发现大约 5% 的测试数据的历史帧少于 10 个。因此,我随机丢弃了目标历史帧中的历史信息。

*由于 Colab 内存的限制,我无法使用完整的训练数据进行预处理。太遗憾了。

同比赛其他方案