[论文阅读]PointPillars——点云目标检测的快速编码器

PointPillars

点云目标检测的快速编码器
论文网址:PointPillars

摘要

基于激光雷达点云的物体检测是自动驾驶和机器人应用的一个重要方面。本文考虑将点云编码成适合下游检测任务的格式问题。最近的文献提出了两类编码器:固定的编码器(往往速度更快,但牺牲了精度),从数据中学习的编码器(更准确但速度较慢)。本文中,提出了PointPillars,这是一种新颖的编码器,利用PointNets学习点云中组成垂直列(pillars)的表示。虽然编码后的特征可以与任何标准的2D卷积检测结构一起使用,但本文进一步提出了一个精简的下游网络。各种基准结果表明,PointPillars是点云目标检测的一个适当的编码方法。

引言

在城市环境中部署自动驾驶车辆有着艰巨的技术挑战。自动驾驶车辆需要实时检测和跟踪移动物体,如车辆、行人和自行车。为实现这一目的,自动驾驶车辆依赖几种传感器,其中激光雷达可能是最重要的一种。激光雷达使用激光扫描仪测量与环境的距离,从而生成稀疏的点云表示。传统上,激光雷达机器人工作时通过背景减除,然后空间temporal聚类和分类,来解释这样的点云以获得物体检测。
随着计算机视觉领域深度学习方法在物体检测中的重大进展,大量文献已经研究了这些技术在激光雷达点云物体检测中的应用程度。尽管两种模态有许多相似之处,但也存在两个关键差异:(1)点云是稀疏表示,而图像是密集的;(2)点云是3D的,而图像是2D的。因此,从点云检测物体不会简单地借鉴标准的图像卷积方法。
一些早期工作侧重于使用3D卷积或将点云投影到图像平面。最近的方法倾向于从鸟瞰视角观察激光雷达点云。这种俯视角度提供了几个优势,如不存在尺度模糊性和几乎没有遮挡。然而,从鸟瞰视角(即俯视角度)观察激光雷达点云,点云在平面上的分布会非常稀疏,这使得直接应用卷积神经网络变得不实际和低效。一种常见的解决此问题的方法是将地面划分为规则网格,例如 10 x 10 厘米,然后对每个网格单元中的点执行手工定制的特征编码方法。 但是,这样的方法可能并不优化,因为硬编码的特征提取方法可能无法在不需要大量工程努力的情况下推广到新的配置。为解决这些问题,VoxelNet 借鉴了PointNet的设计,是最早将端到端学习引入这个领域的方法之一。但是VoxelNet推理时间长达225ms(4.4 Hz),太慢而无法实时部署。最近,SECOND改进了VoxelNet的推理速度,但3D卷积仍然是其瓶颈。
本文提出PointPillars:一种仅使用2D卷积层的端到端3D物体检测方法。PointPillars使用一个新颖的编码器,在点云柱上学习特征以预测物体的3D定向bounding box。这种方法有几个优势。首先,通过学习特征而不是依赖固定编码器,PointPillars可以利用点云表示的全部信息。其次,通过操作pillar而不是voxel,不需要手动调节垂直方向的分割。最后,pillar运算极其高效,因为所有关键操作都可以表述为GPU中计算极快的2D卷积。
在KITTI数据集的车辆,行人和自行车检测任务上评估了PointPillars网络。结果表明,仅使用激光雷达,PointPillars在鸟瞰图和3D两个指标上都优于当前最先进的方法,包括那些使用激光雷达和图像的多模态方法,从而建立了新的性能标准。

相关工作

首先回顾了卷积神经网络在目标检测方面的应用,然后重点讨论了激光雷达点云目标检测的具体方法。

基于CNNs的目标检测

Rich feature hierarchies for accurate object detection and semantic segmentation已经确定卷积神经网络是图像目标检测的最新技术。随后的一系列论文:Mask RCNN,Faster RCNN主张对这个问题采用两阶段的方法,在第一个阶段,一个区域提议网络(RPN)提取候选框,这些提议框经过裁剪和调整大小的版本然后由第二阶段网络分类。两阶段方法主导了例如COCO数据集。最初提出的单阶段体系结构:SSD,基于一组密集的锚框回归,且分类和回归一起预测,是一种快速而简单的体系结构。focal loss的应用,使得单阶段方法在精度和运行时间方面都优于两阶段方法。本文,使用的是单阶段方法。

基于激光雷达点云的目标检测

