史上最全综述 | 3D目标检测算法汇总

我们对3D目标检测方法进行了性能分析,并总结了多年来的研究趋势,展望了该领域的未来方向。

1摘要

2简述

自动驾驶,旨在使车辆智能地感知周围环境,并在很少或无需人力的情况下安全行驶,近年来取得了快速发展。自动驾驶技术已广泛应用于自动驾驶卡车、无人驾驶出租车、送货机器人等多种场景,能够减少人为错误,提高道路安全。作为自动驾驶系统的核心组成部分,车辆感知通过各种传感器输入帮助自动驾驶汽车了解周围环境。感知系统的输入一般是多模态数据(来自摄像头的图像数据、来自LiDAR的点云、高精地图等),并且会预测道路上关键要素的几何和语义信息。高质量的感知结果可作为轨迹预测和路径规划等后续步骤的可靠依据。

为了全面了解驾驶环境,感知系统涉及到许多视觉任务,例如目标检测和跟踪、车道线检测、语义和实例分割等。在这些感知任务中,3D目标检测是车辆感知系统中最不可或缺的任务之一。3D目标检测旨在预测3D空间中关键目标的位置、大小和类别,例如机动车、行人、骑自行车的人等。与仅在图像上生成2D边界框并忽略目标与本车的实际距离信息的2D目标检测相比,3D目标检测侧重于对真实世界3D坐标系中目标的定位和识别。3D目标检测在现实世界坐标中预测的几何信息可以直接用于测量本车与关键目标之间的距离,并进一步帮助规划行驶路线和避免碰撞。

这项工作的主要贡献可以总结如下:

  1. 我们从不同的角度全面回顾了3D目标检测方法,包括来自不同传感器输入的检测(基于LiDAR、基于摄像头和多模态)、时间序列检测、标签高效检测、以及3D目标检测在驾驶系统中的应用。
  2. 我们从结构和层次上总结了3D目标检测方法,对这些方法进行了系统分析,并为不同类别方法的潜力和挑战提供了有价值的见解。
  3. 对3D目标检测方法的综合性能和速度进行分析,确定多年来的研究趋势,并为3D目标检测的未来方向提供深刻的见解。

3背景

3D目标检测是什么?

1、定义

3D目标检测是通过输入传感器数据,预测3D目标的属性信息的任务。如何表示3D目标的属性信息是关键,因为后续的预测和规划需要这些信息。大部分情况下,3D目标被定义为一个立方体,(x,y,z)是立方体的中心坐标,l,w,h是长宽高信息,delta是航向角,比如立方体在地平面的偏航角,class是3D目标的类别。vx、vy描述3D目标在地面上沿x轴和y轴方向的速度。在工业应用中,一个3D目标的参数可以进一步简化为鸟瞰图上一个长方体的4个角位置。

2、传感器输入

许多类型的传感器都可以为3D目标检测提供原始数据,相机和LiDAR(激光雷达)传感器是两种最常采用的传感器类型。相机价格便宜且易于使用,并且可以从某个角度捕捉场景信息。相机产生图像W×H×3用于3D目标检测,其中W和H是一幅图像的宽高,每个像素有3个RGB通道。尽管价格便宜,但相机在用于3D目标检测方面存在内在限制。首先,相机只捕捉外观信息,不能直接获取场景的3D结构信息。另一方面,3D目标检测通常需要在3D空间中进行准确定位,而从图像估计的3D信息(例如深度)通常具有较大的误差。此外,基于图像的检测很容易受到极端天气和时间条件的影响。在夜间或雾天从图像中检测目标比在晴天检测要困难得多,这样的自动驾驶系统无法保证鲁棒性。

作为替代解决方案,LiDAR传感器可以通过发射一束激光束,然后测量其反射信息来获得场景的细粒度3D结构信息。一个LiDAR传感器在一个扫描周期内发射光束并进行多次测量可以产生一个深度图像,每个深度图的像素有3个通道,分别为球坐标系中的深度r、方位角α和倾角φ。深度图像是激光雷达传感器获取的原始数据格式,可以通过将球坐标转换为笛卡尔坐标进一步转换为点云。一个点云可以表示为N×3,其中N表示一个场景中的点数,每个点有3个xyz坐标通道。附加功能,例如反射强度,可以附加到每个点或深度图像素。深度图像和点云都包含由LiDAR传感器直接获取的准确3D信息。因此,与相机相比,LiDAR传感器更适合检测3D空间中的目标,并且LiDAR传感器也更不易受时间和天气变化的影响。然而,LiDAR传感器比摄像头贵得多,这限制了在驾驶场景中的大规模应用。3D目标检测图解,见下图:

