导言
最近3d目标检测领域出了一篇新作,思路简单,却在nuScenes榜单上高居第二。正式讲解它之前,先附上文章和代码地址:
论文题目:Center-based 3D Object Detection and Tracking
在公众号「3D视觉工坊」后台,回复「CenterPoint」,即可获得论文。
代码:https://github.com/tianweiy/CenterPoint
CenterPoint刷榜结果
CenterPoint听名字有种似曾相识的感觉,没错! 这篇文章的灵感正是来自于图像中的目标检测算法CenterNet: Objects as Points[1].(二者的作者都来自于UT Austin,不知道背后有没有什么不为人知的小故事。)所以,让我们首先复习一下CenterNet。
CenterNet
CenterPoint
前处理及主干网络。CenterPoint延续了CenterNet的思路,并没有设计新的主干网络,而是采用之前的工作。其framework如下图所示,图中编码器阶段的虚线框代表可选项,蓝色框代表深度网络,红色框代表固定操作。
CenterPoint framework
实际上,CenterPoint的主干网络(3D encoder)采用的是PointPillars和VoxelNet的encoder。二者的区别可以通过作者的实验结果看出:
PointPillars vs VoxelNet
由于PointPillars没有耗时的3DCNN,因而速度更快;VoxelNet因为有更多的参数,所以mAP会更高。
检测头。网络有四个输出:①表征目标中心位置的热力图;②目标尺寸;③目标朝向;④目标速度 (速度用于做目标跟踪,该思路来源于另一篇文章CenterTrack[2]) 。不难看出,这是一种典型的center-based anchor-free检测头。在文中,作者论述了采用这种center-based representation 对检测任务的两点好处:首先,点没有内在的方向。这大大减少了检测器的搜索空间,同时有利于网络学习对象的(rotational invariance)和等变性(rotational equivariance)。其次,在三维检测中,目标定位比对目标的其他三维属性进行更重要。这个反映在常用的评估指标中,这些指标主要依赖于检测到的目标和gt box中心之间的距离,而不是估计的3dbox的属性。笔者认为作者未提到的一个明显的好处则是,此类center-based representation方法不需要做NMS,能减少运算。
【补充知识:
就笔者目前看见的anchor-free检测头可以分为三种:
补充结束】
CenterNet vs CenterPoint.虽然整体思路和CenterNet类似,但是CenterPoint也有三维检测器的独有的特点:
1、在三维检测中,主干网络需要学习目标的旋转不变性和等变性。为了让网络更好的捕获这个特征,作者在中心点预测分支和回归分支各添加了一个可变卷积。中心点预测分支学习旋转不变性,回归分支学习等变性。
2、考虑到网络输出的旋转不变性,作者选择了圆形池化区域,而不是CenterNet中的方形区域。具体说,就是在鸟瞰中,只有当某中心半径r内没有具有更高置信度的中心时,该对象才被视为正,作者将该方法称为Circular NMS。Circular NMS与基于3D IoU的NMS具有一样的抑制效果,但速度更快。
3、基于上述的设计,检测器依然没有达到完美的旋转不变性和等变性。作者因此构建了一个由输入点云的四个旋转、对称副本组成的简单集合,并将这一集合共同输入CenterPoint,每一个都产生一个热力图和回归结果,然后简单地将这些结果求均值。
实验结果。作者在nuScenes数据集上进行了实验,实验结果如下。
不难看出, CenterPoint在各个类别上都有较好的检测结果,mAP甚至直接超出了PointPillar一倍。
更难能可贵的是,通过下图中作者的ablation study我们可以看出,CenterPoint在性能明显提升的情况下,实时性并没有下降。这也不难理解,毕竟backbone没有大的改变。
文章看到最后我沉默了。其实当初看到CenterNet的时候,我相信很多做3D CVer都会自然的联想到将该方法移植到3D中。但是正当我跃跃欲试的时候,看见一篇叫做3DSSD[3]的文章,里面提到:However, it is not optimal to directly apply center-ness labels to the 3D detection task. Given that all LiDAR points are located on surfaces of objects, the center-ness labels are all very small and similar. It is almost impossible to distinguish good predictions from other points. 好像很有道理,基于此,我便放弃了尝试。现在看来,在deep learning 领域,还是应该时刻铭记事实胜于雄辩这个真理 。
[1] Zhou X, Wang D, Krähenbühl P. Objects as points[J]. arXiv preprint arXiv:1904.07850, 2019.
[2] Zhou X, Koltun V, Krähenbühl P. Tracking Objects as Points[J]. arXiv preprint arXiv:2004.01177, 2020.
[3] Shi S, Wang X, Li H. Pointrcnn: 3d object proposal generation and detection from point cloud[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 770-779.
[4] Yang Z, Sun Y, Liu S, et al. 3dssd: Point-based 3d single stage object detector[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 11040-11048.
[5] Wang Y, Fathi A, Kundu A, et al. Pillar-based Object Detection for Autonomous Driving[J]. arXiv preprint arXiv:2007.10323, 2020.
本文仅做学术分享,如有侵权,请联系删文。