在《动手学无人驾驶(4):基于激光雷达点云数据3D目标检测》一文中介绍了3D目标检测网络
PointRCNN
。今天介绍该作者新提出的3D检测模型:PVRCNN
,论文已收录于CVPR2020
。
作者个人主页为:https://sshaoshuai.github.io/。
知乎ID为:https://www.zhihu.com/people/yilu-kuang-shuai。
PVRCNN
论文链接为:https://arxiv.org/pdf/1912.13192.pdf。
代码链接为:https://github.com/open-mmlab/OpenPCDet。
在介绍论文前,大家可以先看看作者此前分享的3D目标检测报告:https://www.bilibili.com/video/av89811975?zw
基于点云场景的三维物体检测算法及应用
文章目录
- 1. PVRCNN算法
- 1.1 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation
- 1.2 Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction
- 1.3 Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement
- 2. Experiments
1. PVRCNN算法
在目前的点云目标检测中,3D voxel CNNs
可以生成高质量的proposals
;而基于PointNet
的方法由于其感受野灵活,可以捕获更准确的目标位置信息。
在本文中,作者对这两种检测方法进行集成,首先使用3D voxel CNNs
作为主干网来生成高质量的proposalas
,然后在每一个proposal
中,为了充分有效池化点云特征,作者提出了两种新的池化方式:Voxel-to-keypoint scene encoding
与keypoint-to-grid ROI feature abstraction
。通过这两种池化方法,能够有效提高预测可信度以及对目标位置进行优化。
1.1 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation
这部分相对比较好理解,使用3D CNNs
作为主干网,将输入的点云划分为一个个voxel
。作者总共进行了4次下采样,最后投影到鸟瞰图上,生成proposal
。从结果可以看出,这种生成proposal
的方式有着更高的召回率。
1.2 Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction
PointNet
中提出的set abstraction operation
显示出了强大的特征提取能力,能够对任意空间尺寸的点云集进行特征抽取。受此启发,作者提出了将多个voxels
的特征聚合到keypoints
上。
- 首先是
Keypoints Sampling
,和PointRCNN
一样,作者使用最远点采样法(FPS)在所有点云中选取出nnn个关键点,在KITTI数据中n=2048n=2048n=2048。 - 然后是
Voxel Set Abstraction Module(VSA)
,如下图所示,作者在每一次进行下采样时都进行了一次VSA
操作,将不同尺度范围的voxel
特征汇聚到keypoints
。
具体地操作如下,其中lkl_klk表示第kkk层网络,pip_ipi表示为keypoint
,vj(lk)v_{j}^{(l_k)}vj(lk)表示为第kkk层网络中voxel
坐标,fj(lk)f_{j}^{(l_k)}fj(lk)表示为voxel
队以应地特征向量。这样就组成每个keypoint
邻域集SilkS_{i}^{l_k}Silk:包括voxel
特征向量及voxel
与keypoint
之间地相对位置。
然后是对SilkS_{i}^{l_k}Silk进行一次maxmaxmax操作。具体操作如下,其中MMM表示在集合SilkS_{i}^{l_k}Silk中最多选取出TkT_kTk个voxels
,GGG表示进行多层感知机操作,最外层是maxmaxmax操作。最终生成地每个keypoint
特征为fipvkf_{i}^{{pv}_k}fipvk。
对每一层3D CNNs
网络都进行上述VSA
操作,这样就得到了keypoint
结合后地特征fi(pv)f_{i}^{{(pv)}}fi(pv)。
- 现在将
VSA
模块进行扩展,我们对原始点云进行公示(2)的操作,得到特征firawf_{i}^{raw}firaw。对鸟瞰图上的keypoint
进行二项插值得到特征fi(bev)f_{i}^{(bev)}fi(bev),最终,关键点keypointkeypointkeypoint特征为fi(p)f_{i}^{(p)}fi(p):
- 这里作者还设计了一个
predicted keypoint weighting
模块,如下图所示。在训练时,可以根据annotation
来判断选取地关键点是不是属于前景点,这里训练使用地损失函数为focal loss
。
1.3 Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement
经过上面的处理,得到了一组含有多尺度语义特征的关键点集(keypoints with multi-scale semantic features)
。
为了进一步优化,作者在这里提出了keypoint-to-grid RoI feature abstraction
,如下图4所示。
首先在每一个候选方案(proposal)中,统一采样6×6×66\times6\times66×6×6个gird points。这里的采样公式如下,其中gig_igi表示为grid points,pjp_jpj表示为keypoint,f~j(p)\widetilde f^{(p)}_{j}fj(p)表示为关键点特征。
然后使用一个PointNet-block
得到grid point
特征,具体方法如下:
最后通过两层MLP网络,得到256维的特征向量。
2. Experiments
下图是论文作者在KITTI数据集提交的结果(截至2020年11月22日),目前排在第15位,是榜上唯一开源的方案。
总的来说,作者提出的voxel-based
和PointNet-based
方法还是很创新的,值得借鉴。