点云中的目标检测是许多机器人应用(例如自动驾驶)的重要方面。在本文中,我们考虑将点云编码为适合下游检测管道的格式的问题。最近的文献提出了两种类型的编码器;固定编码器往往速度很快,但牺牲了准确性,而从数据中学习的编码器更准确,但速度较慢。在这项工作中,我们提出了PointPillars,这是一种新颖的编码器,它利用PointNets来学习以垂直列(柱体)组织的点云的表示。虽然编码的特征可以与任何标准的2D卷积检测架构一起使用,但我们进一步提出了一个精简的下游网络。大量实验表明,PointPillars在速度和准确性方面都大大优于以前的编码器。尽管仅使用激光雷达,但我们的完整检测管道在3D和鸟瞰KITTI基准测试方面明显优于最先进的技术,即使在融合方法中也是如此。这种检测性能是在以62 Hz运行时实现的:运行时间提高了2-4倍。我们方法的更快版本与105 Hz的最新技术相匹配。这些基准表明PointPillars是点云中目标检测的合适编码。
在城市环境中部署自动驾驶汽车(AVs)是一项艰巨的技术挑战。在其他任务中,自动驾驶汽车需要实时检测和跟踪移动物体,例如车辆、行人和骑自行车的人。为了实现这一点,自动驾驶汽车依赖于几个传感器,其中激光雷达可以说是最重要的。激光雷达使用激光扫描仪测量与环境的距离,从而生成稀疏点云表示。传统上,激光雷达机器人管道通过自下而上的管道将这种点云解释为目标检测,包括背景减法,然后是时空聚类和分类[12, 9]。
图1.我们提出的PointPillars, PP方法在KITTI[5]测试集上的鸟瞰性能与速度。绘制为蓝色圆圈的仅限激光雷达的方法;激光雷达和视觉方法绘制为红色方块。还绘制了KITTI排行榜中的顶级方法:M:MV3D[2]、A:AVOD[11]、C:ContFuse[15]、V:VoxelNet[31]、F:Frustum PointNet[21]、S:SECOND[ 28],P+:PIXOR++[29]。PointPillars在速度和准确性方面都大大优于所有其他仅使用激光雷达的方法。它还优于除行人之外的所有基于融合的方法。在3D指标上也实现了类似的性能(表2)。
随着计算机视觉深度学习方法的巨大进步,大量文献研究了这项技术在多大程度上可以应用于激光雷达点云的目标检测[31、29、30、11、2、21、15、28 , 26, 25]。虽然模态之间有许多相似之处,但有两个关键区别:1)点云是稀疏表示,而图像是密集的;2)点云是3D的,而图像是2D的。因此,来自点云的目标检测并不容易适用于标准图像卷积管道。
一些早期的工作侧重于使用3D卷积[3]或将点云投影到图像中[14]。最近的方法倾向于从鸟瞰图查看激光雷达点云[2, 11, 31, 30]。这种俯视视角提供了几个优点,例如没有尺度模糊性和几乎没有遮挡。
然而,鸟瞰图往往非常稀疏,这使得直接应用卷积神经网络变得不切实际且效率低下。此问题的常见解决方法是将地平面划分为规则网格,例如10 x 10cm,然后对每个网格单元[2, 11, 26, 30]中的点执行手工制作的特征编码方法。然而,这样的方法可能不是最佳的,因为硬编码的特征提取方法在没有大量工程努力的情况下可能无法推广到新的配置。为了解决这些问题,并以Qi等人开发的PointNet设计为基础。[22]VoxelNet[31]是在该领域真正进行端到端学习的首批方法之一。VoxelNet将空间划分为体素,对每个体素应用一个PointNet,然后是一个3D卷积中间层来巩固垂直轴,然后应用一个2D卷积检测架构。虽然VoxelNet性能很强,但4.4Hz的推理时间太慢,无法实时部署。最近SECOND[28]提高了VoxelNet的推理速度,但3D卷积仍然是一个瓶颈。
在这项工作中,我们提出了PointPillars:一种用于3D目标检测的方法,它仅使用2D卷积层即可实现端到端学习。PointPillars使用一种新颖的编码器来学习点云柱(垂直列)上的特征来预测目标的3D方向框。这种方法有几个优点。首先,通过学习特征而不是依赖固定编码器,PointPillars可以利用点云表示的全部信息。此外,通过对柱体而不是体素进行操作,无需手动调整垂直方向的分箱。最后,柱体是高效的,因为所有关键操作都可以表示为2D卷积,这在GPU上计算非常有效。学习功能的另一个好处是PointPillars无需手动调整即可使用不同的点云配置。例如,它可以轻松合并多个激光雷达扫描,甚至雷达点云。
我们针对公共KITTI检测挑战评估了我们的PointPillars网络,这些挑战需要在鸟瞰图(BEV)或3D[5]中检测汽车、行人和骑自行车的人。虽然我们的PointPillars网络仅使用激光雷达点云进行训练,但它主导了当前最先进的技术,包括使用激光雷达和图像的方法,从而为BEV和3D检测的性能建立了新标准(表1和表2)。同时,PointPillars以62 Hz的频率运行,比以前的技术快几个数量级。 PointPillars进一步实现了速度和准确性之间的权衡;在一个设置中,我们在超过100 Hz时匹配最先进的性能(图5)。我们还发布了可以重现我们结果的代码 (https://github.com/nutonomy/second.pytorch)。
我们首先回顾了最近将卷积神经网络应用于目标检测的工作,然后重点关注特定于激光雷达点云目标检测的方法。
从Girshick等人的开创性工作开始。[6]已经确定卷积神经网络(CNN)架构是用于图像检测的最先进技术。随后的一系列论文[24, 7]提倡对这个问题采用两阶段的方法,在第一阶段,region proposal network(RPN)提出候选proposals。这些proposals的裁剪和调整大小的版本然后由第二阶段网络分类。两阶段方法主导了重要的视觉基准数据集,如COCO[17],而不是Liu等人最初提出的单阶段架构[18]。在单阶段架构中,一组密集的锚框在一个阶段中回归并分类为一组预测,从而提供快速和简单的架构。最近Lin等人[16]令人信服地认为,凭借他们提出的焦点损失函数,单阶段方法在准确性和运行时间方面都优于两阶段方法。在这项工作中,我们使用单阶段方法。
点云中的目标检测本质上是一个三维问题。因此,部署3D卷积网络进行检测是很自然的,这是几项早期工作的范例[3,13]。虽然提供了简单的体系结构,但是这些方法很慢;例如Engelcke等人[3]在单点云上进行推断需要0.5s。最近的方法通过将3D点云投影到地平面[11,2]或图像平面[14]上来提高运行时间。在最常见的范例中,点云被组织成体素,并且每个垂直列中的体素集被编码成固定长度的、手工制作的特征编码,以形成可以由标准图像检测架构处理的伪图像(pseudo-image)。一些著名的作品包括MV3D[2]、AVOD[11]、PIXOR[30]和Complex YOLO[26],它们都使用相同固定编码范例的变体作为其架构的第一步。前两种方法另外将激光雷达特征与图像特征融合以创建多模态检测器。MV3D和AVOD中使用的融合步骤迫使他们使用两级检测管道,而PIXOR和复杂YOLO使用单级管道。
在他们的开创性工作Qi等人[22, 23]提出了一种简单的架构PointNet,用于从无序点集中学习,它提供了一条通向完整端到端学习的途径。VoxelNet[31]是在激光雷达点云中部署PointNets进行目标检测的首批方法之一。在他们的方法中,PointNets应用于体素,然后由一组3D卷积层处理,然后是2D主干和检测头。这实现了端到端学习,但与早期依赖3D卷积的工作一样,VoxelNet速度很慢,单个点云需要225毫秒的推理时间(4.4 Hz)。另一种最近的方法是Frustum PointNet[21],它使用PointNets来分割和分类从将图像上的检测投影到3D生成的截锥体中的点云。与其他融合方法相比,Frustum PointNet实现了较高的基准性能,但其多阶段设计使得端到端学习变得不切实际。最近SECOND[28]对VoxelNet进行了一系列改进,从而提高了性能并大大提高了20 Hz的速度。然而,他们无法移除昂贵的3D卷积层。
我们提出了一种新颖的点云编码器和网络PointPillars,它在点云上运行以实现3D目标检测网络的端到端训练。
我们展示了柱体上的所有计算如何可以构成密集的2D卷积,从而可以在62 Hz下进行推理;比其他方法快2-4倍。
我们在KITTI数据集上进行实验,并在BEV和3D基准上展示汽车、行人和骑自行车者的最新结果。
我们进行了多项消融研究,以检查实现强大检测性能的关键因素。
图2. 网络概览。网络的主要组件是柱体特征网络、主干网络和SSD检测头。有关详细信息,请参阅第2节。原始点云被转换为堆叠柱张量和柱索引张量。编码器使用堆叠的柱子来学习一组特征,这些特征可以散布回卷积神经网络的2D伪图像。检测头使用来自主干的特征来预测目标的3D边界框。注意:这里我们展示了汽车网络的主干尺寸。
PointPillars接受点云作为输入,并为汽车、行人和骑自行车的人估计面向3D框。它由三个主要阶段组成(图2):(1)将点云转换为稀疏伪图像的特征编码器网络;(2) 一个二维卷积主干,将伪图像处理成高级表示;(3)一个检测头,用于检测和回归3D框。
为了应用2D卷积架构,我们首先将点云转换为伪图像。
我们用 l l l表示点云中的一个点,坐标为 x 、 y 、 z x、y、z x、y、z和反射率 r r r。作为第一步,点云在x-y平面上被离散化为一个均匀间隔的网格,创建一组柱体 P P P与 ∣ P ∣ = B |P| = B ∣P∣=B. 请注意,不需要超参数来控制z维度中的binning。然后用 x c 、 y c 、 z c 、 x p x_{c}、y_{c}、z_{c}、x_{p} xc、yc、zc、xp和 y p y_{p} yp对每个柱体中的点进行扩充,其中 c c c下标表示到柱体中所有点的算术平均值的距离, p p p下标表示距柱体 x 、 y x、y x、y中心的偏移量。增强的激光雷达点 l l l现在是 D = 9 D = 9 D=9维。
由于点云的稀疏性,这组柱体大部分是空的,而非空柱体中的点通常很少。例如,在 0.1 6 2 m 2 0.16^{2} m^{2} 0.162m2的bin处,来自HDL-64E Velodyne激光雷达的点云在KITTI中通常使用的范围内具有6k-9k个非空柱体,稀疏度约为97%。通过对每个样本的非空柱体数量 ( P ) (P) (P)和每个柱体的点数 ( N ) (N) (N)施加限制来利用这种稀疏性,以创建大小为 ( D , P , N ) (D, P, N) (D,P,N)的密集张量。如果样本或柱体包含太多数据而无法放入此张量,则数据将被随机采样。相反,如果样本或支柱的数据太少而无法填充张量,则应用零填充。
接下来,我们使用PointNet的简化版本,其中,对于每个点,应用线性层,然后是BatchNorm[10]和ReLU[19]以生成 ( C , P , N ) (C, P, N) (C,P,N)大小的张量。接下来是对通道进行最大操作以创建大小为 ( C , P ) (C, P) (C,P)的输出张量。请注意,线性层可以被表述为1×1的张量卷积,从而使计算非常有效。
编码后,这些特征将分散回原始柱体位置,以创建大小为 ( C , H , W ) (C, H, W) (C,H,W)的伪图像,其中 H H H和 W W W表示画布的高度和宽度。
我们使用与[31]类似的主干网,其结构如图2所示。主干网有两个子网络:一个是以越来越小的空间分辨率产生特征的自上而下的网络,另一个是对自上而下的特征进行上采样和串联的网络。自上而下的主干网可以由一系列的 B l o c k ( S , L , F ) Block(S, L, F ) Block(S,L,F)来描述。每个区块都以跨度S(相对于原始输入伪图像而言)进行操作。一个区块有L个3x3的二维卷积层,有F个输出通道,每个通道后面有BatchNorm和ReLU。层内的第一个卷积具有步幅 S S i n \frac{S}{S_{i n}} SinS以确保块在接收到步幅 S i n S_{i n} Sin的输入blob后以步幅S运行。块中所有后续卷积的步长为1。
来自每个自上而下的块的最终特征通过如下的上采样和连接来组合。首先,使用具有 F F F个最终特征的转置2D卷积,从初始步幅 S i n S_{in} Sin到最终步幅 S o u t S_{out} Sout(两者都是相对于原始伪图像测量的)对特征进行上采样 Up ( S in , S out , F ) \operatorname{Up}\left(S_{\text {in }}, S_{\text {out }}, F\right) Up(Sin ,Sout ,F)。接下来,将BatchNorm和ReLU应用于上采样特征。最终的输出特征是源自不同步幅的所有特征的串联。
在本文中,我们使用单次检测器(SSD)[18]设置来执行3D目标检测。与SSD类似,我们使用并集上的2D交集(IoU)[4]将先验框与ground truth相匹配。边界框高度和高程不用于匹配;相反,给定2D匹配,高度和海拔成为额外的回归目标。
在这一节中,我们描述了我们的网络参数和我们优化的损失函数。
不是对我们的网络进行预训练,而是使用[8]中的均匀分布随机初始化所有权重。
编码器网络具有 C = 64 C = 64 C=64个输出特征。除了第一个街区的步幅外,汽车和行人/骑自行车的人的骨干是相同的(汽车的 S = 2 S = 2 S=2,行人/骑自行车的人 S = 1 S = 1 S=1)。两个网络都由三个块组成,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、Up2和Up3的特征串联在一起,为检测头创建6C特征。
我们使用SECOND[28]中介绍的相同损失函数。Ground truth框和锚由 ( x , y , z , w , l , h , θ ) (x, y, z, w, l, h, θ) (x,y,z,w,l,h,θ)定义。ground truth和锚之间的定位回归残差定义为:
Δ x = x g t − x a d a , Δ y = y g t − y a d a , Δ z = z g t − z a h a Δ w = log w g t w a , Δ l = log l g t l a , Δ h = log h g t h a Δ θ = sin ( θ g t − θ a ) \begin{aligned} \Delta x &=\frac{x^{g t}-x^{a}}{d^{a}}, \Delta y=\frac{y^{g t}-y^{a}}{d^{a}}, \Delta z=\frac{z^{g t}-z^{a}}{h^{a}} \\ \Delta w &=\log \frac{w^{g t}}{w^{a}}, \Delta l=\log \frac{l^{g t}}{l^{a}}, \Delta h=\log \frac{h^{g t}}{h^{a}} \\ \Delta \theta &=\sin \left(\theta^{g t}-\theta^{a}\right) \end{aligned} ΔxΔwΔθ=daxgt−xa,Δy=daygt−ya,Δz=hazgt−za=logwawgt,Δl=loglalgt,Δh=loghahgt=sin(θgt−θa)
其中 x g t x^{g t} xgt和 x a x^{a} xa分别是ground truth和锚框, d a = ( w a ) 2 + ( l a ) 2 d^{a}=\sqrt{\left(w^{a}\right)^{2}+\left(l^{a}\right)^{2}} da=(wa)2+(la)2。总定位损失为:
L l o c = ∑ b ∈ ( x , y , z , w , l , h , θ ) SmoothL1 ( Δ b ) \mathcal{L}_{l o c}=\sum_{b \in(x, y, z, w, l, h, \theta)} \operatorname{SmoothL1}(\Delta b) Lloc=b∈(x,y,z,w,l,h,θ)∑SmoothL1(Δb)
由于角度定位损失无法区分翻转框,我们在离散化方向[28]上使用softmax分类损失 L d i r \mathcal{L}_{d i r} Ldir,使网络能够学习方向。
对于目标分类损失,我们使用焦点损失[16]:
L c l s = − α a ( 1 − p a ) γ log p a \mathcal{L}_{c l s}=-\alpha_{a}\left(1-p^{a}\right)^{\gamma} \log p^{a} Lcls=−αa(1−pa)γlogpa
其中 p a p^{a} pa是anchor的类别概率。我们使用 α = 0.25 \alpha=0.25 α=0.25和 γ = 2 \gamma=2 γ=2的原始论文设置。因此,总损失为:
L = 1 N p o s ( β l o c L l o c + β c l s L c l s + β d i r L d i r ) , \mathcal{L}=\frac{1}{N_{p o s}}\left(\beta_{l o c} \mathcal{L}_{l o c}+\beta_{c l s} \mathcal{L}_{c l s}+\beta_{d i r} \mathcal{L}_{d i r}\right), L=Npos1(βlocLloc+βclsLcls+βdirLdir),
其中 N p o s N_{pos} Npos是positive锚的数量, β l o c = 2 \beta_{l o c}=2 βloc=2, β c l s = 1 \beta_{c l s}=1 βcls=1, β d i r = 0.2 \beta_{d i r}=0.2 βdir=0.2。
为了优化损失函数,我们使用初始学习率为 2 ∗ 1 0 − 4 2 * 10^{-4} 2∗10−4的Adam优化器,每15个epoch将学习率衰减0.8倍,并训练160个epoch。我们使用2的批大小作为验证集,4用于我们的测试提交。
图3.KITTI结果的定性分析。我们展示了激光雷达点云的鸟瞰图(顶部),以及投影到图像中的3D边界框,以便更清晰地可视化。注意,我们的方法只使用激光雷达。我们显示了汽车(橙色)、骑自行车者(红色)和行人(蓝色)的预测框。ground truth框以灰色显示。boxes的方向由连接底部中心和boxes前面的线表示。
图4.KITTI上的失败案例。与图3相同的可视化设置,但侧重于几种常见的故障模式。
在本节中,我们将介绍我们的实验设置,包括数据集、实验设置和数据增强。
所有实验都使用KITTI目标检测基准数据集[5],该数据集由具有激光雷达点云和图像的样本组成。我们只在激光雷达点云上进行训练,但与同时使用激光雷达和图像的融合方法进行比较。样本最初分为7481个训练样本和7518个测试样本。对于实验研究,我们将官方训练分为3712个训练样本和3769个验证样本[1],而对于我们的测试提交,我们从验证集中创建了一个包含784个样本的最小集,并在剩余的6733个样本上进行了训练。KITTI基准要求检测汽车、行人和骑自行车的人。由于ground truth目标仅在它们在图像中可见时才被标注,我们遵循标准惯例[2,31],即仅使用投射到图像中的激光雷达点。按照KITTI[11, 31, 28]的标准文献实践,我们为汽车训练一个网络,为行人和骑自行车的人训练一个网络。
除非在实验研究中明确改变,否则我们使用xy分辨率:0.16m,最大柱体数§:12000,每个柱体的最大点数(N):100。
我们使用与[31]相同的锚和匹配策略。每个类锚由宽度、长度、高度和z中心描述,并应用于两个方向:0度和90度。使用具有以下规则的2D IoU将锚与ground truth匹配。positive匹配或者是具有ground truth框的最高值,或者高于positive匹配阈值,而negative匹配则低于负阈值。所有其他锚在损失中被忽略。
在推理时,我们应用轴对齐的非最大抑制(NMS),重叠阈值为0.5IoU。与旋转NMS相比,这提供了类似的性能,但速度更快。
车。 x, y, z范围分别为[(0, 70.4),(-40, 40),(-3, 1)]米。汽车锚的宽度、长度和高度为(1.6, 3.9, 1.5)m,z中心为-1m。匹配使用0.6和0.45的positive阈值和negative阈值。
行人和骑自行车的人。 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的positive阈值和negative阈值。
数据增强对于KITTI基准测试的良好性能至关重要[28, 30, 2]。
首先,在SECOND[28]之后,我们为所有类和落在这些3D框内的相关点云创建了一个ground truth 3D框的查找表。然后对于每个样本,我们分别为汽车、行人和骑自行车的人随机选择15、0、8个ground truth样本,并将它们放入当前点云中。我们发现这些设置比建议的设置执行得更好[28]。
接下来,所有ground truth框都被单独增强。每个框都经过旋转(均匀地从 [ − π / 20 , π / 20 ] [-\pi / 20, \pi / 20] [−π/20,π/20]绘制)和平移(x、y和z独立地从 N ( 0 , 0.25 ) \mathcal{N}(0,0.25) N(0,0.25)绘制)以进一步丰富训练集。
最后,我们执行两组全局增强,它们共同应用于点云和所有的框。首先,我们沿着x轴应用随机镜像翻转[30],然后应用全局旋转和缩放[31,28]。最后,我们应用从 N ( 0 , 0.2 ) \mathcal{N}(0,0.2) N(0,0.2)提取的具有x,y,z的全局平移来模拟局部噪声。
在本节中,我们将展示PointPillars方法的结果并与文献进行比较。
定量分析。 所有检测结果均使用官方KITTI评估检测指标进行测量,即:鸟瞰图(BEV)、3D、2D和平均方向相似度(AOS)。2D检测是在图像平面中完成的,平均方向相似度评估2D检测的平均方向(以BEV测量)相似度。KITTI数据集分为简单、中等和困难难度,KITTI官方排行榜按中等表现排名。
如表1和表2所示,PointPillars在平均精度(mAP)方面优于所有已发布的方法。与仅使用激光雷达的方法相比,PointPillars在所有类别和难度层中都取得了更好的结果,除了易车层。它在汽车和骑车人上的表现也优于基于融合的方法。
虽然PointPillars预测3D方向的框,但BEV和3D指标没有考虑方向。使用AOS[5]评估方向,这需要将3D框投影到图像中,执行2D检测匹配,然后评估这些匹配的方向。与预测定向框的仅有的两种3D检测方法[11, 28]相比,PointPillars在AOS上的性能在所有层中都显着超过(表3)。一般来说,仅图像方法在2D检测上表现最好,因为框的3D投影到图像中可能会导致松散的框取决于3D姿态。尽管如此,PointPillars适度的骑行者AOS为68.16,超过了基于图像的最佳方法[27]。
为了与val上的其他方法进行比较,我们注意到,我们的网络在中等水平的汽车、行人和骑自行车者中分别实现了BEV AP(87.98,63.55,69.71)和3D AP(77.98,57.86,66.02)。
表3.KITTI测试平均方向相似性(AOS)检测基准的结果。SubCNN是性能最好的纯图像方法,而VOD-FPN、SECOND和PointPillars是唯一预测方向的3D目标检测器。
定性分析。 我们在图3和图4中提供了定性结果。虽然我们只在激光雷达点云上进行训练,但为了便于解释,我们从BEV和图像角度可视化了3D边界框预测。图3显示了我们的检测结果,带有紧密的3D边界框。对汽车的预测尤其准确,常见的故障模式包括困难样本(部分遮挡或远处物体)的假negatives或类似类别(货车或有轨电车)的假positives。检测行人和骑自行车的人更具挑战性,并导致一些有趣的故障模式。行人和骑自行车的人通常被错误分类(标准示例见图4a,分类为骑自行车的行人和桌子的组合见图4d)。此外,行人很容易与狭窄的垂直环境特征相混淆,如电线杆或树干(见图4b)。在某些情况下,我们可以正确地检测到ground truth标注中缺失的目标(见图4c)。
正如我们的结果(表1和图5)所表明的,PointPillars代表了推理运行时方面的显著改进。在这一节中,我们将分解我们的运行时,并考虑实现这种加速的不同设计选择。我们关注汽车网络,但是行人和自行车网络以相似的速度运行,因为较小的范围抵消了主干以较低步幅运行的影响。所有运行时间都是在采用英特尔i7 CPU和1080ti GPU的台式机上测量的。
主要的推理步骤如下。首先,加载点云并根据图像中的范围和可见度进行过滤(1.4ms)。然后,将点组织成柱体并进行装饰(2.7ms)。接下来,PointPillar张量被上传到GPU(2.9毫秒),编码(1.3毫秒),分散到伪图像(0.1毫秒),并由主干和探测头处理(7.7毫秒)。最后在CPU上应用NMS(0.1 ms),总运行时间为16.2 ms。
编码。 启用此运行时的关键设计是PointPilar编码。例如,在1.3毫秒时,它比VoxelNet编码器(190毫秒)[31]快2个数量级。最近,SECOND提出了一个更快的稀疏版本的VoxelNet编码器,总网络运行时间为50毫秒。他们没有提供运行时分析,但由于他们的架构的其余部分与我们的相似,这表明编码器仍然明显较慢;在他们的开源实现中,编码器需要48毫秒(https://github.com/traveller59/second.pytorch/)。
Slimmer Design. 与[31]建议的2个顺序PointNet相比,我们在编码器中选择单个PointNet。这将我们的PyTorch运行时的运行时间减少了2.5毫秒。第一个块的维数也降低了64以匹配编码器输出大小,这将运行时间减少了4.5 毫秒。最后,我们通过将上采样特征层的输出维度减少一半至128,又节省了3.9毫秒。这些变化都不会影响检测性能。
TensorRT. 虽然我们所有的实验都是在PyTorch[20]中进行的,但用于编码、主干和检测头的最终GPU内核是使用NVIDIA TensorRT构建的,这是一个用于优化GPU推理的库。从运行频率为42.4 Hz的PyTorch管道切换到TensorRT后,速度提高了45.5%。
The Need for Speed. 如图5所示,PointPillars可以达到105 Hz,但精度损失有限。虽然可以说这种运行时间过长,因为激光雷达通常以20 Hz的频率运行,但有两个关键事项需要牢记。首先,由于KITTI ground truth标注的伪影,仅使用投影到正面图像的激光雷达点,这仅占整个点云的10%左右。然而,一个可操作的AV需要查看完整的环境并处理完整的点云,从而显着增加运行时的各个方面。其次,文献中的时序测量通常在高功率桌面GPU上完成。然而,一个可操作的AV可能会使用嵌入式GPU或嵌入式计算,它们可能不具有相同的吞吐量。
图5. 在KITTI[5]验证集上,行人、自行车和汽车的BEV检测性能(mAP)与速度(Hz)的关系。蓝色圆圈表示只有激光雷达的方法,红色方块表示使用激光雷达和视觉的方法。不同的操作点是通过使用 { 0.1 2 2 , 0.1 6 2 , 0. 2 2 , 0.2 4 2 , 0.2 8 2 } m 2 \left\{0.12^{2}, 0.16^{2}, 0.2^{2}, 0.24^{2}, 0.28^{2}\right\} m^{2} {0.122,0.162,0.22,0.242,0.282}m2的柱体网格大小实现的。最大柱体的数量随着分辨率的变化而变化,分别设置为16000、12000、12000、8000、8000。
在本节中,我们提供消融研究并与最近的文献相比讨论我们的设计选择。
可以通过改变空间binning的大小来实现速度和准确性之间的权衡。较小的柱体允许更精细的定位并产生更多的特征,而较大的柱体由于更少的非空柱体(加速编码器)和更小的伪图像(加速CNN主干)而更快。为了量化这种影响,我们对网格大小进行了扫描。从图5可以清楚地看出,更大的bin大小会导致更快的网络;在0.282处,我们以与以前方法相似的性能实现了105 Hz。性能下降主要是由于行人和骑自行车的人,而汽车的性能在整个bin大小方面都很稳定。
VoxelNet[31]和SECOND[28]都建议对每个框进行广泛的增强。然而,在我们的实验中,最小的框增强效果更好。特别是,随着框的增加,行人的检测性能显著降低。我们的假设是,ground truth抽样的引入减轻了对广泛的逐框扩增的需要。
在激光雷达点装饰步骤中,我们执行VoxelNet[31]装饰加上两个额外的装饰: x p x_{p} xp和 y p y_{p} yp,它们是从柱体x、y中心偏移的x和y。这些额外的装饰为最终检测性能增加了0.5 mAP,并提供了更多可重复的实验。
为了单独评估提议的PointPillar编码的影响,我们在SECOND[28]的官方代码库中实现了几个编码器。有关每种编码的详细信息,请参阅原始论文。
表4.编码器性能评估。为了公平地比较编码器,使用了相同的网络架构和训练程序,并且在实验之间只改变了编码器和 xy分辨率。性能以KITTI val上的BEV mAP衡量。学习编码器明显优于固定编码器,尤其是在更大的分辨率下。
如表4所示,学习特征编码在所有分辨率上都严格优于固定编码器。这是意料之中的,因为大多数成功的深度学习架构都是端到端训练的。此外,差异随着更大的bin大小而增加,其中由于每个柱体中的点云更大,固定编码器缺乏表达能力的情况变得更加突出。在学习到的编码器中,VoxelNet略强于PointPillars。然而,这并不是一个公平的比较,因为VoxelNet编码器的速度要慢几个数量级,并且参数要多几个数量级。当对相似的推理时间进行比较时,很明显PointPillars提供了更好的操作点(图5)。
表4有一些奇怪的方面。首先,尽管原始论文中指出他们的编码器仅适用于汽车,但我们发现MV3D[2]和PIXOR[30]编码器可以很好地学习行人和骑自行车的人。其次,我们的实现大大超过了各自公布的结果(1-10mAP)。虽然这不是公平的比较,因为我们只使用了各自的编码器而不是完整的网络架构,但性能差异是值得注意的。我们看到了几个潜在的原因。对于VoxelNet和SECOND,我们怀疑性能的提升来自改进的数据增强超参数,如第7.2节所述。在固定编码器中,大约一半的性能提升可以通过引入ground truth数据库采样[28]来解释,我们发现这可以将mAP提高约3%mAP。其余的差异可能是由于多个超参数的组合,包括网络设计(层数、层类型、是否使用特征金字塔);锚箱框计(或缺乏设计[30]);相对于3D和角度的定位损失;分类损失;优化器的选择(SGD与Adam,批量大小);以及更多。然而,需要进行更仔细的研究,以分离出每一个原因和影响。
图 5. 在 KITTI [5] 验证集上跨行人、自行车和汽车的 BEV 检测性能 (mAP) 与速度 (Hz)。蓝色圆圈表示仅使用激光雷达的方法,红色方块表示使用激光雷达和视觉的方法。通过使用 {0.122, 0.162, 0.22, 0.242, 0.282} m2 的柱栅尺寸来实现不同的操作点。最大支柱的数量随着分辨率的变化而变化,分别设置为 16000、12000、12000、8000、8000。
在本文中,我们介绍了PointPillars,这是一种新颖的深度网络和编码器,可以在激光雷达点云上进行端到端训练。我们证明,在KITTI挑战中,PointPillars通过以更快的速度提供更高的检测性能(BEV和3D上的mAP)来主导所有现有方法。我们的结果表明,PointPillars为激光雷达的3D目标检测提供了迄今为止最好的架构。
[1] X. Chen, K. Kundu, Y . Zhu, A. G. Berneshawi, H. Ma, S. Fidler, and R. Urtasun. 3d object proposals for accurate object class detection. In NIPS, 2015. 5
[2] X. Chen, H. Ma, J. Wan, B. Li, and T. Xia. Multi-view 3d object detection network for autonomous driving. In CVPR, 2017. 1, 2, 5, 6, 8
[3] M. Engelcke, D. Rao, D. Z. Wang, C. H. Tong, and I. Posner. V ote3deep: Fast object detection in 3d point clouds using efficient convolutional neural networks. In ICRA, 2017. 2
[4] M. Everingham, L. V an Gool, C. K. I. Williams, J. Winn, and A. Zisserman. The pascal visual object classes (VOC) challenge. International Journal of Computer Vision, 2010. 4
[5] A. Geiger, P . Lenz, and R. Urtasun. Are we ready for autonomous driving? the KITTI vision benchmark suite. In CVPR, 2012. 1, 2, 5, 6, 8
[6] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 2
[7] K. He, G. Gkioxari, P . Dollár, and R. Girshick. Mask RCNN. In ICCV, 2017. 2
[8] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In ICCV, 2015. 5
[9] M. Himmelsbach, A. Mueller, T. Lüttel, and H.-J. Wünsche. Lidar-based 3d object perception. In Proceedings of 1st international workshop on cognition for technical systems, 2008. 1
[10] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. CoRR, abs/1502.03167, 2015. 4
[11] J. Ku, M. Mozifian, J. Lee, A. Harakeh, and S. Waslander. Joint 3d proposal generation and object detection from view aggregation. In IROS, 2018. 1, 2, 5, 6, 7
[12] J. Leonard, J. How, S. Teller, M. Berger, S. Campbell, G. Fiore, L. Fletcher, E. Frazzoli, A. Huang, S. Karaman, et al. A perception-driven autonomous urban vehicle. Journal of Field Robotics, 2008. 1
[13] B. Li. 3d fully convolutional network for vehicle detection in point cloud. In IROS, 2017. 2
[14] B. Li, T. Zhang, and T. Xia. V ehicle detection from 3d lidar using fully convolutional network. In RSS, 2016. 2
[15] M. Liang, B. Yang, S. Wang, and R. Urtasun. Deep continuous fusion for multi-sensor 3d object detection. In ECCV, 2018. 1, 6
[16] T.-Y . Lin, P . Goyal, R. Girshick, K. He, and P . Dollár. Focal loss for dense object detection. PAMI, 2018. 2, 5
[17] T.-Y . Lin, M. Maire, S. Belongie, J. Hays, P . Perona, D. Ramanan, P . Dollár, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. 2
[18] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y . Fu, and A. C. Berg. SSD: Single shot multibox detector. In ECCV, 2016. 2, 4
[19] V . Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In ICML, 2010. 4
[20] A. Paszke, S. Gross, S. Chintala, G. Chanan, E. Yang, Z. DeVito, Z. Lin, A. Desmaison, L. Antiga, and A. Lerer. Automatic differentiation in pytorch. In NIPS-W, 2017. 7
[21] C. R. Qi, W. Liu, C. Wu, H. Su, and L. J. Guibas. Frustum pointnets for 3d object detection from RGB-D data. In CVPR, 2018. 1, 3, 6
[22] C. R. Qi, H. Su, K. Mo, and L. J. Guibas. Pointnet: Deep learning on point sets for 3d classification and segmentation. In CVPR, 2017. 2, 3
[23] C. R. Qi, L. Yi, H. Su, and L. J. Guibas. Pointnet++: Deep hierarchical feature learning on point sets in a metric space. In NIPS, 2017. 3
[24] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015. 2
[25] K. Shin, Y . Kwon, and M. Tomizuka. Roarnet: A robust 3d object detection based on region approximation refinement. arXiv:1811.03818, 2018. 1, 6
[26] M. Simon, S. Milz, K. Amende, and H.-M. Gross. ComplexYOLO: Real-time 3d object detection on point clouds. arXiv:1803.06199, 2018. 1, 2, 8
[27] Y . Xiang, W. Choi, Y . Lin, and S. Savarese. Subcategoryaware convolutional neural networks for object proposals and detection. In IEEE Winter Conference on Applications of Computer Vision (WACV), 2017. 6, 7
[28] Y . Yan, Y . Mao, and B. Li. SECOND: Sparsely embedded convolutional detection. Sensors, 18(10), 2018. 1, 2, 3, 5, 6, 7, 8
[29] B. Yang, M. Liang, and R. Urtasun. HDNET: Exploiting HD maps for 3d object detection. In CoRL, 2018. 1, 6
[30] B. Yang, W. Luo, and R. Urtasun. PIXOR: Real-time 3d object detection from point clouds. In CVPR, 2018. 1, 2, 6, 8
[31] Y . Zhou and O. Tuzel. V oxelnet: End-to-end learning for point cloud based 3d object detection. In CVPR, 2018. 1, 2, 3, 4, 5, 6, 7, 8
原文链接:https://arxiv.org/abs/1812.05784