文献阅读记录(3)— PointPillars

目录

正文

Abstract

1 Introduction             

1.1. Related Work

1.2. Contributions2. PointPillars Network

2.1. Pointcloud to Pseudo-Image  点云转换成伪图像

2.2. Backbone 主干

2.3. Detection Head  探测头

3. Implementation Details

3.1. Network

3.2. Loss

4. Experimental setup

4.1. Dataset

4.2. Settings

4.3. Data Augmentation数据增强

5. Results

6. Realtime Inference

7. Ablation Studies

7.1. Spatial Resolution  空间分辨率

7.2. Per Box Data Augmentation 增强

7.3. Point Decorations

7.4. Encoding

8. Conclusion


正文

Abstract

最近的文献表明有两种类型的编码器;

  1. 固定编码器往往速度很快,但牺牲了准确性
  2. 而从数据中学习的编码器更准确,但速度更慢。

在这项工作中,我们提出了一种新的编码器PointPillars它利用PointNets来学习以垂直列(柱子)组织的点云的表示。虽然编码的特征可以用于任何标准的二维卷积检测架构,但我们进一步提出了一个精益下游网络。

1 Introduction             

激光雷达使用激光扫描仪来测量到环境的距离,从而生成稀疏的点云表示。

早期的工作集中在使用3D卷积[3]或将点云投影到图像中[14]。

最近的方法倾向于从鸟瞰(abird’seyeview(BEV))的角度观察激光雷达点云[2,11,33,32]。

这种俯视视角优点

  1. 首先,BEV保留对象的缩放
  2. 其次,BEV中的卷积保留了局部范围信息

缺点:由于鸟瞰视图的稀疏性,直接应用卷积神经网络是不切实际且效率低下的。

解决这个问题的一个常见方法是将地平面划分成一个规则的网格,例如10×10厘米,然后对每个网格单元中的点执行手工制作的特征编码方法[2,11,26,32]。 

硬编码的特征提取方法不能推广到新的配置,于是在Qi等人开发的PointNet设计的基础上。[22],VoxelNet[33]是第一个真正进行端到端学习的方法之一。Voxelnet将空间划分为体素,对每个体素应用点网,然后使用三维卷积中间层来巩固垂直轴,然后使用二维卷积检测结构。

在这项工作中,我们提出了PointPillars:一种用于三维物体检测的方法,该方法只需要2D卷积层就可以实现端到端的学习。PointPillars使用了一种新的编码器,它学习点云柱子(垂直柱子)上的特征,以预测对象的3D定向框。这种方法有几个优点。

首先,通过学习特征而不是依赖于固定的编码器,PointPillars可以利用点云所代表的全部信息。

此外,通过在支柱上而不是在体素上操作,不需要手动调整垂直方向的装箱。

最后,支柱是快速的,因为所有的关键操作可以被表述为二维卷积,这是非常有效的计算在GPU上。学习特性的另一个好处是,PointPillars不需要手动调整就可以使用不同的点云配置,如多个激光雷达扫描,甚至雷达点云。

1.1. Related Work

1.1.1使用CNNS进行目标检测

一系列论文[24,7]主张用两个阶段的方法来解决这个问题。

在第一阶段,区域提案网络(RPN)建议候选提案,这些候选建议在被第二阶段网络分类之前被裁剪和调整大小。

在单阶段体系结构中,一组密集的锚定框被回归并在一步内分类成一组预测,提供了一个快速而简单的体系结构。   在这项工作中,我们使用单阶段方法

1.1.2激光雷达点云中的目标检测

PointNet,用于从无序点集学习,它提供了一个完整的端到端学习的路径。

VoxelNet[33]是最早在激光雷达点云中部署点网进

PointPillars Network行目标检测的方法之一。在他们的方法中,将PointNets应用于体素,然后由一组3D卷积层,一个2D骨架和一个检测头对其进行处理。但速度慢。

Frustum PointNet 使用PointNets对视锥中的点云进行分割和分类,该视锥是将对图像的检测投影到3D中生成的。与其他融合方法相比,Frustum PointNet拥有较高的基准性能,但其多阶段设计使端到端学习变得不切实际。

1.2. Contributions
2. PointPillars Network

网络概述:网络的主要组成部分是支柱功能网络、主干和SSD检测头(详见第2节)。 原始点云被转换成一个堆叠的柱张量和柱指数张量。 编码器使用堆叠的柱子来学习一组特征,这些特征可以被分散到二维伪图像中,用于卷积神经网络。 检测头使用主干的特征来预测物体的三维包围盒。

PointPillars接受点云作为输入,并估计面向汽车、行人和骑自行车者的3D框。 它由三个主要阶段组成(图2):(1)将点云转换为稀疏伪图像的特征编码器网络; (2)2D卷积主干将伪图像处理为高级表示;(3)检测并回归3D框的检测头。

2.1. Pointcloud to Pseudo-Image  点云转换成伪图像

