PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!

1、本文速览

在自动驾驶的3d目标检测中,速度与精度一直是工业界部署追求的,但两者难以兼得,本文提出PointPillars模型正基于此,取得了速度与精度上的双重提高。即使仅仅使用了lidar数据,也在kitti上取得了3d和BEV视角上的SOTA pipeline。

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第1张图片

论文:https://arxiv.org/pdf/1812.05784.pdf

代码:https://github.com/nutonomy/second.pytorch


2、背景

传统3D目标检测几个模型的比较,以PointNet,VoxelNet,SECOND为例:

• PointNet是最早将CNN卷积应用在点云检测领域,由于网络的最大迟化影响,导致点云缺失局部特征;

• VoxelNet引入端到端的特征学习,VoxelNet也基于PointNet进行设计,导致局部特征缺失。同时VoxelNet运用了 3D 卷积,计算复杂度较高,速度只有4.4 Hz;

• SECOND 将速度提升到了 20Hz,但是仍然保留了3D卷积。

PointPillar基本思想:将三维点云分为一些柱体pillars,利用PointNet提取柱体pilars特征,将特征映射为2D伪图像,对2D图像使用SSD提取目标检测框和类别


3、PointPillars框架

PointPillars包含三个模块,Pillar Feature Net、Backbone(2D CNN)、Detection Head(SSD)

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第2张图片

 功能简述如下:
(1)Pillar Feature Net:将点云转化为伪图像的特征编码网络,即俯视图划分H × W个网格,将网格沿Z轴提升为柱体pillar,并用pointNet提取特征转伪图像;
(2)Backbone(2D CNN):基于为图像的2D骨干特征提取网络,提取不同尺度的图像特征;
(3)Detection Head(SSD):利用SSD模型检测和回归3D框检测头。

3.1  Pillar Feature Net

(1)画网格。在俯视图xy平面上,划分H × W的均匀网格,将H × W个均匀网格沿Z轴拉伸形成pillar,xy网格的分辨率为0.16m;

(2)扩维度。原始的点云数据point有(x,y,z,r)4个维度,r代表反射率。将数据维度扩展为9维,扩展维度(x,y,z,r,x_c,y_c,z_c,x_p,y_p),其中x_c,y_c,z_c是点相对于pillar中所有点的质心偏差,x_p,y_p是对点相对于pillar中所有点的物理中心偏差;

(3)补点。每个pillar中点多于N的进行采样,少于N的进行填充0。形成(D,P,N)维度的张量,其中D=9(扩展后的数据维度), N为每个pillar的采样点数N=100,P为pillar总数目P=12000,H*W;

(4)提特征。使用PointNet提取pillar特征,PointNet由一个BatchNorm层、ReLU层、全连接层组成,维度变为(C, P, N) 张量;

(5)池化。在N这个维度上做max operation,得到(C,P)的tensor,变形得到(C,H,W)张量。(C,H,W)张量正好类似图像的维度。

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第3张图片

3.2  Backbone2D CNN

(1)特征提取层。类似特征金字塔网络(FPN),至上而下逐级提取伪图像的特征,分为1/2、1/4、1/8三个尺度的特征图;

(2)特征加强层。类似于Unet网络,至下而上逐级解码不同尺度的特征图。

(3)特征图拼接。将来自不同三个尺度的特征图在通道尺度上进行拼接。此时生成维度为(H/2,W/2,6C)的张量。

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第4张图片

3.3 Detection HeadSSD

Anchor框匹配groundtruth框采用2D IOU匹配,直接从BEV视角进行匹配,不考虑高度信息。每个类别的检测范围、anchor框大小、正负样本匹配阈值分别为:

(1)车:x、y、z的检测范围为[(0, 70.4), (-40, 40), (-3, 1)]m,anchor先验框的长宽高设定为(1.6, 3.9, 1.5)m,阈值设置为大于等于0.65为正样本,小于0.45为负样本,中间不计算损失;

(2)行人与自行车:x、y、z的检测范围为[(0, 48), (-20, 20), (-2.5, 0.5)],行人anchor先验框的长宽高设定为(0.6, 0.8, 1.73)m,自行车的anchor先验框的长宽高设定为(0.6,1.76, 1.73)m,两类别的阈值设置均大于等于0.5为正样本,小于0.35为负样本,中间不计算损失。


4、数据增强和损失函数

4.1 数据增强

(1)类似SECOND,为所有类别和点云的ground truth 3D boxes创建了查询表;

(2)对每个样本中的车、行人、自行车分别选取15、0、8的ground truth,将这些放入当前的点云中;

(3)对所有的ground truth 3D boxes进行了增强,每个框进行旋转和平移;

(4)对所有的点云和框进行了全局增强,具体方法是:沿x轴应用随机镜像翻转,然后全局旋转、缩放和平移来加入模拟位置噪音。

4.2 损失函数

采用同SECOND相同的损失函数。框的维度定义为(x, y, z, w, l, h,θ)。

(1)定位回归损失

 PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第5张图片

Xgt与xa分别表示groundtruth框与predicte框的长度,da为对角线的长度:

 

最终定位损失采用SmoothL1,考虑到3类别物体的框大小不会发生过多变化。

(2)分类损失

分类损失采用FcolLoss损失,FcolLoss可以有效避免样本数量不均衡产生的影响,相当于给数量少的样本更大的权重。

(3)总损失

在角度预测时候不可以区分两个完全相反的box,所以PiontPillars的检测头中还添加了对一个anchor的方向预测。这里使用了一个基于softmax的方向分类box的两个朝向信息。最终总损失如下:

其中,α= 0.25,γ=2,Npos为正样本框的数量,βloc = 2,βcls = 1, βdir = 0.2。 


 5、实验

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第6张图片

模型速度和精度对比

PP代表pointpillars模型,M代表MV3D , A代表AVOD , C代表 ContFuse, V代表 VoxelNet, F代表Frustum PointNet, S代表SECOND, P+ 代表PIXOR++。从图中看出pointpillars确实能兼顾速度和精度。

pointpillars在BEV下的检测结果。

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第7张图片

pointpillars在3D下的检测结果

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第8张图片

pointpillars在BEV(上图)和框投影到图像上的可视化效果。

PointPillars:工业界大量部署落地的点云目标检测算法,精度与速度上实现SOTA!_第9张图片


6、结论

PointPillars是一种可以在激光雷达点云上进行端到端训练的网络和编码器。在 KITTI中,PointPillars以较快的速度展示了较高的检测性能(BEV 和3D),实验结果表明,PointPillars为3D对象检测提供迄今为止最好的激光雷达pipeline。

你可能感兴趣的:(3D目标检测,目标检测,目标检测,人工智能,计算机视觉,自动驾驶)