2020 CVPR——达摩院联合港理工推出3D目标检测框架SA-SSD
0 基本信息
论文来源:2020 CVPR
1 Motivation
单阶段检测框架速度快,但精度低;二阶段检测框架精度高,但速度慢。分析后发现,单阶段检测框架精度低的原因在于通过卷积持续下采样损失点云的空间信息,导致定位时未能充分利用点云结构信息,因此本文提出将二阶段检测框架中对特征进行细粒度刻画的思想,移植到单阶段检测框架中。
2 Abstract
单阶段的检测框架通过全卷积的方式逐步下采样3D点云,然而这种持续下采样肯定会损失空间信息,且不能充分利用3D点云结构信息(structure information),因此精度较低。
因此,本文提出在单阶段检测框架中加入3D点云的结构信息来提升检测精度,具体而言,本文通过辅助网络将backbone中卷积特征转化为point-level表示,利用2个point-level监督(分割+中心点预测)对辅助网络进行联合训练,从而引导backbone的卷积特征了解(aware)点云结构信息;且模型推断时,辅助网络并不参与计算(detached),因此不会增加额外计算。此外,本文还提出Part-sensitive Warping (PSWarp)模块,解决预测边界框与分类置信度不对齐的问题。
总的来说,这也属于一篇联合point与voxel同时进行3D检测的论文,与PV-RCNN相类似(PV-RCNN是从点云中选取一些代表性的点,与不同尺度的voxel结合);至于PSwarp模块,它将判断是否是某个目标细化为判断是否是某个目标的一部分,然后把所有score通过取均值aggregate起来。
3 Introduction
单阶段检测方法:简单、高效。然而,逐渐缩小的特征图不可避免地损失空间信息,且不能明确地考虑点云数据的结构信息,导致检测精度低。
二阶段检测方法:由于在第二阶段仅聚焦与ROI区域,因此能够利用细粒度更高的空间信息(finer spatial information),所以其检测精度高,这表明了高细粒度空间信息(fine-grained spatial information)对于定位的重要性。
因此,本文提出高细粒度空间信息提升单阶段检测框架的精度。即:提出structure-aware(结构感知)单阶段3D目标检测器,除backbone外,还添加了一条辅助网络,在point-level监督下,引导backbone学习更好的特征。具体而言:辅助网络首先将backbone提取的特征转化回point-wise表示,再执行前景分割(使得特征对于目标边界aware)和中心点预测(使得特征对目标相互关系aware)2个子任务。辅助网络可以与backbone一起优化,且推断阶段不参与计算。
此外,我们注意到,单阶段检测器存在预测边界框和相应的分类置信度不对齐的问题。具体而言,分类置信度与所使用特征图的当前位置有关,而预测边界框通常偏离当前位置,这种错位可能会导致NMS获得次优结果。因此,本文提出Part-sensitive Warping (PSWarp)模块解决该问题。
4 Method
4.1 Backbone and detection networks
Input data representation:通过将点的坐标量化为张量指数(tensor indices),我们直接将每个点表示为输入张量的非零项:
点云坐标P=(x, y, z),输入张量的量化步长d=(dx, dy, dz),则张量指数p=([x/dx, y/dy, z/dz]),其中[.]为floor function,d=(0.05m, 0.05m, 0.1m)逐步迭代该过程。如果出现多个点计算的index相同,则用最新的点云坐标覆盖之前的。
(问题:其一,量化过程不可避免带来损失;其二,出现多个点的index相同时,利用最新点云覆盖,会导致一些点被弃用,这不会损失点云的结构信息吗?尤其对于远距离的目标,点云极其稀少,弃用点肯定会降低检测精度。)
Network architecture:backbone选用SECOND或者VoxelNet进行特征提取(主要是利用3D卷积块),包括sub-mainfold卷积和稀疏卷积,backbone输出多尺度特征图;检测头进一步体素特征压缩成BEV表示,再利用2D全卷积网络来预测3D边界框。
4.2 Detachable auxiliary networks
通过point-wise监督学习一个辅助网络,以帮助backbone提取的特征对3D点云的结构信息aware。
Motivation:下采样卷积特征不可避免会损失细节特征。如上图 (a) 所示,目标中仅有少量的点被检测到(绿色),且边界处有很多背景点(黑色),当目标离传感器距离较远时这种情况经常出现。随着CNN逐渐降低点云的空间分辨率,一些目标点可能误当作背景点,导致目标边界处的特征在低分辨率特征空间中错误分类,如图(b)所示,从而产生了低质量的边界框。
因此,本文想建立一个辅助网络,通过point-wise监督,引导backbone中不同stage的特征,学习点云fine-grained结构。因此,首先需要将CNN特征转回point-wise表示。
Point-wise feature representation:基于当前stage的量化步长,将CNN特征中非零index转化为真是点云坐标,即每个特征都可以以point-wise形式表示,如下所示:
{(fj, pj): j= 1,…M},f为特征向量,p为点云坐标。在每个stage,使用特征传播层在原始点云坐标下对backbone特征进行插值,以生成全分辨率的point-wise特征。插值取的是周围区域所有点的inverse distance weighted average。每个点的特征向量计算公式如下:
N(pi)表示球的区域,每一级半径分别为0.05m, 0.1m, 0.2m, and 0.4m。再通过cross-stage link连接point-wise特征,用于后续子任务(分割和中心点预测)。
Auxiliary tasks:
- 首先,point-wise前景分割任务,以引导CNN学习目标边界特征。如上图(c)所示,分割任务可以使得backbone更精确检测目标边界。然而,即使精确地检测到边界点,由于特征图的稀疏性,确定边界框的尺度和形状仍然存在模糊性。
- 因此,又引入另一个子任务:学习每一个目标指向其中心的相对位置,如图(d)所示。中心预测任务通过smooth-L1损失优化。
4.3 Part-sensitive warping
解决预测边界框与置信度不对齐的问题。
- 修改最后一个分类层,不再是判断每个grid“是否是物体”的二分类,而是判断每个grid是否属于目标的某个部分(generate K part-sensitive classification maps),比如(upper-left, upper-right, bottom-left, bottom-right)。也就是说,将每个目标划分为K个部分,用K个score分别表示每个grid是否属于第K个部分。
- 同时,将预测的Bbox,将Bbox分为K个部分,记录每个部分的中心点的位置,作为采样点,记作(Sk:k=1,2,…K),且每一个点都与一个分类部分相关联。
- 将classification map和sample grid 作为输入,生成从网格点的输入中采样的输出图。
5 experiment
KITTI数据集上对比
消融实验: