返回列表

1st place solution (0.220 public LB)

347. Lyft 3D Object Detection for Autonomous Vehicles | 3d-object-detection-for-autonomous-vehicles

开始: 2019-09-12 结束: 2019-11-12 自动驾驶感知 数据算法赛
第一名方案 (Public LB 0.220)

第一名方案 (Public LB 0.220)

作者: Wenjing Zhang
发布时间: 2019-12-23

大家好,这篇帖子可能发得有点晚。感谢组织者,也祝贺大家!

背景

作为记录,我想说明一下,我真的是 Kaggle 新手,实际上也是机器学习新手。我 9 个月前才开始接触机器学习。我的背景是 3D 计算机图形学,所以我更多地是从 3D 视角而不是机器学习视角来看待这些问题。如果我在机器学习方面犯了什么愚蠢的错误,请多多包涵。

在这次比赛之前,我在 CVPR 2019 由百度举办的 WAD-Beyond Single-Frame Perception 比赛中获得了第二名,主题类似:激光雷达点云的 3D 检测 (http://wad.ai/2019/challenge.html)。我们使用的技巧正是基于那场比赛。所以我们只是采用并修改了这些技巧,并不清楚如果没有这些技巧性能会如何。

模型

我们的方法基于 Voxelnet (traveller59)。但我们的技巧可以应用于任何其他网络。我尝试过 PointRCNN,但运气不佳。

基础设置:

  • 无外部数据
  • 数据增强:x 和 y 翻转、随机旋转、随机缩放和随机平移
  • 无真值增强
  • 检测范围 [-100,-100,-5,100,100,3]
  • 无方向分类器
  • 无特定后处理,仅分数阈值处理 (0.1) 和 NMS

在 second 中实现了两种类型的 voxelnet:FHD 和 PointPillars。我们都使用了。基于“集成差异更大的模型会带来更好结果”的想法,我们使用不同的设置来训练一组模型。例如,我们在 PointPillar 中使用了体素大小 0.1, 0.125, 0.2, 0.25,在 FHD 中使用了 0.1 和 0.125。不同的模型还使用了不同的体素特征提取器(例如 PillarFeatureNet, PillarFeatureNetRadius, PillarFeatureNetRadiusHeight)。RPN 被修改为最终分辨率为 200 X 200 或 250 X 250。

关键技巧

我们方法的关键在于测试时增强 (TTA) 和带有特定 3D 框融合方法的模型集成。

测试时增强 (TTA)

我们将点云转换为几个副本。每个副本被输入网络并获得预测框。然后预测框被转换回来。例如,我们可以将点云旋转 20 度。在我们获得预测框(经过 NMS 后)后,我们将预测框旋转 -20 度(中心位置和偏航角都会改变)。我们对许多副本执行此操作并融合结果。在比赛期间,我们只使用了 4 个副本:原始、x 翻转、y 翻转、x 和 y 翻转。我们尝试了更多带有旋转、缩放和平移的副本。这给出了稍好的结果,但需要更多的推理时间。

模型集成

我们使用 TTA 获取每个模型的预测框并融合结果。

最佳单模型 (无 TTA): >0.175 (我只得到了一个 TTA 分数为 0.193 的模型的分数。但我得到了一个更好的模型,TTA 分数为 0.197)
最佳单模型 (TTA): 0.197

集成 7 个最佳模型: 0.220

3D 框融合

在我们获得几份预测框(来自 TTA 或模型集成)后,我们需要融合它们。我们选择具有相同标签且 IOU > 0.6 的框融合为一个。比赛结束后,我们尝试了加权框融合:目标检测模型的集成框。它实际上给出了更好的结果 (Public LB 0.222) 但速度较慢。为了融合框,中心点和尺寸直接进行加权平均。关键在于偏航角。如果你预测了方向并且可以信任它。你可以使用 sin 和 cos 插值。

Yaw angle diagram

然而,在我们的实现中,我们没有使用方向分类器(它不会影响分数,而且它不能 100% 准确)。我们需要处理一个歧义:偏航角与 偏航角 + 180 度是相同的。假设对于一个框,一个预测可能给出偏航角 175 度或 -5 �

同比赛其他方案