是基于点云的二阶段检测网络。KITTI上性能第一,10FPS
目前主流的点云检测网络可以分为3类,Mutil_view,voxel,point-based,
Mutil_view:涉及到如何融合多元信息的问题,无论是将点云投影到3D(MV3D)还是直接处理融合的特征(AVOD), 都有问题:对行人等小目标不work
Voxel:体素化网络(voxelnet),不可避免的有信息丢失问题,削弱了局部信息的质量
Point_based:(PointRCNN)性能更好,但是感受野不可控,计算量大
1. 区域提议模块(Proposal Generation Module,PGM)
2. 提议特征生成(Proposal Feature Generation)
3. 目标框预测(Box Prediction Network)
三维目标朝向可能是任何方向,因此采用球形anchor来给每个点分配anchor,对不同目标采用特定的球形半径。每个球形anchor对应一个预设好尺寸的参考目标框,用于提议生成。由于不预设参考框的朝向而是直接预测,球形锚的数量与预先定义的参考框可能方向的数量不成正比,使得锚的数量减少约50%。
为进一步减少anchor数目,使用3维语义分割网络来得到点的类别得分和语义特征。以anchor中心点的得分作为该anchor的得分,将anchor投影到BEV中计算IOU,然后进行NMS操作,这样anchor的数目减少到了500个左右。
其实就是pointnet
网络输入:归一化的anchor坐标(x,y,z)(对anchor内的每一个点而言)和语义特征
输出:分类得分,回归偏移,朝向
语义分割网络和point net如图:
得到中心点坐偏移,加上原来的坐标和预设的anchor尺寸,得到准确的提议框。朝向信息同voxelnet,角度等分为12份
最后通过分类得分和BEV IOU对anchor做nms,得到300/100个左右的提议框用用于train/tets
IOU 计算:球形anchor不好分配正负样本,因此计算点云数目的交并比而不是面积交并比
最简单的方法就是,对每个提议直接用pointnet++处理得到特征向量。但是速度慢。本文使用pointspool(即voxel layer):
相比原来的VFE layer,pointspool层可以传播特征,使得端到端的训练成为可能。pointspool层相比于point net++,基本维持了精度不变,速度大幅提升
有两个分支:目标框估计分支和IOU估计分支
两个FC层做特征提取,还有两个FC层分别做分类和回归。直接回归尺寸(tl,tw,th)和偏移(tx,ty,tz)。朝向预测与voxelnet相同
预测目标框和GT之间的IOU,然后将IOU乘以分类得分,作为NMS的指标。精度提升很高:
分为两部分:提议生成损失loss prop 和目标框预测损失loss box
除了与loss prop 相同的部分外,多了两项:3D IoU loss 和 corner loss
3D IoU loss:把提议和对应GT框的IOU作为GT,使用smooth L1
Corner loss:计算8个角点与对应GT框的距离:
STD的精度是目前最高,对比之前的最强模型UberATG-MMF,在hard难度下的精度提升很高。
不过仔细观察可以发现,在行人检测任务中STD的性能与F-pointnet和AVOD-FPN没有明显差距,不如car和cyclist任务中的优势明显,可见行人检测是3D立体检测任务中最难的地方。
论文中说对小目标点云更加稀疏,相比RGB检出难度更大
首先是球形anchor相对矩形anchor的优越性:
没有朝向,所以anchor数量减少,计算量减少,同时尽可能多的覆盖了ground truth的 区域(感受野大),召回率高
特征向量的有效性:
语义特征和归一化的坐标作为特征,效果最好:
IOU预测分支的有效性:
在NMS,soft-nms和3D IOU引导的NMS三者的比较中,3D IOU引导的NMS效果最好:
80ms,在所有point-based 和 multi-view 方法中是最快的(没有提到voxel,应该还是voxel方法最快)
其中point net++(backbone) 用了54ms,提议生成模块(pointnet,nms)用了10ms,pointspool layer用了6ms,二阶段的两个分支用了10ms。
由推理时间可见,提出的pointspool layer非常之高效,应该是使用了体素网络的VFE层的原因。
此外,backbone太重,说明在点云检测任务中,目前没有一个较轻且足够高效的网络,类似于二维检测任务中的resnet,毕竟3D检测不如二维检测成熟,这也是下一步需要努力改进的方向:即 如何改进STD的backbone使得速度进一步提升?
考虑将分类得分作为标准的NMS和将IOU作为标准的NMS:
两个标准并没有直接关联,但事实上性能是差不多的??说明两者的分布非常相近,那么把IOU 乘以分类得分作为标准,得到的提升应该也不会太大,事实确实如此:
(又或者,本来精度逼近90,由于边际效应,想要大幅提升已经基本不可能了?)
欢迎交流!