点云 3D 目标检测 - PointPillars(CVPR 2019)

  • 摘要
  • 1. 导言
    • 1.1 相关工作
      • 1.1.1 使用CNNs进行目标检测
      • 1.1.2 激光雷达点云中的目标检测
    • 1.2 贡献
  • 2. PointPillars网络
    • 2.1 点云到伪图像
    • 2.2 主干
    • 2.3 检测头
  • 3. 实施细节
    • 3.1 网络
    • 3.2 损失
  • 4. 实验设置
    • 4.1 数据集
    • 4.2 设置
    • 4.3 数据增强
  • 5. 结果
  • 6. 实时推断
  • 7. 消融研究
    • 7.1 空间分辨率
    • 7.2 每个框数据增强
    • 7.3 点装饰
    • 7.4 编码
  • 8. 结论
  • References
  • A. PointPillars 代码实现细节补充说明
    • A.1 算法特点
    • A.2 模型结构
      • A.2.1 Pillar Feature Net
      • A.2.2 Backbone (2D CNN)
      • A.2.3 Detection Head (SSD)
    • A.3 数据预处理
    • A.4 数据增强
    • A.5 损失函数和评价指标

声明:此翻译仅为个人学习记录

文章信息

  • 标题:PointPillars: Fast Encoders for Object Detection from Point Clouds (CVPR 2019)
  • 作者:Alex H. Lang、Sourabh Vora、Holger Caesar、Lubing Zhou、Jiong Yang、Oscar Beijbom
  • 文章链接:https://arxiv.org/pdf/1812.05784.pdf
  • 文章代码:https://github.com/nutonomy/second.pytorch
    推荐:各大流行 3D 目标检测框架 均集成,亦可参考 点云 3D 目标检测 - 开源算法集合)

摘要

  点云中的目标检测是许多机器人应用(如自动驾驶)的一个重要方面。在本文中,我们考虑将点云编码为适合后阶段检测管道的格式的问题。最近的文献提出了两种类型的编码器;固定编码器往往很快,但牺牲了准确性,而从数据中学习的编码器更准确,但速度较慢。在这项工作中,我们提出了PointPillars,这是一种新的编码器,它利用PointNets来学习垂直列(柱子)中组织的点云的表示。虽然编码的特征可以用于任何标准的2D卷积检测架构,但我们进一步提出了一种精简的后阶段网络。大量实验表明,PointPillars在速度和精度方面都大大优于以前的编码器。尽管只使用激光雷达,但我们的全检测管道在3D和鸟瞰KITTI基准方面,甚至在融合方法中,都显著优于最先进的技术。这种检测性能是在62 Hz运行时实现的:运行时间提高了2-4倍。我们的方法的更快版本与105 Hz的现有技术相匹配。这些基准表明,PointPillars是点云中目标检测的合适编码。