点云的目标检测本质上是一个三维问题。因此,部署三维卷积网络进行检测是很自然的。例如:Vote3deep: Fast object detection in 3d point clouds using efficient convolutional neural networks和3d fully convolutional network for vehicle detection in point cloud. 。 但这些方法速度很慢。最近的方法,通过将3D点云投影到地平面,例如: Multi-view 3d object detection network for autonomous driving和Joint 3d proposal generation and object detection from view aggregation 。还有将3D点云投影到图像平面,例如:Vehicle detection from 3d lidar using fully convolutional network 等来改善运行时间。在最常见的范例中:点云被组织在体素中,每个垂直列中的体素集被编码成一个固定长度的、手工制作的、特征编码,以形成一个可以由标准图像检测架构处理的伪图像。这里一些标志性的算法包括:MV3D、AVOD、Pixor和Complex Yolo,它们都在相同的固定编码范式上使用变体作为其体系结构的第一步。前两种方法还将激光雷达特征与图像特征融合,以创建多模态探测器。 MV3D和AVOD中使用的融合步骤迫使它们使用两级检测管道,而Pixor和Complex YOLO使用单级管道。
在上面的开创性工作中,Pointnet: Deep learning on point sets for 3d classification and segmentation.和Pointnet++: Deep hierarchical feature learning on point sets in a metric space提出了一个简单的体系结构,用于从无序点集中学习,它提供了一个完整的端到端的学习路径。VoxelNet是最早在激光雷达点云中部署PointNet进行目标检测的方法之一。在它们的方法中,PointNet应用于体素,然后由一组三维卷积层处理,随后是一个二维主干和一个检测头。这使得端到端的学习成为可能,但是VoxelNet很慢。另一种最近的方法,Chestum Pointnet,使用Pointnets来分割和分类从将图像上的检测投影到3D中产生的Chestum中的点云。 与其他融合方法相比,Chestum Pointnet获得了较高的基准性能,但它的多阶段设计使得端到端学习变得不切实际。最近,Second对Voxelnet进行了一系列改进,使其性能更强,速度大大提高, 然而,他们无法删除昂贵的3D卷积层。

贡献

  • 本文提出了一种新颖的点云编码器和网络PointPillars,它在点云上运行,以实现端到端训练一个3D对象检测网络。
  • 本文展示了如何将pillars上的所有计算都设置为密集的2D卷积,从而实现62 Hz的推理;比其他方法快2-4倍。

PointPillars Network

PointPillars
PointPillars接收点云作为输入,并估计汽车,行人,骑自行车的人的3D框。它由三个主要阶段组成:

  • 将点云转换为稀疏伪图像的特征编码器网络
  • 二维卷积主干网络将伪图像处理为高级特征表示
  • 检测并回归3D框的检测头

点云到伪图像

为了应用二维卷积结构,本文首先将点云转换为伪图像。
我们用l表示点云中的一个点,具有坐标x,y,z和反射率r。作为第一步,点云被离散化到x-y平面上的一个均匀间隔的栅格中,创建一组pillar P,其中|P|=B。注意无需手动设置控制z方向离散化的超参数。每个pillar中的点然后被增强为xc,yc,zc,xp和yp,其中c下标表示距离该pillar所有点的算术平均距离,p下标表示从pillar x,y中心的偏移。增强后的激光点l现在是D=9维的。
这里xc,yc,zc,xp和yp代表对每个pillar中的点进行的不同映射,具体表示如下:
xc: 点到所在pillar的所有点的x坐标算术平均值的偏移量
yc: 点到所在pillar的所有点的y坐标算术平均值的偏移量
zc: 点到所在pillar的所有点的z坐标算术平均值的偏移量
xp: 点到所在pillar的x坐标中心的偏移量
yp: 点到所在pillar的y坐标中心的偏移量
也就是说,对每个pillar中的点,分别计算:
该点相对于该pillar所有点的x、y、z坐标均值的偏移量,记为xc、yc、zc
该点相对于该pillar的x、y坐标中心的偏移量,记为xp、yp

点云中的pillar大部分会是空的,由于点云的稀疏性,非空的pillar通常也只包含少量点。例如,在一个典型的0.16^2 m^2分辨率下,来自HDL-64E Velodyne 激光雷达的数据集大约有6k-9k个非空pillar,其余约97%的pillar是空的。这种稀疏性被利用了,通过对每个样本的非空pillar数量§和每个pillar的点数量(N)施加限制,创建一个密集的张量(D,P,N)。如果一个样本或pillar的数据太多以致于不适合这个张量,则随机采样。反之,如果一个样本或pillar的数据太少,不足以填充这个张量,则填充零。
接下来,我们使用一个简化的PointNet,对每个点应用线性层,后面是BatchNorm和ReLU来生成大小为(C,P,N)的张量。然后对通道使用max操作生成大小为(C,P)的输出张量。注意线性层可以表述为对张量的1x1卷积,因此计算非常高效。
一旦编码,特征被散射回原pillar位置以创建大小为(C,H,W)的伪图像,其中H和W表示画布的高度和宽度。

BackBone

本文使用与VoxelNet类似的backbone结构。backbone由两个子网络组成:一个top-down网络,逐步产生空间分辨率越来越小的特征;一个上采样并拼接top-down特征的网络。
top-down backbone可以表示为一系列模块Block(S, L, F)。每个模块在原始输入伪图像相对stride为S(measured relative to the original input pseudo-image)。一个模块包含L个3x3 2D卷积层,每个卷积层有F个输出通道,每个卷积层后接BatchNorm和ReLU。在模块内的第一个卷积层stride为S/Sin,以确保在接收到stride为Sin的输入后,该模块的stride为S。一个模块内除第一个卷积层外,其余卷积层的stride均为1。
来自每个top-down模块的最终特征通过上采样和拼接进行组合:首先,特征Up(Sin, Sout, F)通过转置2D卷积从初始stride Sin上采样到最终stride Sout(两者相对于原始伪图像),产生F个最终特征。接下来,对上采样特征进行BatchNorm和ReLU。最终输出特征是来自不同stride的所有特征的拼接。

