作者 | Abhinav Sagar
来源 | Medium
编辑 | 代码医生团队
在此博客中,介绍了使用激光雷达数据实时进行3D对象检测的研究工作。
重要事项
- 一种新颖的神经网络体系结构用于同时检测和回归图像中存在的所有对象的边界框。
- 使用2D鸟瞰图代替3D体素网格数据,因为它的计算量大为减少。这也将使检测器易于部署到实际工作环境中,尤其是在自动驾驶汽车的情况下。
- 将结果与不同的主干架构进行比较,其中包括标准的VGG,ResNet,Inception和主干架构。
- 展示了优化和消融研究,包括设计有效的锚。
- 使用Kitti 3D鸟瞰数据集进行基准测试和评估结果。
- 工作在平均精度方面都超过了现有技术,同时仍以> 30 FPS的速度运行。
2D物体检测
2D对象检测算法可以大致分为以下两种类型:
- 单级检测器-Yolo和SSD。
- 两级检测器-RCNN,Fast RCNN和Faster RCNN。
两者之间的区别在于,在两个阶段的检测器中,第一阶段使用区域提议网络来生成关注区域,第二阶段使用这些关注区域进行对象分类和边界框回归。另一方面,单级检测器使用输入图像直接学习分类概率和边界框坐标。因此,这些架构将对象检测视为简单的回归问题,因此速度更快但准确性较低。
3D物体检测
使用了基于照相机的方法和基于激光雷达的方法。事实证明,与基于摄像头的方法相比,激光雷达数据是一种更好的选择,可以实现更高的精度。使用激光雷达数据的挑战在于,它以点云的形式生成数据,该点云具有数百万个点,因此增加了计算成本和处理时间。对于自动驾驶汽车来说,感知组件以高精度和快速推断来检测现实世界的对象非常重要。
数据集
使用了Kitti数据集,该数据集包含LIDAR数据,该数据来自安装在汽车前部的传感器。由于数据包含数百万个点并且具有很高的分辨率,因此处理是一个挑战,尤其是在现实情况下。任务是检测并回归实时检测到的3D对象的边界框。该数据集有7481个训练图像和7518个测试点云,包括总共被标记的对象。3D对象KITTI基准为对象类别(包括汽车,货车,卡车,行人和骑自行车的人)提供3D边界框,这些边界框根据来自摄像机的信息在3D点云中手动标记。
网络架构
网络体系结构可以从以下几点进行解释:
- 将点云数据分为3D体素网格单元。
- CNN主干将体素形式的图像作为输入并输出特征向量。
- 多个残差块用于特征提取,其中两个相邻块之间有跳过连接。
- 这些模块分别连接到上采样模块,前两个残余模块除外。
- 最后的上采样模块连接到两个标头网络模块,该模块进一步连接到使用边界框回归器的两个分隔符模块。
- 在这些标题块中使用锚来根据检测到的身体的大小和形状来调整坐标。
- 使用逐点级联运算符,该运算符将每个逐点特征矢量与局部聚集的特征级联。
每个剩余块由以下组成:完全连接的层,然后是非线性激活函数(在这种情况下使用ReLu)和批归一化层。网络架构如图1所示:
图1:网络架构
锚点
锚对于有效的对象检测非常重要。这些基本上是先验的信念,其中包含检测到的对象的大小,其在图像中的位置,其姿势,其方向等信息。多种形状和大小的锚点更稳定,同时还有助于减少计算负担和时间、模型。
损失函数
向量s =(x,y,z,l,h,w,θ)分别表示3D边界框中心坐标,高度,宽度,长度和偏航角。图示了各种参数之间的几何关系,其中s代表地面真实向量,而a代表锚向量。公式1定义了地面真实情况与锚点之间的本地化回归:
由于角度定位损失无法区分翻转的边界框,因此我们使用softmax分类损失,如正锚和负锚所示。对于对象分类,我们分别使用了公式2和公式3所示的焦点损失:
使用二进制交叉熵损失进行检测,并使用Huber损失的变体进行回归。令i和j表示正锚和负锚,而p表示分类网络的S形激活。令pos代表正回归锚,而负代表负回归锚。公式4中显示了所使用的总损耗函数:
在这里,α,β和γ是使用贝叶斯优化优化的超参数。α,β和γ的最佳值分别为0.36、0.14和0.63。
结果
表6比较了在KITTI测试仪上基于LIDAR的3D对象检测器的结果。为了公平地比较,已经显示了VeloFCN,3DFCN和MV3D体系结构及其推理时间,针对所有三个类别(包括简单,中等和困难)的类平均平均精度度量。
表7.将结果与F-PointNet,AVOD和VoxelNet架构进行了比较。在所有三种情况下(即简单,中等和困难),均使用FPS以及按类别的平均精度。这里的所有三个类别均已与汽车,行人和骑车者进行了比较。
表8显示了在KITTI 3D对象检测基准和BEV基准上的3D对象检测性能比较。
平均精度
精度和召回率的理想值为1。由于不可能获得理想值,因此度量(即精度和召回率)越接近1,模型就越好。平均精度是在各种召回阈值下采样点的精度的平均值。图3显示了三种类别的3D对象检测的精确度-回想曲线,即汽车,行人和骑单车这三个类别(即容易,中等和困难)的所有类别。曲线越接近点(1,1),该模型的性能更高。
最后,在图4中介绍了KITTI验证数据集上3D对象检测结果的结果。
结论
在此博客中,介绍了使用LIDAR点云数据进行3D对象检测的神经网络。为了进行有效的计算,体系结构使用具有鸟瞰图表示的单级神经网络。介绍了架构细节,优化,损失函数等。在KITTI基准数据集上评估了网络。网络使用平均精度作为评估指标,其性能优于以前的最新方法。该模型的运行速度高于30 FPS,因此使其成为在自动驾驶汽车中部署的可行选择。
研究论文:
https://arxiv.org/pdf/2006.01250.pdf
代码:
https://github.com/abhinavsagar/ldopc