Advertisement

【3D目标检测】PointPillars: Fast Encoders for Object Detection from Point Clouds解读

阅读量:

文章目录

  • 前言
    • 摘要
    • 1. 介绍
    • 2. PointPillars Network
    • 3. 实现细节
    • 4. 实验结果
    • 5. 总结

前言

1. 为什么要做这个研究?
作者认为采用3D卷积会大大降低处理速度,浪费计算资源。
2. 实验方法是什么样的?

  • 从俯视图划分成H×W个格子,每个格子作为一个柱子,共有P根非空的柱子,每个柱子最大点数为N,每个点取D个维度,得到[D,P,N];
  • 对每个柱子采用PointNet提取特征得到[C,P,N],再对点N最大池化为[C,P],P=H×W,因此得到2D伪图像[C,H,W];
  • 使用top-down网络捕获不同尺度下的特征信息,SECOND网络做上采样和连接,融合不同尺度的特征信息;
  • 使用SSD检测头进行分类回归。

3. 得到了什么结果?
在保持较好精度的情况下,大大提升了运行速度。巧妙之处在于直接使用柱子而不是体素来处理点云数据,从而忽略了z轴方向上的差异,没有了多个体素,将3D空间转为2D伪图像处理,大大提升运行速度。文章的贡献也主要在于大大加快了运行速度。

摘要

作者考虑将点云编码为适合下游检测pipeline的格式,提出了一种新的编码器PointPillars,其利用PointNets学习在垂直柱组织(vertical columns/pillars)中的点云表示,并进一步提出了精益的下游网络。大量实验表明,仅使用了LiDAR的PointPillars在3D和BEV KITTI benchmarks中,性能优于最先进的技术,以62Hz的频率运行时,速度提升了2-4倍,该方法更快的版本可以达到105Hz。这些benchmarks表明PointPillars是点云目标检测中适合的编码方式。

1. 介绍

自动驾驶需要应用到点云目标检测,由于点云的稀疏和3D特征,因此并不适用标准的图像卷积方法。现有方法包括:(1)3D卷积;(2)投影到前瞰平面;(3)在鸟瞰图操作。BEV优点包括没有尺度模糊和几乎没有遮挡。然而鸟瞰图比较稀疏,直接使用CNN效率非常低下。体素方法应运而生,VoxelNet是该领域最早真正进行端到端学习的方法之一,对每个体素应用一个PointNet,再通过3D卷积中间层对纵轴进行合并,在采用2D卷积检测体系结构,精度高但是速度慢(4.4Hz)。
作者提出PointPillars,仅使用2D卷积实现端到端学习的3D目标检测方法。PointPillars使用了一种新的编码器,可以学习点云柱(垂直列)的特征,以预测目标的3D定向框。这种方法的优点包括速度快、精度高。
1.1 基于CNN的目标检测
目标检测主要分为one-stage和two-stage方法,本文中采用one-stage方法。
1.2 基于点云的3D目标检测

  • 采用3D卷积网络,速度太慢
  • 将3D点云投影到地平面或图像平面,提升速度。
  • 将点云划分成体素,每个垂直列中的体素集被编码为固定长度的特征编码,形成一个伪图像,然后通过标准的图像检测框架进行处理。

1.3 贡献

  • 提出了PointPillars,一种新的点云编码器和网络,使得3D检测网络的端到端训练能够实现。
  • 展示了如何将柱体上所有的计算构成稠密的2D卷积,比其他方法快2-4倍。

2. PointPillars Network

PointPillars包括3个主要阶段:(1)将点云转换为稀疏伪图像的特征编码器网络;(2)2D卷积主干网络,将伪图像处理为高级表示;(3)检测并会回归3D box的检测头。
在这里插入图片描述
2.1 点云转伪图像

  • 首先在俯视图上划分成(H×W)个网格,每个网格沿着z轴对应一根柱子;
  • 柱子中每个点都取9个维度(x,y,z,r,x_c,y_c,z_c,x_p,y_p),其中x,y,z,r表示点的真实坐标和反射率,x_c,y_c,z_c表示点相对柱子中心的偏差,x_p,y_p表示点相对网格中心的偏差。
  • 每个柱子中对点随机采样N个,将所有数据组织为3D张量,得到(D,P,N),D是点的9维特征向量,P是所有非空的柱子,N为每个柱子中的点数量,其中P,N数量不足时用0填充。
  • 每个柱体中的点作为一个集合,通过简化PointNet(线性层、BN、ReLU)学习特征,将(D,P,N)变为(C,P,N),然后对N进行MaxPooling得到(C,P)
  • 由于P=H×W,所以得到一个伪图像形式(C,H,W)。

2.2 骨干网
骨干网有两个子网络:top-down网络捕获不同尺度下的特征信息,主要由卷积层、BN、ReLU层组成;second网络做上采样和连接,融合不同尺度的特征信息。top-down部分可以用一系列的block(S,L,F)来表征,S代表相对伪图像的stride,L代表一个块有L个3×3的2D卷积层,F代表输出的channel数量。
2.3 检测头
使用SSD目标检测头进行bbox回归,高度z单独回归。

3. 实现细节

3.1 网络
与预训练网络不同,所有的权值都是统一分布随机初始化的。编码器网络的输出特征C=64。汽车和行人/单车的骨干网是相同的,除了第一个block的stride(汽车S=2,行人/单车S=1)。两个网络都由3个block组成:Block1(S, 4, C)、Block2(2S, 6, 2C)、Block3(4S, 6, 4C)。每个块的上采样步骤为:Up1(S,S,2C)、Up2(2S,S,2C)、Up3(4S,S,2C),然后将Up1-3的特征串联起来,为检测头创建6C特征。
3.2 Loss
gt表示真实标签,a表示anchor预测,(x,y,z,w,l,h,\theta)分别表示真实框的中心点坐标、长宽高以及航向角。
在这里插入图片描述在这里插入图片描述
回归损失:
在这里插入图片描述
分类损失,采用focal loss通过对不同样本的loss赋予不同的权重,该权重是一个与当前样本预测概率相关的值,系数为(1-p)的变种,从而达到p越小,loss权重越大的目的,即放大hard example的loss,从而使模型更好地适应难以分类的样本。
在这里插入图片描述
全部损失:
在这里插入图片描述
其中,L_{dir}表示航向角Loss,将航向角进行softmax分类准确度定义。

4. 实验结果

作者在实验中使用xy分辨率为0.16m,最大柱子数量为12000,每个柱子最大点数为100。每个类锚都由宽长高和中心来描述,并在0度和90度两个方向上应用。高于正例匹配阈值的锚属于正例,低于负例匹配阈值的属于负例,其他的忽略掉。之后采用重叠阈值为0.5的NMS消除多余锚。
Car x,y,z的范围分别为[(0, 70.4), (-40, 40), (-3, 1)],汽车锚的宽长高为(1.6, 3.9, 1.5),z中心为-1m,匹配正例阈值为0.6,负例阈值为0.45。
Pedestrian & Cyclist x,y,z的范围分别为[([(0, 48), (-20, 20), (-2.5, 0.5)] ,行人锚的宽长高为(0.6, 0.8, 1.73) ,自行车锚为(0.6, 1.76, 1.73), z中心都在-0.6m处。匹配正例阈值为0.5,负例阈值为0.35。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

5. 总结

PointPillars可以在点云上进行端到端训练,巧妙地避开了3D卷积,转为对2D伪图像进行卷积,并能够保持较快的处理速度和不错的精度。

全部评论 (0)

还没有任何评论哟~