这是一个来自 LyftLevel5 的自动驾驶汽车研究和实践案例,通过结合多种感知传感器,来实现更准确的 3D 检测(如汽车,行人,骑自行车的人等)。
作者:W&B 编译:McGL
无人驾驶汽车的感知依赖于互补的传感器模态: 摄像头,激光雷达和雷达。
例如,激光雷达可以提供非常准确的深度,但远距离比较稀疏。摄像头即使在远距离也可以提供密集的语义信号,但不能获取一个目标的深度。
通过融合这些传感器,我们可以利用它们的互补优势,实现对目标(如汽车、行人、骑自行车的人)的更准确的 3D 检测,而不仅仅依赖于单一的传感器模态。为了加速自动驾驶的研究来解决感知和预测问题,Lyft 公开了自动驾驶车队收集的数据(https://self-driving.lyft.com/level5/data/
)。
一个 Lyft Level 5 数据集的例子,涉及到各种模态(激光雷达,雷达和摄像头)
融合摄像头和激光雷达有很多策略。感兴趣的读者可以在下面的参考资料[1-6]中找到各种融合策略的综述。在这里,我们只考虑两个策略,都利用到了深度神经网络。
第一种策略是通过两个阶段的融合,比如截头锥体(frustum) pointnets[1]: 第一阶段是图像检测模型,输入摄像头图像并输出 2D 检测结果。第二阶段输入 2D 检测建议(proposals),生成 3D 截头锥体(frustum),并在每个截头锥体中运行基于激光雷达的检测。我们在早期阶段就采用了这种策略,并取得了良好的效果(查看我们的博客,了解更多细节:https://medium.com/lyftself-driving/leveraging-early-sensor-fusion-for-safer-autonomous-vehicles-36c9f58ddd75
)。
然而,两级融合的性能同时受到视觉模型和激光雷达模型的限制。两个模型训练时使用单一模态数据,没有机会学习到两种传感器模态的直接互补关系。
另一种融合摄像头和激光雷达的方法是端到端融合(end-to-end fusion/EEF): 使用一个单一的高容量模型,将所有原始摄像头(在我们的案例中是6个)图像和激光雷达点云作为输入端到端训练。该模型在每个模态上运行单独的特征提取器,并对融合后的特征图进行检测。在本文中,我们将讨论我们的端到端摄像头激光雷达融合方案并展示实验结果。
端到端训练的端到端融合比两阶段融合有几个关键优势:
在下面的图中,你可以看到在我们内部数据集中,含汽车、行人和骑自行车的人的端到端融合模型达到的 AP@0.5比的两阶段融合模型要高得多。我们观察到其他类别(汽车和骑自行车的人)也有同样的趋势。为了简单起见,我们在本文的其余部分只比较行人。
我们运行这个实验是为了了解融合图像特征是否能提高模型精度。
在下图中,我们展示了对于75米范围内的行人,端到端融合
的性能在 AP@0.5 上优于仅激光雷达(无融合)
更高的模型容量 = 更高的准确率
我们增加了端到端融合模型中特征提取器的容量,并训练了三种容量逐步增加的配置: 端到端融合基线, 端到端融合较高的容量, 及端到端融合最大容量。
在下图中,我们展示了更高的模型容量带来的帮助。检测75米范围内的行人,最高容量(点云编码器/解码器特征的数量)模型提高了 AP@0.5 约 5%。
端到端融合模型是一种高容量模型,更容易过拟合。过拟合的一个标志是,训练指标有所改进,而验证指标没有改进(或者训练和验证指标之间的差距有所增加)。
我们应用了图像和激光雷达数据增强,显著减少了过拟合。在下面的图表中,我们展示了不同类型的基于图像的数据增强技术可以减少训练和验证之间 AP@0.5 的差距最大可达 5%,并且改进了模型的泛化能力。
基于丢弃图像和半分辨率图像的快速训练
训练大容量端到端融合模型可能会很慢,因为:
基线端到端融合模型训练用到所有6个全分辨率图像。64个 GPU 训练100个 epoch 花了 4.3 小时。为了在端到端融合模型上迭代更快,我们需要加快训练。我们试验了以下配置:
在图像丢弃和半分辨率图像的帮助下,我们的训练快了4.3倍,并且提高了模型的精确率。
混合精度训练
我们使用了PyTorch 自动混合精度(automatic mixed-precision),进一步加快了1.2倍的训练速度,降低了 GPU 的内存占用,而模型精度并没有降低。
参考资料:
[1] Qi, Charles R., Wei Liu, Chenxia Wu, Hao Su, and Leonidas J. Guibas. “Frustum pointnets for 3d object detection from rgb-d data.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 918–927. 2018.
[2] Xu, Danfei, Dragomir Anguelov, and Ashesh Jain. “Pointfusion: Deep sensor fusion for 3D bounding box estimation.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 244–253. 2018.
[3] Sindagi, Vishwanath A., Yin Zhou, and Oncel Tuzel. “MVX-Net: Multimodal VoxelNet for 3D Object Detection.” arXiv preprint arXiv:1904.01649 (2019).
[4] Sourabh Vora, Alex H. Lang, Bassam Helou, Oscar Beijbom “PointPainting: Sequential Fusion for 3D Object Detection”, In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2020, pp. 4604-4612
[5] Liang, Ming, Bin Yang, Yun Chen, Rui Hu, and Raquel Urtasun. “Multi-Task Multi-Sensor Fusion for 3D Object Detection.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 7345–7353. 2019.
[6] Liang, Ming, Bin Yang, Shenlong Wang, and Raquel Urtasun. “Deep continuous fusion for multi-sensor 3d object detection.” In Proceedings of the European Conference on Computer Vision (ECCV), pp. 641–656. 2018.
[7] Eric Vincent and Kanaad Parvate, Andrew Zhong, Lars Schnyder, Kiril Vidimce, Lei Zhang, Ashesh Jain, “Leveraging Early Sensor Fusion for Safer Autonomous Vehicles”
[8] Sammy Sidhu, Qiangui (Jack) Huang, Ray Gao. "How Lyft Uses PyTorch to Power Machine Learning for Their Self-Driving Cars"
[9] Lyft Level 5 AV Dataset 2020.
[10] "Automatic Mixed Precision package - torch.cuda.amp"
原文: https://wandb.ai/wandb_fc/case-studies/reports/Lyft-s-High-Capacity-End-to-End-Camera-Lidar-Fusion-for-3D-Detection--Vmlldzo2NjgwNDI?galleryTag=posts