3、与2D目标检测的比较

旨在在图像上生成2D边界框的2D目标检测是计算机视觉中的一个基本问题。3D目标检测方法借鉴了2D目标检测方法的许多设计范式:proposal generation and refinement、anchors、NMS 等。然而,从多方面来看,3D目标检测方法并不是2D目标检测方法对3D空间的简单适配。

  1. 3D目标检测方法必须处理多样化的数据。点云检测需要新的算子和 络来处理不规则的点数据,而点云和图像的检测需要特殊的融合机制。
  2. 3D目标检测方法通常利用不同的投影视图来生成目标预测结果。与从透视图检测目标的2D目标检测方法相反,3D方法必须考虑不同的视图来检测3D目标,例如鸟瞰图、点视图、柱面视图等。
  3. 3D目标检测对目标在3D空间的准确定位有很高的要求。分米级的定位误差可能导致对行人和骑自行车的人等小目标的检测失败,而在2D目标检测中,几个像素的定位误差可能仍然保持较高的IoU指标(预测值和真值的IoU)。因此,不论是利用点云还是图像进行3D目标检测,准确的3D几何信息都是必不可少的。

4、与室内3D目标检测对比

室内3D目标检测也是3D目标检测的一个分支,室内数据集比如SUN RGB-D [247],利用RGB-D和3D标注信息重建房间结构,包括门、窗、床、椅子等。室内场景中的3D目标检测也是基于点云或图像。然而,与室内3D目标检测相比,驾驶场景中存在独特的挑战。

  1. 自动驾驶场景的检测范围远大于室内场景。驾驶场景中的3D目标检测通常需要预测很大范围内的3D目标,例如Waymo[250]中为150m×150m×6m,而室内3D目标检测通常以房间为单位,而其中[54]大多数单人房间小于10m×10m×3m。那些在室内场景中工作的时间复杂度高的方法在驾驶场景中可能无法表现出好的适应能力。
  2. LiDAR和RGB-D传感器的点云分布不同。在室内场景中,点在扫描表面上分布相对均匀,大多数3D目标在其表面上可以接收到足够数量的点。而在驾驶场景中,大多数点落在LiDAR传感器附近,而那些远离传感器的3D目标仅接收到少量点。因此,驾驶场景中的方法特别需要处理3D目标的各种点云密度,并准确检测那些遥远和稀疏的目标。
  3. 驾驶场景中的检测对推理延迟有特殊要求。驾驶场景中的感知必须是实时的,以避免事故。因此,这些方法需要及时高效,否则它们将无法落地。

数据集

自动驾驶3D目标检测相关数据集较多,具体见下表。主要的数据集建立需要继续干以下四件事:

  1. 增大数据规模。
  2. 增加数据多样性,不只有白天夜晚,还要包括阴天、雨天、雪天、雾天等。
  3. 增加标注类别,除了常用的机动车、行人、非机动车等,还应包括动物,路上的障碍物等。
  4. 增加多模态数据,不只有点云和图像数据,还有高精地图、雷达数据、远程激光雷达、热成像数据等。

未来的数据集应该包括感知、预测、规划、建图等一整套数据,这样可以为端到端的自动驾驶系统服务,而不仅仅是考虑一个3D目标检测任务。

评价标准

针对3D目标检测的评价,一种是将2D任务的AP指标扩展到3D,比如KITTI就包括 AP-3D、AP-BEV指标,分别用到预测值与真值的3D-IoU、BEV-IoU来衡量。其它比如基于中心距离的匹配,或者匈牙利匹配等。另一种则通过下游任务来衡量,只有对下游任务(运动规划)有帮助的检测方法,才能在实际应用中确保驾驶安全。包括PKL[230]和SDE[56]等工作。

不同评价指标的利弊。基于AP的评价指标[80,15,250]自然继承了2D检测的优势。然而,这些指标忽略了检测对驾驶安全的影响,而这在现实应用中至关重要。例如,在AP计算中,本车附近的目标漏检和本车远一点的目标漏检可能都只是一个漏检,但在实际应用中,近处的目标漏检实质上比远处的目标漏检更危险。

因此,从安全驾驶的角度来看,基于AP的指标可能不是最优选择。PKL[203]和SDE[56]通过考虑下游任务中检测的影响,部分解决了这个问题,但在对这些影响建模时将引入额外的挑战。PKL[203]需要一个预先训练的运动规划器来评估检测性能,但预先训练的规划器也有固有误差,可能会使评估过程不准确。SDE[56]需要重构目标边界,这通常是复杂和具有挑战性的。

4基于LiDAR的3D目标检测

激光雷达数据主要包括点云、深度图数据等,以下时间轴将较为经典的算法做了个列举。

3D目标检测的数据表示

点云数据和深度图数据与一般的图像不同。点云是稀疏、不规则的,需要设计特殊模型提取特征。而深度图是密集紧凑,深度像素存的是3D信息,而不是RGB值。这些都是需要打破原先的常规卷积 络的固有思维,而且自动驾驶需要检测目标的实时性,推理要快,如何设计一个在点云和深度图上推理更快的模型也是一个挑战。

1、基于点的3D目标检测

基于点的目标检测成功在点云上应用深度学习方法,提出了一系列框架,可以直接从原始点数据来预测3D目标。将点云通过基于点的主干 络,通过点云算子来提取点云特征,基于下采样的点和特征预测3D框。基于点的3D目标检测器主要组成部分为:点云采样和特征学习。整体流程示意图和代表性工作见下图和表。

点云采样。PointNet++[208]的FPS在基于点的检测器中被广泛采用,这种检测器从原始点集中依次选择最远处的点。PointRCNN[234]是一项开创性的工作,它采用FPS逐步下采样输入的点云,并从下采样点中生成3D候选。类似的设计范式在随后的许多工作中也被采用,并进行了分割引导滤波[318]、特征空间抽样[321]、随机抽样[189]等改进。

特征学习。上下文点首先用一个预定义的查询球半径进行选择,然后上下文点和特征经过多层感知机和max-pooling,得到新的特征。其它点云操作,包括图操作、注意力操作、Transformer等。

基于点的3D目标检测器受制于特征学习中采用的上下文点数量和上下文半径。增加上下文点数量可以获得更强的表达能力,但会增加内存,在球查询中,上下文半径太小,会造成上下文信息不足,半径太大,造成3D细粒度信息丢失。

对于大部分的基于点的3D目标检测器,推理时间上的瓶颈是点云采样。随机均匀采样因为可以并行,效率最高,但激光雷达扫描点分布不均匀,随机均匀采样会对点云密度高的地方过采样,而稀疏的地方欠采样。最远点采样及其变体通过从已有的点集中依次选择最远点获得更加均匀的采样结果,但其不能并行,耗时较大,较难做到实时。

2、基于 格的3D目标检测

基于 格的3D目标检测器首先将点云栅格化为离散的 格表示,即体素、柱体和鸟瞰视图(BEV)特征图。然后应用传统的2D卷积神经 络或3D稀疏神经 络提取特征。最后,可以从BEV 格中检测出3D目标。下图展示了基于 格的3D目标检测的示例,下表给出了基于 格的检测器的分类。 格检测有两个基本组成部分:基于 格的表示和基于 格的神经 络。

基于 格的表示。目前有3种主要的 格表示类型:体素、柱体和BEV特征图。

体素。体素是3D立方体,体素细胞内包含点。点云可以很容易地通过体素化转化为体素。由于点云分布稀疏,3D空间中的大部分体素细胞都是空的,不包含点。在实际应用中,只有那些非空体素被存储并用于特征提取。VoxelNet[359]是一项利用稀疏体素 格的开创性工作,提出了一种新的体素特征编码(VFE)层,从体素细胞内的点提取特征。

此外,还有两类方法试图改进用于3D目标检测的体素表示:

  1. 多视图体素。一些方法从不同的视角提出了一种动态体素化和融合方案,例如从鸟瞰图和透视图[360],从圆柱形和球形视图[34],从深度视图[59]等。
  2. 多尺度体素。一些论文生成不同尺度的体素[323]或使用可重构体素。

柱体。柱体可以被视为特殊的体素,其中体素的大小在垂直方向上是无限的。通过PointNet将点聚集成柱状特征[207],再将其分散回去,构建二维BEV图像进行特征提取。PointPillars[117]是一个开创性的工作,介绍了柱体表示,随后的是[283,68]。

BEV特征图。鸟瞰特征图是一种密集的二维表示,其中每个像素对应一个特定的区域,并对该区域内的点信息进行编码。BEV特征图可以由体素和柱体投影到鸟瞰图中获得,也可以通过汇总像素区域内的点统计数据,直接从原始点云中获得。常用的统计数据包括二进制占用率[314,313,2]和局部点云高度和密度[40,10,342,3,245,346,8,119]。

基于 格的神经 络。目前主要有两种基于 格的 络:用于BEV特征图和柱体的2D卷积神经 络,以及用于体素的3D稀疏神经 络。