1. 导言

  在城市环境中部署自动驾驶汽车(AVs)是一项艰巨的技术挑战。在其他任务中,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: SOND[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 10 cm,然后对每个网格单元中的点执行手工制作的特征编码方法[2,11,26,30]。然而,这样的方法可能是次优的,因为如果没有显著的工程努力,硬编码特征提取方法可能不会推广到新的配置。为了解决这些问题,并基于Qi等人开发的PointNet设计。[22],VoxelNet[31]是在该领域真正实现端到端学习的首批方法之一。VoxelNet将空间划分为体素,将PointNet应用于每个体素,然后是3D卷积中间层以合并垂直轴,然后应用2D卷积检测架构。虽然VoxelNet性能很强,但4.4 Hz的推断时间太慢,无法实时部署。最近,SECOND[28]提高了VoxelNet的推理速度,但3D卷积仍然是一个瓶颈。

  在这项工作中,我们提出了PointPillars:一种在3D中进行目标检测的方法,该方法仅使用2D卷积层实现端到端学习。PointPillars使用一种新的编码器来学习点云的柱(垂直列)上的特征,以预测目标的3D定向框。这种方法有几个优点。首先,通过学习特征而不是依赖固定的编码器,PointPillars可以利用点云表示的全部信息。此外,通过对柱而不是体素进行操作,不需要手动调整垂直方向的装箱。最后,柱子是高效的,因为所有关键操作都可以公式化为2D卷积,在GPU上计算非常高效。学习特征的另一个好处是PointPillars无需手动调整即可使用不同的点云配置。例如,它可以很容易地结合多个激光雷达扫描,甚至雷达点云。

  我们评估了PointPillars网络的公共KITTI检测挑战,这些挑战需要在鸟瞰图(BEV)或3D视图中检测汽车、行人和骑自行车的人[5]。虽然我们的PointPillars网络仅使用激光雷达点云进行训练,但它主导了当前的技术状态,包括使用激光雷达和图像的方法,从而建立了BEV和3D检测性能的新标准(表1和表2)。同时,PointPillars的运行频率为62 Hz,比以前的技术快了几个数量级;在一个设置中,我们在超过100Hz的频率下达到了最先进的性能(图5)。我们还发布了代码(https://github.com/nutonomy/second.pytorch)这可以重现我们的结果。

1.1 相关工作

  我们首先回顾了将卷积神经网络应用于一般目标检测的最新工作,然后重点关注激光雷达点云目标检测的特定方法。

1.1.1 使用CNNs进行目标检测

从Girshick等人的开创性工作开始[6],卷积神经网络(CNN)架构是图像检测的最新技术。随后的一系列论文[24,7]主张对这一问题采取两阶段方法,在第一阶段,区域提案网络(RPN)提出候选提案。然后,这些建议的裁剪和调整大小的版本由第二阶段网络进行分类。两阶段方法主导了重要的视觉基准数据集,如COCO[17],而不是Liu等人最初提出的单阶段架构。[18]。在单阶段架构中,一组密集的锚框在单个阶段中被回归并分类为一组预测,从而提供快速而简单的架构。最近,Lin等人[16]令人信服地认为,利用他们提出的焦点损失函数,单阶段方法在精度和运行时间方面都优于两阶段方法。在这项工作中,我们使用单阶段方法。

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

点云中的目标检测本质上是一个三维问题。因此,部署3D卷积网络进行检测是很自然的,这是几项早期工作的范例[3,13]。虽然提供了简单的架构,但这些方法很慢;e、 g.Engelcke等人[3]对单点云的推断需要0.5秒。最新的方法通过将3D点云投影到地平面[11,2]或图像平面[14]上来改善运行时间。在最常见的范例中,点云被组织为体素,并且每个垂直列中的体素集合被编码为固定长度的手工特征编码,以形成可由标准图像检测架构处理的伪图像。这里的一些值得注意的工作包括MV3D[2]、AVOD[11]、PIXOR[30]和复杂YOLO[26],它们都使用相同固定编码范式的变体作为其架构的第一步。前两种方法还将激光雷达特征与图像特征相融合,以创建多模态检测器。MV3D和AVOD中使用的融合步骤迫使它们使用两阶段检测管道,而PIXOR和复杂YOLO使用单阶段管道。

图2. 网络概述。网络的主要组件是支柱特征网络、主干和SSD检测头。详见第2节。原始点云被转换为堆叠柱张量和柱索引张量。编码器使用堆叠的柱来学习一组特征,这些特征可以分散回卷积神经网络的2D伪图像。检测头使用主干的特征来预测目标的3D边界框。注意:这里我们显示了汽车网络的主干尺寸。

  在他们的开创性工作中,Qi等人[22,23]提出了一种简单的体系结构PointNet,用于从无序的点集学习,这提供了一条完整的端到端学习的路径。VoxelNet[31]是部署PointNets用于激光雷达点云中目标检测的首批方法之一。在他们的方法中,将PointNets应用于体素,然后由一组3D卷积层处理,随后是2D主干和检测头。这实现了端到端学习,但与早期依赖3D卷积的工作一样,VoxelNet速度较慢,单点云需要225ms的推断时间(4.4Hz)。另一种最近的方法,Frustum PointNet[21],使用PointNets对通过将图像上的检测投影到3D中而生成的截头体中的点云进行分割和分类。与其他融合方法相比,Frustum PointNet取得了较高的基准性能,但其多阶段设计使得端到端学习不切实际。最近,SECOND[28]对VoxelNet进行了一系列改进,从而提高了性能和达到20Hz的速度。然而,他们无法去除代价昂贵的3D卷积层。

1.2 贡献

  • 我们提出了一种新的点云编码器和网络PointPillars,它在点云上运行,以实现3D目标检测网络的端到端训练。
  • 我们展示了如何将柱子上的所有计算设置为密集2D卷积,从而能够在62 Hz下进行推断;比其他方法快2-4倍。
  • 我们在KITTI数据集上进行了实验,并在BEV和3D基准上展示了汽车、行人和骑自行车者的最新结果。
  • 我们进行了几项消融研究,以检查能够实现强大检测性能的关键因素。

2. PointPillars网络

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

2.1 点云到伪图像

  为了应用2D卷积架构,我们首先将点云转换为伪图像。

  我们用l表示坐标为x、y、z和反射率r的点云中的一个点。作为第一步,将点云离散为x-y平面中均匀间隔的网格,创建一组支柱P,|P|=B。注意,不需要超参数来控制z维度的装箱。然后用xc、yc、zc、xp和yp增加每个柱中的点,其中c下标表示到柱中所有点的算术平均值的距离,p下标表示从柱x、y中心的偏移。增强激光雷达点l现在是D=9维。

  由于点云的稀疏性,这组柱子将大部分是空的,而非空的柱子中通常很少有点。例如,在0.162 m2箱划分,HDL-64E Velodyne激光雷达点云在KITTI中通常使用的范围内有6k-9k个非空柱~97%的稀疏度。通过对每个样本的非空柱的数量(P)和每个柱的点的数量(N)施加限制来利用这种稀疏性,以创建尺寸为(D,P,N)的密集的张量。如果一个样本或柱子包含太多数据,无法适应该张量,则数据将被随机采样。相反,如果样本或柱子的数据太少,无法填充张量,则应用零填充。

图3. KITTI结果的定性分析。我们展示了激光雷达点云(顶部)的鸟瞰图,以及投影到图像中的3D边界框,以实现更清晰的可视化。注意,我们的方法只使用激光雷达。我们显示了汽车(橙色)、自行车(红色)和行人(蓝色)的预测框。真值框显示为灰色。框的方向由连接底部中心和框前部的线表示。

图4. KITTI上的失效案例。与图3中的可视化设置相同,但侧重于几种常见的失效模式。

  接下来,我们使用PointNet的简化版本,其中对于每个点,应用线性层,然后是BatchNorm[10]和ReLU[19],以生成(C,P,N)大小的张量。然后对通道执行max操作,以创建大小为(C,P)的输出张量。注意,线性层可以公式化为张量上的1x1卷积,从而产生非常有效的计算。

  一旦编码完成,特征被分散回原始支柱位置,以创建大小(C、H、W)的伪图像,其中H和W表示画布的高度和宽度。

2.2 主干

  我们使用了与[31]类似的主干,其结构如图2所示。主干有两个子网络:一个自上而下的网络以越来越小的空间分辨率生成特征,另一个网络执行自上而下特征的上采样和连接。自上而下的主干可以由一系列块Block(S,L,F)表征。每个块以步幅S(相对于原始输入伪图像测量)操作。一个块具有L个3x3 2D conv层和F个输出通道,每个输出通道后跟BatchNorm和ReLU。层内的第一个卷积具有步幅S/Sin,以确保块在接收到步幅Sin的输入blob之后在步幅S上操作。一个块中的所有后续卷积都具有步幅1。

  每个自顶向下块的最终特征通过上采样和连接进行组合,如下所示。首先,使用具有F个最终特征的转置2D卷积对特征进行上采样,Up(Sin,Sout,F)从初始步幅Sin到最终步幅Sout(均再次测量原始伪图像)。接下来,BatchNorm和ReLU将应用于上采样的特征。最终的输出特征是源自不同步幅的所有特性的连接。

2.3 检测头

  在本文中,我们使用单击检测器(SSD)[18]设置来执行3D目标检测。与SSD类似,我们使用2D联合交叉(IoU)[4]将先验框与真值相匹配。边界框高度和标高未用于匹配;而不是给定2D匹配,高度和高程成为额外的回归目标。

3. 实施细节

  在本节中,我们将描述我们优化的网络参数和损失函数。

3.1 网络

  没有对我们的网络进行预训练,而是使用均匀分布随机初始化所有权重,如[8]所示。

  编码器网络具有C=64输出特征。除了第一个区块的步幅(汽车S=2,行人/自行车S=1)外,汽车和行人/自行车主干相同。两个网络都由三个区块组成,Block1(S,4,C)、Block2(2S,6,2C)和Block3(4S,6,4C)。通过以下上采样步骤对每个块进行上采样:Up1(S,S,2C)、Up2(2S,S,2D)和Up3(4S,S,2B)。然后将Up1、Up2和Up3的特征连接在一起以创建检测头的6C特征。

3.2 损失

  我们使用SECOND[28]中介绍的相同损失函数。真值框和锚由(x,y,z,w,l,h,θ)(x,y,z,w,l,h,θ)xyzwlhθ定义。真值和锚之间的定位回归残差定义如下:

其中xgt和xa分别是真值和锚框,da=(wa)2+(la)2{d^a=\sqrt {(w^a)^2+(l^a)^2}}da=(wa)2+(la)2

。总定位损失为:

  由于角度定位损失无法区分翻转框,我们在离散方向[28],Ldir上使用软最大分类损失,这使网络能够学习航向。

  对于物体分类损失,我们使用焦点损失[16]:

其中pa是锚的类概率。我们使用原始文章设置α=0.25和γ=2。因此,总损失为:

其中,Npos是正锚的数量,βloc=2,βcls=1,βdir=0.2。

  为了优化损失函数,我们使用初始学习率为2*10−4的Adam优化器并且每15个时期将学习率衰减0.8倍,并且训练160个时期。我们对验证集使用2个批量大小,对测试提交使用4个批量大小。

4. 实验设置

  在本节中,我们介绍了我们的实验设置,包括数据集、实验设置和数据增强。

4.1 数据集

  所有实验都使用KITTI目标检测基准数据集[5],该数据集由同时具有激光雷达点云和图像的样本组成。我们只使用激光雷达点云进行训练,但与同时使用激光雷达和图像的融合方法进行比较。样本最初分为7481个训练样本和7518个测试样本。对于实验研究,我们将正式训练分为3712个训练样本和3769个验证样本[1],而对于我们的测试提交,我们从验证集创建了784个样本的最小集,并对剩余的6733个样本进行了训练。KITTI基准要求检测汽车、行人和骑车人。由于真值目标只有在图像中可见的情况下才被标注,因此我们遵循标准惯例[2,31],即只使用投射到图像中的激光雷达点。根据KITTI的标准文献实践[11,31,28],我们为汽车训练一个网络,为行人和骑车人训练一个网络。

4.2 设置

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

  我们使用与[31]相同的锚点和匹配策略。每个类锚点由宽度、长度、高度和z中心描述,并以两个方向应用:0度和90度。使用2D IoU按照以下规则将锚与真值匹配。正匹配是具有与真值框的最高匹配,或高于正匹配阈值,而负匹配低于负阈值。损失中忽略所有其他锚。

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

汽车。x,y,z范围分别为[(0,70.4),(-40,40),(-3,1)]米。轿厢锚的宽度、长度和高度为(1.6、3.9、1.5)m,z中心为-1 m。匹配使用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的正负阈值。

表1. KITTI测试BEV检测基准的结果。

表2. KITTI测试3D检测基准的结果。

4.3 数据增强

  数据增强对于KITTI基准测试的良好性能至关重要[28,30,2]。

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

  接下来,所有真值框都被单独增强。每个框旋转(从[−π/20,π/20])和平移(x,y和z独立于N(0,0.25)),以进一步丰富训练集。

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

5. 结果

  在本节中,我们将介绍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是性能最好的纯图像方法,而AVOD-FPN、SECOND和PointPillars是唯一预测方向的3D目标检测器。

定性分析。我们在图3和图4中提供了定性结果。虽然我们只在激光雷达点云上训练,但为了便于解释,我们从BEV和图像角度可视化了3D边界框预测。图3显示了我们的检测结果,带有紧密定向的3D边界框。对汽车的预测特别准确,常见的失效模式包括对困难样本(部分遮挡或远处物体)的假阴性或对类似类别(面包车或有轨电车)的假阳性。检测行人和骑车人更具挑战性,并导致一些有趣的失效模式。行人和骑车人通常被误分类(参见图4a中的标准示例,以及图4d中的行人和桌子的组合被分类为骑车人)。此外,行人很容易与狭窄的垂直环境特征相混淆,如电杆或树干(见图4b)。在某些情况下,我们正确地检测到真值注释中缺少的目标(见图4c)。

6. 实时推断

  如我们的结果(表1和图5)所示,PointPillars代表了推理运行时方面的显著改进。在本节中,我们将分解运行时,并考虑实现这种加速的不同设计选择。我们专注于汽车网络,但行人和自行车网络的运行速度相似,因为较小的范围抵消了主干以较低步幅运行的影响。所有运行时间都是在带有Intel i7 CPU和1080ti GPU的电脑上测量的。

  主要推理步骤如下。首先,基于图像中的范围和可见性加载并过滤点云(1.4ms)。然后,将点组织成柱状并进行装饰(2.7毫秒)。接下来,PointPillar张量被上传到GPU(2.9毫秒),编码(1.3毫秒),散射到伪图像(0.1毫秒),并由主干和检测头处理(7.7毫秒)。最后,NMS应用于CPU(0.1ms),总运行时间为16.2ms。

编码。启用此运行时的关键设计是PointPilar编码。例如,1.3毫秒时,它比VoxelNet编码器(190毫秒)快2个数量级[31]。最近,SECOND提出了VoxelNet编码器的一个更快的稀疏版本,总网络运行时间为50毫秒。他们没有提供运行时间分析,但由于其架构的其余部分与我们的相似,这表明编码器仍然明显较慢;在其开源实现(https://github.com/traveller59/second.pytorch/)中,编码器需要48ms。

纤细设计。与[31]建议的2个连续的PointNet相比,我们在编码器中选择了单个PointNet。这将我们的PyTorch运行时缩短了2.5毫秒。第一个块的维数也降低了64,以匹配编码器输出大小,这将运行时间减少了4.5毫秒。最后,我们通过将上采样特征层的输出维数减半至128,又节省了3.9毫秒。这些变化都不会影响检测性能。

TensorRT。虽然我们的所有实验都在PyTorch[20]中进行,但用于编码、主干和检测头的最终GPU内核是使用NVIDIA TensorRT构建的,这是一个用于优化GPU推理的库。切换到TensorRT后,PyTorch管道的速度提高了45.5%,该管道的频率为42.4 Hz。

速度的需要。如图5所示,PointPillars可以达到105Hz,但精度损失有限。虽然有人认为这种运行时间是过度的,因为激光雷达通常以20Hz的频率工作,但有两件关键的事情需要记住。首先,由于人工制作的KITTI真值注释,仅使用投影到正面图像中的激光雷达点,这仅占整个点云的10%。然而,操作AV需要查看整个环境并处理完整的点云,从而显著增加运行时的所有方面。其次,文献中的定时测量通常在高功率桌面GPU上进行。然而,可操作的AV可以替代地使用嵌入式GPU或嵌入式计算,其可能不具有相同的吞吐量。

7. 消融研究

  在本节中,我们提供了消融研究,并讨论了与近期文献相比的设计选择。

7.1 空间分辨率

  通过改变空间分仓的大小,可以实现速度和精度之间的权衡。较小的柱子允许更精细的定位并导致更多的特征,而较大的柱子由于较少的非空支柱(加快编码器)和较小的伪图像(加快CNN主干)而更快。为了量化这种影响,我们对网格大小进行了扫描。从图5中可以明显看出,较大的分仓大小会导致更快的网络;在0.282时,我们以与先前方法类似的性能实现了105Hz。性能下降主要是由于行人和骑车人类别,而汽车性能在不同尺寸的分仓中保持稳定。

图5. 行人、自行车和汽车在KITTI[5]验证集的BEV检测性能(mAP)与速度(Hz)。蓝色圆圈表示仅使用激光雷达的方法,红色方框表示使用激光雷达和视觉的方法。通过使用{0.122、0.162、0.22、0.242、0.282}m2的柱子网格尺寸实现不同的操作点。最大柱子数量随分辨率而变化,分别设置为16000、12000、12000、8000、8000。

7.2 每个框数据增强

  VoxelNet[31]和SECOND[28]都建议对每个框进行大量增强。然而,在我们的实验中,最小的框增强效果更好。特别是,随着框的增加,行人的检测性能显著下降。我们的假设是,真值采样的引入减少了大量逐框增强的需求。

7.3 点装饰

  在激光雷达点装饰步骤中,我们执行VoxelNet[31]装饰以及两个附加装饰:xp和yp,这是从柱子x,y中心的x和y偏移。这些额外的装饰物增加了0.5mAP的最终检测性能,并提供了更可重复的实验。

7.4 编码

  为了单独评估所提出的PointPillar编码的影响,我们在SECOND的官方代码库中实现了几个编码器[28]。有关每种编码的详细信息,请参阅原始文件。

表4. 编码器性能评估。为了公平地比较编码器,使用了相同的网络架构和训练程序,并且在实验之间只改变了编码器和xy分辨率。性能以KITTI验证集上的BEV mAP来衡量。学习编码器明显优于固定编码器,尤其是在较大分辨率下。

  如表4所示,学习特征编码在所有分辨率上都严格优于固定编码器。这是预期的,因为大多数成功的深度学习架构都是端到端训练的。此外,由于每个柱子中的点云更大,固定编码器的表达能力的不足被加剧,差异随着更大的分仓尺寸而增加。在学习的编码器中,VoxelNet略强于PointPillars。然而,这并不是一个公平的比较,因为VoxelNet编码器的速度慢了几个数量级,参数也多了几个数量。当对类似的推断时间进行比较时,很明显PointPillars提供了更好的操作点(图5)。

  表4有一些奇怪的方面。首先,尽管原始论文中指出,他们的编码器仅适用于汽车,但我们发现MV3D[2]和PIXOR[30]编码器可以很好地学习行人和自行车。其次,我们的实现大大超过了各自发布的结果(1− 10mAP)。虽然这不是苹果对苹果的比较,因为我们只使用了各自的编码器,而不是全网络架构,但性能差异是值得注意的。我们看到了几个潜在的原因。对于VoxelNet和SECOND,我们怀疑性能的提高来自于第7.2节中讨论的改进的数据增强超参数。在固定编码器中,大约一半的性能提高可以通过引入真值数据库采样来解释[28],我们发现这将mAP提高了约3%。剩余的差异可能是由于多个超参数的组合,包括网络设计(层数、层类型、是否使用特征金字塔);锚框设计(或缺乏锚框[30]);相对于3D和角度的定位损失;分类损失;优化器选择(SGD vs Adam,批量大小);以及更多。然而,需要更仔细的研究来隔离每个原因和影响。

8. 结论

  在本文中,我们介绍了PointPillars,这是一种新型的深度网络和编码器,可以在激光雷达点云上进行端到端训练。我们证明,在KITTI挑战中,PointPillars以更快的速度提供更高的检测性能(BEV和3D上的mAP),从而主导了所有现有方法。我们的结果表明,PointPillars为激光雷达的3D物体检测提供了迄今为止最好的架构。

References

[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. Vote3deep: Fast object detection in 3d point clouds using efficient convolutional neural networks. In ICRA, 2017. 2
[4] M. Everingham, L. Van 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´ar, 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¨uttel, and H.-J. W¨unsche. 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. Vehicle 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´ar. 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´ar, 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. Voxelnet: End-to-end learning for point cloud based 3d object detection. In CVPR, 2018. 1, 2, 3, 4, 5, 6, 7, 8

A. PointPillars 代码实现细节补充说明

A.1 算法特点

开源、运行快、工业界能应用

A.2 模型结构

PointPillars 主要由3部分组成:
(看英文原文能更好的理解算法细节,所以就不翻译了)

  • Pillar Feature Net:it uses a non-linear MLP and MaxPool operation to extract features to construct a pseudo image of size (H, W, C), with C representing the feature dimension.

  • Backbone (2D CNN):given pseudo image generated by Pillar Feature Net as input, it uses stacked CNN layers to produce final feature represention which aggregates features from multiple stages.

  • Detection Head (SSD): it is used to make predictions of class, bounding box and direction on the features generated by the CNN backbone, and aggregates them together to generate final predictions.

A.2.1 Pillar Feature Net

Given a sample of point clouds , Pillar Feature Net (PFN for short) will build special pillars per unit of X-Y grid (it doesn’t do partition on Z direction). Firstly, every point in point clouds will be encoded manually to a feature of 9 dimension (detail of the process is in Data Preprocessing). Then, PFN will use a MLP, a 16 channel linear layer with BN and ReLU for example, to convert the 9-dim feature to a 16-dim feature. After that, PFN adopts a MaxPool operation for each pillar to aggregate the 16-dim features of all the points in it to get the maximum response in each dimension, getting a 16-dim feature to represent each pillar.

Finally, the pillar features are scattered back to their spatial locations in X-Y plane, and a tensor of size HxWx16 is created, which is also called Pseudo image. The pseudo image will be used as input to the following backbone.

A.2.2 Backbone (2D CNN)

PointPillars uses a VGG-like structure to construct the 2D CNN backbone. By stacking several convolutional layers, the backbone will produce feature maps with different solution in each stage. Feature maps from several stages will be fused together to create a final feature representation. During feature fusion process, Deconv Layer is introduced to upsample high level feature maps, which have smaller resolutions. After deconvolution, all the ouptut feature maps with same resolution can be concatenated together to form a integrated tensor for final prediction.

A.2.3 Detection Head (SSD)

PointPillars uses SSD as its detection head, which is an anchor-based single stage detection pipeline. 3 prediction branches are introduced to do 3d object detection:

  1. category classification branch
  2. bounding-box regression branch
  3. direction classification branch

During inference, the outputs from these 3 branches will generate predictions based on pre-set anchors. After applying Non-maximum Suppression, the 3d bouding boxes with high confidence are selected out as the final detection results.

A.3 数据预处理

  • Since the point cloud is quite different from image data in disorder and sparsity, the preprocess method plays a crucial part in 3D detection based on point cloud. The key idea of VoxelNet, SECOND, PointPillars and other algorithms alike is voxelization. Voxelization discretize 3d space into voxels and assign points to one voxel if they are in it, thus arranging the disordered points by ordered voxels. And by droping the empty voxels, the sparsity can be greatly reduced.
  • In particular, PointPillars does not discretize space along height orientation, resulting in pillars go across from bottom to top. In detail, we define pillar size as (0.25, 0.25) in space range (0, -40, 80, 40), resulting in 320x320x1 pillars. For every pillar, we randomly sample points in it with maximum number set at 40. Each point has attribute (x, y, z, r), with (x, y, z) representing its location and r for reflectivity. To enrich the information of points, we derive (xc, yc, zc) and (xp, yp) from original(x, y, z), in which c subscript denotes distance to the arithmetic mean of all points in the pillar and p subscript denotes the offset from the geometry center of the pillar.

A.4 数据增强

Since the point cloud data is expansive to get and annotate, the volume of trainset is limited. Proper data augmentation methods help a lot to improve model performance.

  • Database sampling
    One way to compensate for limited trainset and limited object is to oversample objects. Before training, we use the 3d box annotation to crop objects out of all the training samples and store them as database. In training, we randomly take a fixed amount of objects out of database and paste them into training sample. If the pasted object is in confict with the existing objects in the sample, it will be abandoned. And during pasting, geometry transformations can be applied to each object from database.

  • Geometry transformations
    Common techniques for 2d geometry augmentation can also be used in 3d case. On object level, we apply random rotation and tranlation to each object in the sample. And on sample level, we apply global flip, rotation, scaling and translation to the whole point cloud.

  • Shuffling
    Since the points are disordered and we can not sample all the points in consideration of computation efficiency under our Voxelization policy, we may drop some points in every sample. To avoid overfitting, we shuffle the points before Voxelization.

A.5 损失函数和评价指标

  • Loss For 3d object detection, we need to predict the label, location, shape and direction right. To regress label efficiently, PointPillars uses FocalLoss to address the problem of extreme foreground-background class imbalance. For the positive anchors, SmoothL1 Loss is adopted to regress location and shape, and CrossEntropy Loss to regress direction. To balance these three losses, coeffience of 1.0 for label loss, 2.0 for bbox regression loss and 0.2 for direction loss is applied.

  • Trick in building Loss Followting the traditional method in regressing bounding box, logarithmic value of the relative distance and size is used as regression target to make learning procedure more controllable and stable. And an angle loss regression task from SECOND is introduced to improve the orientation estimation performance, and make the model perform well on IoU-based metric, which is independent of box orientation.

  • Metric KITTI Metric evaluates 3D object detection performance using the PASCAL criteria also used for 2D object detection. For cars it requires an 3D bounding box overlap of 70%, while for pedestrians and cyclists it requires a 3D bounding box overlap of 50%. Difficulties are defined as follows:

  • Easy: Min. bounding box height: 40 Px, Max. occlusion level: Fully visible, Max. truncation: 15 %

  • Moderate: Min. bounding box height: 25 Px, Max. occlusion level: Partly occluded, Max. truncation: 30 %

  • Hard: Min. bounding box height: 25 Px, Max. occlusion level: Difficult to see, Max. truncation: 50 %

点云 3D 目标检测 - PointPillars(CVPR 2019)相关推荐

  1. 激光点云3D目标检测算法之PointPillars

    前言 <PointPillars: Fast Encoders for Object Detection from Point Clouds>是一篇发表在CVPR 2019上关于激光点云3 ...

  2. 点云 3D 目标检测 - CenterPoint:Center-based 3D Object Detection and Tracking(CVPR 2021)

    点云 3D 目标检测 - CenterPoint: Center-based 3D Object Detection and Tracking - 基于中心的3D目标检测与跟踪(CVPR 2021) ...

  3. 点云 3D 目标检测 - VoxelNet(CVPR 2018)

    点云 3D 目标检测 - VoxelNet(CVPR 2018) 摘要 1. 引言 1.1 相关工作 1.2 贡献 2. VoxelNet 2.1 VoxelNet架构 2.1.1 特征学习网络 2. ...

  4. 点云 3D 目标检测 - RangeDet(ICCV 2021)

    点云 3D 目标检测 - RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection - 基于LiDAR的3D目标检测 ...

  5. AAAI 2020 Oral论文--TANet:提升点云3D目标检测的稳健性

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 来自华中科技大学白翔教授组的刘哲的 AAAI Oral 论文<TANet: Ro ...

  6. AAAI 2020 Oral | 华科提出TANet:提升点云3D目标检测的稳健性

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转自机器之心. 机器之心发布 机器之心编辑部 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官 ...

  7. 点云 3D 目标检测 - SECOND(Sensors 2018)

    点云 3D 目标检测 - SECOND: Sparsely Embedded Convolutional Detection - 稀疏嵌入卷积检测(Sensors 2018) 摘要 1. 引言 2. ...

  8. OpenPCDet:点云3D目标检测开源库

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/152120636 随着自动驾驶与机器人技术的不断发展,基于点云表征的3D目标检测领域在近年来取得了 ...

  9. 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦

    前言 本文主要是介绍了在跑通CIA-SSD系列算法过程中遇到的一些bug,下面是对CIASSD算法的一个简单的介绍. CIA-SSD其基本思想是校准单步目标检测中分类和定位两个任务,提出Confide ...

最新文章

  1. 图片对服务器性能,关于适用base64对图片进行编码在服务器上性能的相关讨论
  2. C语言bound函数,C/C++-STL中lower_bound与upper_bound的用法以及cmp函数
  3. 一个特殊的事件绑定程序(通用于各种浏览器)
  4. H3C nat转换实验
  5. Nginx防盗链、访问控制、解析php相关配置、Nginx代理
  6. 厦门理工学院android用药软件文献综述,厦门理工学院毕业论文规范.doc
  7. 【单例模式、多例模式、枚举、工厂模式】
  8. 股票学习-量柱和k线-第四天
  9. Udacity 无人驾驶仿真环境搭建实现自动驾驶小车
  10. 自然语言处理面试基础
  11. 上午写了一段代码,下午就被开除了。。。
  12. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法
  13. C++ if条件语句用法
  14. mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志
  15. dreamweaver CS5安装
  16. [译] Erlang 之禅第一部分
  17. 模式识别更接近计算机还是自动化,2020中科院自动化所考研初试经验
  18. 变分自编码器的推导,VAE的推导,ELBO|证据下界|训练方法
  19. 计算机课高数怎么过,我是大一新鸟,学软件,想向大虾们讨教几手,我有高数,英语,法律.计算机,4门课,我该怎么学!介绍越详细越好,...
  20. Java里的正无穷和负无穷

热门文章

  1. dopra linux 补全shell,HS8546V5光猫补全Shell 改华为原厂界面
  2. c语言查询学号(字符串),c语言短学期
  3. 印章与印鉴的区别_篆刻与印章到底有什么区别?
  4. Hadoop 命令操作大全
  5. Python AI 换脸,宋小宝都能换脸刘亦菲,你的网恋对象不知道有多可怕!
  6. 微信之父张小龙最新公开课曝光8个互联网新思维:下一个十年将非常有想象力...
  7. 国外计算机cpu排行,电脑处理器排行榜_电脑处理器排行榜最新2020
  8. HTM+CSS实现立方体图片旋转展示效果
  9. php字符串函数处理emoji,PHP中处理内容含有emoji表情的几种方式
  10. 举例在移动HTML5 UI框架有那些