347. Lyft 3D Object Detection for Autonomous Vehicles | 3d-object-detection-for-autonomous-vehicles
祝贺所有的获奖者!感谢比赛主办方举办了一场非常有趣且充满挑战的比赛。特别感谢 @rishabhiitbhu 在比赛期间在论坛和内核中分享的所有内容,以及所有贡献见解的人。
该模型基于 second.pytorch [2] 中的 PointPillars [1] 实现。该代码库包含 SECOND [3]、VoxelNet [4] 和 PointPillars 的实现,并支持 Kitti [5] 和 NuScenes [6] 数据格式。我大部分时间都花在更新代码以适配 Lyft 数据集,以及移除 SECOND 架构所使用的 Spconv [7] 依赖项上,因为该依赖项在尝试编译时一直报错。许多移除 Spconv 依赖项的修改参考了 Nutomoy 的 second.pytorch 分支 [8],但该分支不支持 NuScenes 格式。
| 点云范围 | 体素大小 | 每个体素最大点数 |
|---|---|---|
| [-100, -100, -10, 100, 100, 10] | [0.25, 0.25, 20] | 60 |
数据集的前 80% 用于训练,后 20% 用于验证。数据按场景进行切分。
在比赛结束前的那个周六(9日),我得以使用 Point Pillars 模型进行了第一次提交。第一次尝试得到了以下结果:
| GPU | Epochs | 训练时间 | 验证集 mAP | Public LB mAP | Private LB mAP |
|---|---|---|---|---|---|
| GTX1080 | 20 | ~18小时 | 0.049 | 0.066 | 0.065 |
在分析评估集和测试集的预测结果时,我发现在 X 和 Y 轴方向上没有超出 ±50 米的预测。原因在于点云范围被设置为 [-50, -50, -10, 50, 50, 10],许多目标锚点范围被设置为相同或更小的范围,此外还有一些后处理操作会过滤掉点云中心 50 米以外的任何检测结果。这些是用于处理 NuScenes 数据的默认设置,并不适合 Lyft 数据集。
在将点云范围扩大到 [-100, -100, -10, 100, 100, 10],扩大目标锚点范围,将后处理检测过滤半径增加到 100 米并重新训练后,我得到了以下结果:
| GPU | Epochs | 训练时间 | 验证集 mAP | Public LB mAP | Private LB mAP |
|---|---|---|---|---|---|
| GTX1080 | 19 | ~36小时 | 0.072 | 0.079 | 0.078 |