与BEV特征图和柱体2D表示相比,体素包含更多结构化的3D信息。此外,可以通过3D稀疏 络学习深度体素特征。但是,3D神经 络会带来额外的时间和内存成本。BEV特征图是最有效的 格表示,它直接将点云投影到2D伪图像中,而无需专门的3D算子,如稀疏卷积或柱体编码。2D检测方法也可以在BEV特征图上无缝应用,无需太多修改。

基于BEV的检测方法通常可以获得高效率和实时推理速度。然而,简单地汇总像素区域内的点统计信息会丢失太多的3D信息,与基于体素的检测相比,这会导致检测结果不太准确。

基于柱体的检测方法利用PointNet对柱体单元内的3D点信息进行编码,然后将特征分散回2D伪图像中进行有效检测,从而平衡3D目标检测的效果和效率。

选择合适大小的 格单元是所有基于 格的方法都必须面对的关键问题。通过将连续点坐标转换为离散 格索引, 格表示本质上是点云的离散形式。在转换过程中不可避免地会丢失一些3D信息,其效果很大程度上取决于 格单元的大小: 格小,分辨率高,可以保持更细粒度的细节,对于准确检测3D目标至关重要。然而,减小 格单元又会导致2D 格表示(如BEV特征图或柱体)的内存消耗呈二次方增长。至于像体素这样的3D 格表示,问题可能会变得更加严重。因此,如何平衡更小 格尺寸带来的效果和内存增加影响效率,仍然是所有基于 格的3D目标检测方法的一个挑战。

3、基于Point-Voxel的3D目标检测方法

基于点-体素的方法采用了一种混合架构,利用点和体素进行3D目标检测。主要分为两类:单阶段检测框架和两阶段检测框架。下图显示了这两个类别的示例及分类:

单阶段基于点-体素的3D目标检测器通过骨干 络中的点-体素和体素-点的变换来连接点和体素的特征。点包含细粒度的几何信息,体素计算效率高,在特征提取阶段将它们结合在一起更加有利。代表性工作包括:PVCNN、SPVNAS、SA-SSD、PVGNet等。

两阶段的基于点-体素的3D目标检测器,在第一阶段,使用基于体素的检测器来生成一组3D候选目标。在第二阶段,首先从输入点云中采样关键点,然后通过新的点算子对关键点进行进一步细化。代表工作包括:PV-RCNN、LiDAR R-CNN、Pyramid R-CNN、CT3D等等。

与纯体素检测方法相比,基于点-体素的3D目标检测方法在增加推理时间的同时,可以获得更好的检测精度。

4、基于Range的3D目标检测

Range图像是一种密集而紧凑的2D表示,其中每个像素包含3D深度信息,而不是RGB值。需要针对Range图设计模型和算子,并要选择合适的视图。

Range图是2D的,可以借鉴2D目标检测方法,比如LaserNet,还有一些借鉴了U-Net、RPN、R-CNN、FCN、FPN等。

Range图的像素包含的是距离信息,而非颜色值,因此传统的2D标准卷积算子无法完全适用,滑动窗口中的像素在3D空间中可能会相距很远。一些工作采用了新算子来有效地从Range像素中提取特征,包括深度扩张卷积[11]、图算子[26]和元核卷积[67]等。

Range图是从Range视图(Range View)中获取的,RangeView是点云的球面投影。

对于许多基于深度的方法[178,11,67,26]来说,直接从Range视图检测3D目标是很自然的。然而,从Range视图进行检测不可避免地会遇到球面投影所带来的遮挡和尺度变化问题。为了规避这些问题,许多方法尝试利用其他视图来预测3D目标,例如[219]中利用的圆柱形视图(CYV),其它方案尝试Range视图和鸟瞰视图(BEV)、点视图(PV)的组合。

Range视图由于可以借鉴2D卷积的优点,做特征提取比较好,但由于遮挡和尺度问题,直接在上面做检测效果不好,需要结合BEV来做检测,所以现在一般是Range图做特征提取,BEV上做检测。

3D目标检测的学习目标

3D目标检测的学习目标主要是针对小目标(相比检测范围,目标太小),另一方面是由于点云的稀疏性,如何准确估计其目标的中心和尺寸也是一个长期挑战。

1、Anchor-based方法

anchor是预定义的长方体,具有固定的形状,可以放置在3D空间中。3D目标可以基于正anchor进行预测,这些正anchor与GT的IoU最大。anchor-based的3D目标检测方法一般是从鸟瞰图上检测3D目标,将3D anchor放置在BEV特征图的每个 格单元上进行。3D anchor通常对于每个类别都有一个固定的尺寸,因为同一类别的目标有相似的大小。

