Frustum PointNets & PointRCNN

这篇博客主要是大致总结一下我最近看的两篇3D目标检测的论文Frustum PointNets和PointRCNN。我本科毕业设计做的是点云物体分类算法的研究,最近提前进入了研究生生活,目前转看了三维物体的目标检测,主要觉得纯粹的点云物体分类在实际应用中的意义不是很大,真正贴合实际的是大型室外场景的三维目标检测。但也不能说点云物体的分类毫无用处,有些3D目标检测算法正是在分类算法的基础上提出的,比如我接下来正要说的Frustum PointNets。

Frustum PointNets

这篇论文的作者相信大家也很熟悉了,正是提出了PointNet和PointNet++的斯坦福大学博士Charles R. Qi,实打实的大佬一枚。

由于室外场景点云数据的量很庞大,因此直接对三维物体进行搜索太过浪费时间和资源。Frustum PointNets的思想是,首先利用先进的二维目标检测算法得到物体在图像上的选框(proposal),其次根据视觉原理确定物体在三维场景中的四棱台区域,然后利用PointNet网络在四棱台区域里将物体分割出来,最后利用PointNet++网络确定物体的准确位置。算法的核心思想应该是化繁为简,既然PointNet和PointNet++没法对大型室外场景的点云数据进行处理,就先通过一个成熟的2D目标检测器把物体可能存在的区域范围缩小,再结合先进的3D深度学习进行物体定位。这种2D结合3D的方法的确具有很强的代表性,后面还会遇到不少同类型的算法。

论文中有一个点我觉得特别重要,就是坐标系的转换。
Frustum PointNets & PointRCNN
转换坐标系对于简化计算和提升检测效果都有很大的帮助,这在PointRCNN也得到了体现。论文中还有其它很多细节,大家可以去原文中细细品味。

PointRCNN

PointRCNN是今年CVPR的一篇文章,网络结构较为复杂,我连论文还有代码看了一个星期,才算大致看懂了一些。

该文章使用two-stage的方式:第一阶段,利用PointNet++(PointNet牛B~)作为主干网络,先完成点云的分割任务,判断每个三维点的label(前景点or背景点),对分为前景的点,使用每个点的全局语义特征生成3D选框;第二阶段,将每个选框的汇集点转换为规范坐标以学习更好的局部空间特征,其与在阶段一中学习的每个点的全局语义特征相结合以用于精确的3D bounding boxes改进和置信预测。

这篇文章的思路和2D图像目标检测的思路很像,都是先确定一定数量的候选框,再对候选框进行选择和位置精调,从而确定最终选框。文中同样提出了坐标转换,是在第二阶段将全局坐标转换成规范坐标,文中解释为这样能够学习更好的局部空间特征,然后与全局语义特征进行融合(这个思路倒是和我做毕设时,对PointNet系列算法进行改进的思路很像,哈哈哈~)。后面作者还做了实验,发现如何去掉这一步,检测效果会大打折扣,好像直接从80多变成了个位数。文章还在所有回归的地方都使用bin-based的方式,提高了网络的收敛速度和准确率。

简单总结

从这两篇论文中可以看出:

首先,在3D目标检测中,3D物体分类算法往往能够作为工具得到很好的运用(不说了,我去看SO-Net了~~)。而且物体分类算法最好是轻量化的,这样可以节省很多目标检测算法的计算时间,而PointNet系列算法正好有这个特点,训练迅速,准确率也不低,正合适。而前段时间在看分类算法的时候, 我发现有一个算法SO-Net的准确率更高,训练速度更快,当时因为一些原因没能跑成功,有空一定再去仔细看下,说不定又是一个很好用的工具。

其次,局部点云的坐标转换很有效果,因为转化到一个规范坐标系之后,往往能够减少计算量,使复杂的问题简单化,提高网络的检测效果。

参考文章

https://blog.****.net/wqwqqwqw1231/article/details/90788500
https://blog.****.net/ShuqiaoS/article/details/82752100