CVPR2020论文介绍: 3D 目标检测高效算法
CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Cloud
随着CVPR2020入选论文的曝光,一篇关于自动驾驶的文章被录用,该论文提出了一个通用、高性能的自动驾驶检测器,首次实现3D物体检测精度与速度的兼得,有效提升自动驾驶系统安全性能。目前,该检测器在自动驾驶领域权威数据集KITTI BEV排行榜上排名第三。论文是如何解决物体检测难题的?
View Aggregation
利用Anchor grid作为感兴趣区域进行Crop和Resize到同一大小,然后将两者的特征进行element-wise sum,然后进行3D proposals的第一次回归。然后进行NMS,使用proposals对feature map再次进行Crop和Resize, 然后再次回归,修正proposals,通过NMS得到Object Bounding Boxes。
上图中左边的Fully Connected Layers回归车辆位置的尺寸,右边的Fully Connected Layers回归车辆的朝向角。
3D
目标检测需输出物体类别及在三维空间中的长宽高、旋转角等信息
与普通的 2D 图像识别应用不同,自动驾驶系统对精度和速度的要求更高,检测器不仅需要快速识别周围环境的物体,还要对物体在三维空间中的位置做精准定位。然而,目前主流的单阶段检测器和两阶段检测器均无法平衡检测精度和速度,这极大地限制了自动驾驶安全性能。
此次,论文提出了新的思路即将两阶段检测器中对特征进行细粒度刻画的方法集成到单阶段检测器。具体来说,在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,同时在模型推理过程中辅助网络无需参与计算,因此,在保障速度的同时又提高了检测精度。
以下是第一作者 Chenhang He 对该论文做出的解读:
1. 背景
2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN和MaskRCNN,One
Shot系列的YOLOv1-YOLOv3。在2D Object
Detection的基础上又提出了新的要求3D Object Detection。问题的具体描述检测环境中的三维物体,并给出物体的Bounding Box。相比于2D,3D的Bounding Box的表示除了多了一个维度的位置和尺寸,还多了三个角度。可以想象,一架飞机的Bounding Box的尺寸的是固定的,飞机的姿态除了位置之外,还有俯仰角、偏航角和翻滚角三个角度。
目前对于3D Object Detection有迫切需求的产业是自动驾驶产业,因为要想安全的自动驾驶,需要周围障碍物的三维位姿,在图片中的二维位姿不带深度信息,没有办法有效避免碰撞。所以3D Object Detection的数据集大多也是自动驾驶数据集,类别也主要是车辆和行人等,比较常用的有KITTI和kaist。由于自动驾驶针对车辆,所以障碍物的高度的检测对于安全行驶并没有十分重要,而障碍物都在陆地上,所以也不存在俯仰角和翻滚角两个角度。所以有些3D Object Detection方法将这三值忽略了。
目标检测是计算机视觉领域的传统任务,与图像识别不同,目标检测不仅需要识别出图像上存在的物体,给出对应的类别,还需要将该物体通过 Bounding box 进行定位。根据目标检测需要输出结果的不同,一般将使用 RGB 图像进行目标检测,输出物体类别和在图像上 2D bounding box 的方式称为
2D 目标检测。而将使用 RGB 图像、RGB-D 深度图像和激光点云,输出物体类别及在三维空间中的长宽高、旋转角等信息的检测称为 3D 目标检测。
从点云数据进行 3D 目标检测是自动驾驶(AV)系统中的的关键组件。与仅从图像平面估计 2D 边界框的普通 2D 目标检测不同,AV 需要从现实世界估计更具信息量的 3D 边界框,以完成诸如路径规划和避免碰撞之类的高级任务。这激发了最近出现的 3D 目标检测方法,该方法应用卷积神经网络(CNN)处理来自高端 LiDAR 传感器的点云数据。
3D Detection with Frustum PointNets
模型主要分为3部分:
- frustum proposao
- 3D
instance segmentation - 3D
amodal bounding box estimation
对于实时3D
sensor采集的3D数据还是比2D数据的分辨率要低很多,所以用2D图片和2D目标检测的方法来提proposal(同时进行分类)效果很好。
This normalization helps improve the rotation-invariance of the
algorithm.
目前基于点云的 3D 物体检测主要有两种架构:
1、单阶段检测器 (single-stage): 将点云编码成体素特征 (voxel feature), 并用
3D CNN 直接预测物体框, 速度快。但是由于点云在 CNN 中被解构,
对物体的结构感知能力差, 所以精度略低。2、两阶段检测器 (two-stage): 首先用 PointNet 提取点级特征, 并利用候选区域池化点云 (Pooling from point cloud) 以获得精细特征. 通常能达到很高的精度但速度很慢。
2. 方法
目前业界主要以单阶段检测器为主,这样能保证检测器能高效地在实时系统上进行。本文提出的方案将两阶段检测器中对特征进行细粒度刻画的思想移植到单阶段检测中,通过在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,从而使得卷积特征也具有结构感知能力,进而提高检测精度。而在做模型推断时,辅助网络并不参与计算(detached), 进而保证了单阶段检测器的检测效率。另外本文提出一个工程上的改进,Part-sensitive Warping (PSWarp), 用于处理单阶段检测器中存在的 “框 - 置信度 - 不匹配”
问题。
主体网络
用于部署的检测器, 即推断网络, 由一个骨干网络和检测头组成。骨干网络用 3D 的稀疏网络实现,用于提取含有高语义的体素特征。检测头将体素特征压缩成鸟瞰图表示,并在上面运行 2D 全卷积网络来预测 3D 物体框。
辅助网络
在训练阶段,本文提出一个辅助网络来抽取骨干网络中间层的卷积特征,并将这些特征转化成点级特征 (point-wise feature)。在实现上,本文将卷积特征中的非零信号映射到原始的点云空间中, 然后在每个点上进行插值,这样本文就能获取卷积特征的点级表示。令 {():j=0,…,M} 为卷积特征在空间中的表示, {:i=0,…,N}为原始点云, 则卷积特征在原始点上的表示 等于
辅助任务
本文提出两种基于点级特征的监督策略来帮助卷积特征获得很好的结构感知力, 一个前景分割任务, 一个中心点回归任务。
具体来说,相比于 PointNet 特征提取器
(a),
卷积网络中的卷积操作和下采样会造成点云结构的破坏 (b)使得特征对物体的边界与内部结构不敏感。本文利用分割任务来保证部分卷积特征在下采样时不会被背景特征影响 ,从而加强对边界的感知。本文利用中心点回归任务来加强卷积特征对物体内部结构的感知能力 (d),使得在少量点的情况下也能合理的推断出物体的潜在大小,形状。本文使用 focal loss 和
smooth-l1 对分割任务与中心回归任务分辨进行优化。
3. 工程上的改进
在单阶段检测中, feature map 和
anchor 的对齐问题是普遍存在的问题, 这样会导致预测出来的边界框的定位质量与置信度不匹配,这会影响在后处理阶段(NMS)时, 高置信度但低定位质量的框被保留,
而定位质量高却置信度低的框被丢弃。在 two-stage 的目标检测算法中,RPN 提取 proposal,然后会在 feature map 上对应的的位置提取特征(roi-pooling 或者 roi-align),这个时候新的特征和对应的 proposal 是对齐的。本文提出了一个基于 PSRoIAlign 的改进,Part-sensitive Warping
(PSWarp), 用来对预测框进行重打分。
如上图, 本文首先修改最后的分类层以生成 K 个部分敏感的特征图,用{X_k:k = 1,2,…,K}表示,每个图都编码对象的特定部分的信息。例如,在 K = 4 的情况下,会生成 {左上,右上,左下,右下} 四个局部敏感的特征图。同时,本文将每个预测边界框划分为 K 个子窗口,然后选择每个子窗口的中心位置作为采样点。这样,本文可以生成 K 个采样网格{S^k:k
= 1,2,…,K},每个采样网格都与该局部对应的特征图相关联。如图所示,本文利用采样器, 用生成的采样网格在对应的局部敏感特征图上进行采样,生成对齐好的特征图。最终能反映置信度的特征图则是 K 个对齐好特征图的平均。
4. 效果
本文提出的方法 (黑色)
在 KITTI 数据库上的 PR Curve, 其中实线为两阶段方法, 虚线为单阶段方法。可以看到本文作为单阶段方法能够达到两阶段方法才能达到的精度。
在 KITTI 鸟瞰
(BEV) 和 3D 测试集的效果。优点是在保持精度的同时,不增加额外的计算量,能达到 25FPS 的检测速度。