我们用L表示点云中的一个点,坐标为x,y,z。

首先,点云在x-y平面上被离散成一个均匀间隔的网格,生成一组柱子P,|P|=B。(注意,柱子是一个在Z方向上具有无限空间范围的体素,因此不需要一个超参数来控制Z维中的合并。)

然后,每个支柱中的点用r, xc, yc, zc, xp, yp装饰(增强),其中r是反射率,c下标表示到支柱中所有点的算术平均值的距离,p下标表示从支柱X,Y中心的偏移(有关设计细节,请参见第7.3节)。

增强的激光雷达点L现在是D=9维。

由于点云的稀疏性,这组柱子大部分是空的,而非空的柱子通常只有很少的点。例如,在0.162m2空间,来自HDL-64E速度差激光雷达的点云有6K-9K的非空柱,其范围通常在KITTI中用于大约97%的稀疏度。利用这种稀疏性,对每个样本的非空柱数(P)和每个柱的点数(N)都施加限制,以产生大小(D,P,N)的稠密张量。如果样本或柱子包含太多的数据,无法在张量中容纳,则随机采样数据。相反,如果样本或柱的数据太少,无法填充张量,则应用零填充。

接下来,我们使用简化的PointNet,其中,对于每个点,都应用线性层,然后是Batch-Norm [10]ReLU [19],以生成一个(CPN)大小的张量。 接下来是对通道的最大操作,以创建大小为(CP)的输出张量。 请注意,可以将线性层公式化为张量上的1x1卷积,从而实现非常有效的计算。

一旦编码,这些特征就会被分散回到原始的柱子位置,以创建一个大小为(C、H、W)的伪图像,其中H和W表示画布的高度和宽度。

2.2. Backbone 主干

主干网有两个子网络:一个自顶向下的网络以越来越小的空间分辨率产生特征,第二个网络执行自顶向下特征的上采样和级联自上而下的主干网可以由一系列块Block(S,L,F)来表征。 每个块的步幅为S(相对于原始输入伪图像进行测量)。一个块具有L3x3 2D转换层,具有F个输出通道,每个通道后跟BatchNorm和ReLU。该层内部的第一个卷积具有步幅S / Sin,以确保该块在收到步幅Sin的输入Blob后在步幅S上运行。块中的所有后续卷积都步长为1

首先,使用带有F最终特征的转置2D卷积,将特征上采样,从初始步幅Sin向上(Sin,Sout,F)到最终步幅Sout(两者都再次测量到原始伪图像的WRT)。 接下来,将Batch Norm和RELU应用于上采样特征。 最终的输出特性是来自不同步幅的所有特性的串联。

2.3. Detection Head  探测头

我们使用单镜头检测器(SSD)[18]设置来执行3D物体检测。

与SSD相似,我们使用2D联合截面(IOU)[4]来匹配先验框与地面真实情况。 没有使用边界框的高度和标高进行匹配; 相反,给出一个2D匹配,高度和仰角成为额外的回归目标。

3. Implementation Details

3.1. Network

有权重均使用[8]中的均匀分布随机初始化,来代替预先训练我们的网络。

编码器网络具有C=64维度的输出特征。除了第一个block的步幅(汽车为S=2,行人/骑自行车的人为S=1)以外,汽车和行人/自行车的主干是相同的步幅。

这两个网络由三个块组成,

即Block1((S, 4, C)、Block2((2S, 6, 2C)和Block34S6,4C

每个块通过以下上采样步骤上采样:

Up1SS2C),Up22SS2C)和Up34SS2C)。


然后将UP1、UP2和UP3的特征级联在一起,为检测头创建6C特征。

3.2. Loss

我们使用与SECOND [28]中介绍的相同的损失函数。 地面真值框和锚点由(xyzwlhθ)定义。 地面真值(ground truth)和锚点(anchors )之间的本地化回归残差定义为:

由于角度定位损失不能区分翻转框,因此在离散化方向上用Softmax分类损失Ldir学习航向[30]

 其中p^a是锚的类概率。 我们使用原始的论文设置α=0.25γ=2 因此,损失总额为:

where Npos is the number of positive anchors and βloc = 2, βcls = 1, and βdir = 0.2.

为了优化损失函数,我们使用Adam优化器,其初始学习率为2 * 104,每15epoch衰减学习速率0.8倍,并训练160epoch 我们使用2个批次的验证集和4个测试提交量。

4. Experimental setup

4.1. Dataset

样本最初分为7481个训练样本和7518个测试样本。对于实验研究,我们将官方训练集分成3712个训练样本和3769个验证样本[1],而对于我们的测试提交,我们从验证集中创建了一个784个样本的最小集合,并对剩余的6733个样本进行训练。

4.2. Settings

除非在实验研究中有明显的变化,否则我们使用XY分辨率:0.16m,最大柱数(P):12000,每个柱的最大点数(N):100。