Detection Head

在本文中,使用Single Shot Detector (SSD)的设置来进行3D物体检测。类似SSD,我们使用2D互操作联合(IoU)来匹配先验框和ground truth。边界框高度和高程没有用于匹配;相反,给定2D匹配,高度和高程成为额外的回归目标。

实施细节

网络

本文没有预训练网络,所有权重都是使用均匀分布随机初始化的。
编码器网络输出C=64维特征。
车辆和行人/自行车骨干网络相同,除了第一个block的步幅不同(车辆为2,行人/自行车为1)。两者的网络都由三个block组成,Block1(S, 4, C), Block2(2S, 6, 2C), 和 Block3(4S, 6, 4C)。每个block通过以下上采样步骤上采样:Up1(S, S, 2C), Up2(2S, S, 2C) 和 Up3(4S, S, 2C)。然后Up1, Up2和Up3的特征concat在一起,为检测头创建6C维特征。

loss

本文使用了SECOND论文中提出的同样的loss函数。
Ground truth框和先验框由(x, y, z, w, l, h, θ)定义。Ground truth和先验框之间的回归残差定义为:
Δx = xgt - xa / da, Δy = ygt - ya / da, Δz = zgt - za
Δw = log(wgt/wa), Δl = log(lgt/la), Δh = log(hgt/ha)
Δθ = sin(θgt - θa)

其中xgt和xa分别是ground truth和先验框,da = √(wa)2 + (la)2。
定位损失函数为:Lloc = Σb∈(x,y,z,w,l,h,θ) SmoothL1(Δb)
由于角度的回归损失函数无法区分翻转的框,本文使用了方向的softmax分类损失Ldir来使网络学习角度预测。
对于分类损失,本文使用了focal loss:Lcls = -α(1-pa)γlog(pa)
其中pa是先验框的类别概率。本文使用原论文的超参数α=0.25, γ=2。
所以总的损失函数为:L = 1/Npos (βlocLloc + βclsLcls + βdirLdir)
其中Npos是正样本的数量,βloc=2, βcls=1, βdir=0.2。

实验设置

数据集

所有实验都使用公开的KITTI目标检测基准数据集,其包含点云数据、图像数据以及对应的标注Ground Truth。本文仅使用点云进行训练。
KITTI基准要求检测车辆、行人和自行车。由于地面真值对象仅在图像中可见时才被标注,本文遵循标准惯例只使用投影在图像中的点云。遵循KITTI文献上的标准做法,本文为车辆训练一个网络,为行人和自行车共同训练一个网络。

设置

本文使用0.16米的xy分辨率,最大pillar数12000,每个pillar内最大点数100。
本文使用与VoxelNet相同的先验框和匹配策略。每个类别的先验框由宽度、长度、高度和z中心描述,应用于0度和90度两个方向。先验框使用2D IoU与Ground Truth匹配,以下为匹配规则。如果一个先验框与某个Ground Truth的匹配IoU最大或者超过正样本阈值,则为正样本;如果低于负样本阈值则为负样本。其余anchors不参与损失函数。
推理时使用IoU阈值0.5的非极大抑制(NMS)。这与旋转NMS相比提供了类似的性能,但速度更快。
对于车辆,x、y、z范围分别为[0, 70.4]、[-40, 40]、[-3, 1]米。车辆先验框尺寸为(1.6, 3.9, 1.5)米,z中心为-1米。匹配时正负样本阈值分别为0.6和0.45。
对于行人和自行车,x、y、z范围分别为[0, 48]、[-20, 20]、[-2.5, 0.5]米。行人先验框尺寸为(0.6, 0.8, 1.73)米,z中心为-0.6米;自行车先验框尺寸为(0.6, 1.76, 1.73)米,z中心为-0.6米。匹配时正负样本阈值分别为0.5和0.35。

Data Augmentation

数据增强对于在KITTI基准上获得良好性能至关重要。
首先,本文遵循SECOND的方法,为所有类别的ground truth 3D框及其包含的点云创建一个查找表。然后对每个样本,我本文从查找表中随机选择15个、0个、8个分别对应车辆、行人和自行车的ground truth样本,并放入当前点云。本文发现这些设置优于文献提议的设置。
接下来,所有ground truth框单独增强。每个框在[-π/20, π/20]范围内随机旋转,并在x、y、z方向上从N(0, 0.25)分布中独立采样平移,以进一步丰富训练集。
最后,本文执行两组全局增强,联合应用于点云和所有框。第一,本文按照文献进行x轴方向的随机镜像翻转。然后是一个全局旋转和缩放。最后,本文添加一个来自N(0, 0.2)的全局平移以模拟定位噪声。

结论

结果表明,PointPillums是迄今为止最适合于激光雷达三维目标检测的体系结构。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一朵小红花HH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值