PointPillar:利用伪图像高效实现3D目标检测
来源 | CV研习社
文章导读
计算机视觉任务中,2D卷积神经网络得益于极其出色的性能不断刷新着各大视觉任务的榜单,可谓是YYDS。随着人工智能算法的不断推进,更多的研究者将目光聚焦到了3D任务,那么在3D视觉任务中,2D卷积神经网络的神话能否延续呢?答案是肯定的!今天小编将分享一篇3D点云检测论文—Pointpillars,看看作者如何巧妙的只使用2D卷积,却实现了高效的3D目标检测。
01 3D点云检测的现状如何
最近几年点云的三维目标检测一直很火,从早期的PointNet、PointNet++,到体素网格的VoxelNet,后来大家觉得三维卷积过于耗时,又推出了Complex-yolo等模型把点云投影到二维平面,用图像的方法做目标检测,从而加速网络推理。
所以在点云上实现3D目标检测通常就是这三种做法:3D卷积、投影到前视图或者鸟瞰图(Bev)。
3D卷积的缺点是计算量较大,导致网络的推理速度较慢。投影的方式受到点云的稀疏性的限制,使得卷积无法较好的提取特征,效率低下。而后来研究热点转向了采用鸟瞰图(Bev)的方式,但存在的明显的缺点就是需要手动提取特征,不利于推广到其他的雷达上使用。
拨开那些花里胡哨的网络,有什么更靠谱的模型能够权衡速度和精度做三维目标检测呢?
02横空杀出的PointPillars
这是一篇前两年的点云目标检测网络,为什么重温它是因为小编在学习百度Apollo 6.0时发现它被集成进去作为激光雷达的检测模型了。在这里给大家解析一下该网络模型,看看有啥特点!
Pointpillars的创新点在于:提出了一种新的编码方式,利用柱状物的方式生成伪图像。
Pointpillars由三大部分组成:
-
利用pillars的方式将点云转化为稀疏伪图像; -
使用2D网络进行特征的学习; -
使用SSD检测头进行Bbox的回归。
-
首先需要看看它是怎么做数据处理的? -
然后了解它的特征提取模块是怎么搭建的? -
接下来了解它的检测头选用的是什么? -
模型搭建完毕后需要分析损失函数如何权衡? -
最后当然是看看实验的仿真效果如何?
-
通常从激光雷达中获取的点云表现形式一般是x,y,z和反射强度i。
-
将点云离散到x-y平面的均匀间隔的网格中,从而创建一组柱状集P ,具有| P | = B,z轴不需要参数进行控制。
-
将每个支柱中的点增加xc,yc,zc,xp和yp(其中c下标表示到支柱中所有点的算术平均值的距离,p下标表示从支柱x,y中心的偏移量)。激光雷达中的每个点就具有了九维的特征。
-
对每个样本的非空支柱数(P)和每个支柱中的点数(N)施加限制,来创建大小为(D,P,N)的张量张量。如柱状体中的数据太多,则进行随机采样,如数据太少,则用0进行填充。
-
简化版本的PointNet对张量化的点云数据进行处理和特征提取(即对每个点都运用线性层+BN层+ReLU层),来生成一个(C,P,N)的张量,再对于通道上使用最大池化操作,输出一个(C,P)的张量。
-
编码后特征散布回原始的支柱位置,创建大小为(C,H,W)的伪图像。
-
提出了一种新的点云编码器,不依靠固定编码器进行学习特征,可以利用点云的所有信息。
-
在柱状体而非体素(voxel)上进行操作,无需手动调整垂直方向的分箱。
-
网络中只使用2D卷积,不使用3D卷积,计算量小运行高效。
-
不适用手工特征,而是让网络自动的学习特征,因此无需手动的调整点云的配置,即可推广到其他的激光雷达中使用。
该网络侧重于三维数据形式的转换编码,所以在后续几个环节仍然有不少优化的空间,比如:
-
特征融合部分采用的FPN是否可以换成PAN -
检测头采用的SSD是否可以换成更新的检测器 -
回归损失函数是否可以将角度和BBox紧耦合
通过阅读开源工程,发现它提供了一个效果展现的可视化工具,和小编以前做的联合标注工具很相似,如下图所示,针对同步后的激光雷达和摄像头数据,在可视化三维点云空间的同时,将感知的结果投影到图像的透视投影视角上以及点云的鸟瞰图视角中。
最主要的是这个工具可以用于其他的检测模型,只要在右侧的配置栏提供输入输出信息即可,强烈推荐!