我们使用与[33]相同的锚点和匹配策略。每个类锚点由宽度、长度、高度和Z中心描述,并在两个方向上应用:0度和90度。锚与地面真理匹配使用2DIOU与以下规则。一个正匹配要么是地面真相框的最高值,要么高于正匹配阈值,而一个负匹配低于负阈值。所有其他锚在损失中被忽略。

在推断时,我们采用轴对齐非最大抑制(NMS),重叠阈值为0.5IOU。 与旋转NMS相比,这提供了类似的性能,但速度要快得多。

Car  X,Y,Z范围分别为[(0,70.4),(-40,40),(-3,1)]米。 车锚的宽度、长度和高度分别为(1.6,3.9,1.5)m,Z中心为-1 m。 匹配使用正负阈值0.6和0.45。

Pedestrian & Cyclist. xyz范围分别为[048),(-20,20),(-2.50.5]米。 行人锚点的宽度,长度和高度为(0.60.81.73)米,z中心为-0.6米,而骑自行车的锚点的宽度,长度和高度为(0.61.761.73)米,z中心为- 0.6 匹配使用正阈值和负阈值0.50.35

4.3. Data Augmentation数据增强

首先,按照SECOND [28],我们为所有类别的地面真实3D框以及这些3D框内的关联点云创建一个查找表。 然后,对于每个样本,我们分别为汽车,行人和骑自行车的人随机选择15、0、8个地面真实样本,并将其放入当前点云中。 我们发现这些设置比建议的设置执行得更好[28]。

接下来,对所有地面真值框分别进行增强。每个框都旋转(从[-π/ 20,π/ 20]均匀绘制)并平移(从N(0,0.25)分别绘制的x,y和z)以进一步丰富 训练集。

最后,我们执行了两组全局增强,它们共同应用于点云和所有框。首先,我们沿x轴应用随机镜像翻转[30],然后进行全局旋转和缩放[31,28]。 最后,我们使用从N(0,0.2)得出的x,y,z进行全局平移,以模拟定位噪声。

5. Results

6. Realtime Inference

首先,根据图像中的距离和可见度对点云进行加载和滤波(1.4ms)。然后,点组织在柱子和装饰(2.7毫秒)。然后,将点柱张量上传到GPU(2.9ms),编码(1.3ms),分散到伪图像(0.1ms),由主干和检测头处理(7.7ms)。最后,在CPU(0.1ms)上应用NMS,总运行时间为16.2ms

Encoding.

Slimmer Design.

我们发现使用较少的参数并不影响检测性能。 通过在编码器中使用单个点网,我们将PyTorch的运行时间减少了2.5ms,而不是像[33]中那样使用2个顺序点网。 第一个块维度被降低到64,以匹配编码器输出大小,这将运行时间减少了4.5ms。 最后,通过将上采样特征层的输出维数减少一半至128,我们又节省了3.9ms。

TensorRT

The Need for Speed.

PointPillars可以在精度损失有限的情况下达到105Hz。虽然可以说这样的运行时间是过多的,因为激光雷达通常工作在20赫兹,但有两个关键的事情要记住。首先,由于Kitti地面真值注释的伪影,只有10%的激光雷达投影到前像中的点被利用。然而,一个可操作的AV需要查看整个环境并处理完整的点云,这大大增加了运行时间。

蓝色圆圈表示只使用激光雷达的方法,红色方块表示使用激光雷达和视觉的方法。 柱栅尺寸分别为{0.122,0.162,0.22,0.242,0.282}m2,最大柱数分别为16000,12000,12000,8000,8000。

7. Ablation Studies

7.1. Spatial Resolution  空间分辨率

较小的柱子允许更精细的定位并导致更多的特征,而较大的柱子更快,因为较少的非空柱子(加快编码器)和较小的伪图像(加快CNN骨干)。

7.2. Per Box Data Augmentation 增强

在我们的实验中,最小限度的盒子增强效果更好。 尤其是,行人的检测性能随着更多盒子的增加而显着下降。

7.3. Point Decorations

编码器获取原始激光雷达返回值:X,Y,Z和反射率R,并添加从柱点簇中心(ΔXC,ΔYC,ΔZC)(如VoxelNet[33]中所做的那样)和从柱中心(ΔXP,ΔYP)的距离(我们的贡献)。柱子偏移量(ΔXP,ΔYP)编码每个柱子局部坐标系中的点位置。它们独立于其他点,因此以补充x和y中的2D卷积的方式标准化了点的局部上下文。我们没有包括Z柱偏移量,因为这是所有点的恒定偏移量。

7.4. Encoding

8. Conclusion

本文介绍了一种新型的基于激光雷达点云的深度网络和编码器PointPillars。 我们表明,在Kitti挑战中,PointPillars以更快的速度提供了更高的检测性能(BEV和3D MAP),从而主导了所有现有的方法。 我们的结果表明,PointPillars是迄今为止最适合于激光雷达三维目标检测的体系结构。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值