返回列表

3rd place solution [0.182 Private LB]

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

开始: 2019-09-12 结束: 2019-11-12 自动驾驶感知 数据算法赛

第3名方案 [Private LB 0.182]

作者: yukke42 (Master) | 比赛排名: 第3名

感谢组织者和Kaggle举办这次比赛!

祝贺所有获奖者!

以下是我的解决方案:

数据集与预处理

  • 未使用外部数据,仅使用本次比赛的点云数据。
  • 未使用动物和紧急车辆类别。
  • 忽略少于5个点的目标。
  • 车辆类别(汽车、其他车辆、卡车和公共汽车)的检测区域为 100m x 75m,小物体类别(行人、自行车和摩托车)的检测区域为 100m x 50m。
  • 使用场景中每个类别的目标数量进行 StratifiedKFold 数据集划分。

模型

我的网络结合了 VoxelNet [1] 和 PointPillars [2],实现基于 traveller59 的 second.pytorch。该网络仅使用 FC 和 Conv2d,没有使用稀疏卷积或可变形卷积。

基础模型流程:

  1. 点云被分割为体素 [0.25m x 0.25m x 0.75m]。
  2. 将 PointPillars 的 Pillar Feature Net 相同的网络应用于每个体素,输出通道大小 = 16 效果最好。
  3. 体素表示特征 (C x D x H x W) 被重塑为伪图像特征 (C * D x H x W)。
  4. 车辆类别使用了与 VoxelNet 中 RPN 几乎相同的网络,基于此配置文件。第一个 DeConv2d 被替换为 Conv2d 并调整了其他参数。
    对于其他小物体类别,对从重塑特征图中裁剪出的特征图应用了三个 Conv2d。裁剪的特征图对应于检测区域。
  5. 预测输出为定位、分类和方向。

可选模型:

  1. RPN 中使用了 Pre-activation ResNet,这个想法来自 [3]。
  2. 更改了小物体类别的 RPN。对裁剪后的特征图应用 Conv2d x 1(第1个输出)和 Conv2d x 3(第2个输出),然后将这些输出拼接。这是基于 VoxelNet 中原始的 RPN。

后处理

  • 使用 NMS 抑制每个模型的重叠预测。
  • 使用 Soft NMS 集成了三个模型。
  • 没有设置分数阈值。

数据增强

  • 全局平移
  • 全局缩放
  • 绕 z 轴旋转
  • mixup 增强
    将真实标签裁剪并粘贴到其他样本中(更多解释见 [4])。这种增强大大提高了所有类别的分数。

对我无效的尝试

  • 我扩展了 Weighted-boxes-fusion(ZFTurbo 去年在 Open Image 比赛中的方案 [5])以应用 3D 边界框来集成不同的模型,但分数低于 Soft NMS。不过它比普通 NMS 要好。
  • 我尝试使用语义地图图像(原始、过滤后)来过滤预测结果,但正确预测和错误预测都被过滤掉了。
  • 使用原始图像或从 2D 检测模型提取的特征图进行点云着色,在我的架构中作为点云的附加特征并没有起作用。

参考文献

  1. VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection [arxiv]
  2. PointPillars: Fast Encoders for Object Detection from Point Clouds [arxiv]
  3. End-to-End Multi-View Fusion for 3D Object Detection in LiDAR Point Clouds [arxiv]
  4. Fast Point R-CNN [arxiv]
  5. Weighted Boxes Fusion: ensembling boxes for object detection models [arxiv] [github]
同比赛其他方案