anchor-based的损失函数包括了分类损失、回归损失、偏航角损失等。分类损失常用的是二值交叉熵、Focal loss,回归则是SmoothL1,航向角需要注意使用bin-based航向估计较好。除了这些单独的损失函数外,将整个3D目标作为整体去考虑,也有使用IoU loss的,再辅以corner loss,让3D目标的检测更加稳定。

下面是anchor-based方法的示意图和主要目标损失函数:

2、Anchor-free方法

anchor-free方法去掉了复杂的anchor设计阶段,可灵活应用于BEV、点视图和Range视图等。没有了anchor,就需要找其它正负样本分配方法。比如基于一些 格(BEV 格单元、体素、柱体)进行分配正负样本,比如PIXOR、CenterPoint等。还有基于点的分配策略,大部分都是先将前景点分割出来,在3D目标内或附近的作为正样本,并学习这些前景点。基于Range的分配主要是将Range像素在3D目标内的作为正样本,并且回归的时候不是以整个3D坐标系统为基础,而是以目标为中心的回归坐标系。DETR提出了一种集合到集合的分配方式,利用匈牙利算法预测结果自动分配到对应的GT。

anchor-free方法设计灵活,不引入其它先验,学习过程简化了很多,其中基于中心的方法[329]对小目标检测有较大潜力可挖。虽然优点不少,但不可否认,anchor-free方法如何选择合适的正样本来生成预测结果是个问题,相比于anchor-based中使用高IoU正样本,anchor-free可能会选到一些不好的正样本,造成预测结果出现偏差。

下面显示了anchor-free方法和一些里程碑方法。

3、利用辅助任务的3D目标检测

利用辅助任务来增强3D目标的空间特征,并能对3D目标检测提供一些隐性的指导。常用的辅助任务包括:语义分割、IoU分支预测、目标形状补全、部件识别。

语义分割。前景分割可以提供目标的位置隐含信息;利用语义上下文知识可以增强空间特征;语义分割可以作为预处理方法,过滤背景样本,提升3D检测效率。

IoU预测分支可以辅助校正目标的置信度,比如预测置信度可以用分类置信度和IoU值的乘积来表示。经过IoU分支的校正,更容易选择高质量的3D目标作为最终预测结果。

形状补全,因为点云具有稀疏性,远处的目标只能接收几个点,因此从稀疏点云中补全目标形状可以为后面的检测提供帮助。

识别目标内部的零部件有助于3D目标检测,部件可以揭示细粒度3D信息。

除此之外,还有一些比如场景流估计可以识别静态和动态目标,可以在点云序列中跟踪同一个3D目标,可以得到该目标更准确的估计。

5基于相机的3D目标检测

主要的基于相机的3D目标检测方案分为:单目3D、双目、多相机3D等,具体看下图的分类:

单目3D目标检测

本身从单目图像中检测3D空间的目标是一个病态问题,因为单目无法提供足够的3D信息,很难预测3D目标准确的位置信息。很多方法利用几何约束和形状先验从图像中推断深度信息,也是一种优化单目3D目标定位问题的思路。但是和激光雷达比,还是相差较远。

1、纯图像单目3D检测

受到2D检测方法的启发,单目3D目标检测最直接的解决方案是通过卷积神经 络从图像中直接回归3D框参数。直接回归的方法借鉴了2D检测 络架构的设计,可以端到端训练。这些方法可以分为单阶段、两阶段,或anchor-based/anchor-free方法。

基于anchor的方法主要预先设置好3D-anchor、2D-anchor、深度anchor,然后图像经过卷积 络后得到2D和3D的预测偏置,最终解码及转换过程如下所示:

anchor-free的方法也是通过2D卷积对图像进行处理,利用多个头去预测3D目标。具体包括一个分类头、一个关键点头预测粗粒度中心点、一个预测基于粗粒度中心点的偏置的头、预测深度的头、预测目标尺寸的头以及预测观测角的头。

两阶段单目检测方法通常将传统的两阶段2D检测体系扩展到3D目标检测。具体来说,在第一阶段利用2D检测器从输入图像生成2D目标框。然后在第二阶段,通过从2D ROI中预测3D目标参数,将2D框提升到3D空间。ROI-10D[168]扩展了传统的Faster RCNN[222],在第二阶段用一种新颖的头来预测3D目标参数。

基于纯图像的方法可以直接使用2D目标检测的最新进展,而且价格便宜,可以端到端训练,效率也很高。只是从单张图像预测深度比较困难。

下图及表展示了相关方法:

2、深度辅助的单目3D检测

声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

(0)
上一篇 2022年8月19日
下一篇 2022年8月19日

相关推荐