摘要
基于图像的3D目标检测是自动驾驶领域的一个基本问题,也是一个具有挑战性的问题,近年来受到了业界和学术界越来越多的关注。得益于深度学习技术的快速发展,基于图像的3D检测取得了显著的进展。特别是,从2015年到2021年,已经有超过200篇研究这个问题的著作,涵盖了广泛的理论、算法和应用。然而,到目前为止,还没有一个调查来收集和组织这方面的知识。本文首次对这一新兴的不断发展的研究领域进行了全面综述,总结了基于图像的3D检测最常用的流程,并对其各个组成部分进行了深入分析。此外,作者还提出了两个新的分类法,将最先进的方法组织成不同的类别,以期提供更多的现有方法的系统综述,并促进与未来作品的公平比较。在回顾迄今为止所取得的成就的同时,作者也分析了当前在该领域的挑战,并讨论了基于图像的3D目标检测的未来发展方向。
简介
自动驾驶有可能从根本上改变人们的生活,提高机动性,减少旅行时间、能源消耗和排放。因此,毫不奇怪,在过去的十年里,研究和工业界都在努力开发自动驾驶汽车。作为自动驾驶的关键技术之一,3D 目标检测已经受到了很多关注。特别是,最近,基于深度学习的3D 目标检测方法越来越受欢迎。根据输入数据是图像还是LiDAR信号(通常表示为点云) ,现有的3D目标检测方法可以大致分为两类。与基于激光雷达的方法相比,仅从图像中估计3D边界框的方法面临着更大的挑战,因为从2D输入数据中恢复3D信息是一个不适定的问题。然而,尽管存在这种固有的困难,在过去的六年中,基于图像的3D目标检测方法在计算机视觉(CV)领域得到了迅速发展。在这个领域的顶级会议和期刊上已经发表了超过80篇论文,在检测准确性和推理速度方面取得了一些突破。
在本文中,作者首次全面和结构化地综述了基于深度学习技术的基于图像的3D目标检测的最新进展。特别地,本调研总结了该领域以前的研究工作,从开拓性的方法,再到最新的方法。
本文的主要贡献可以归纳如下:
- 据作者所知,这是第一个基于图像的自动驾驶3D检测方法的综述研究工作。本文回顾了80多种基于图像的3D 检测器和200多种相关的研究工作。
- 作者对这个问题的关键方面进行了全面的回顾和深入的分析,包括数据集、评估指标、检测流程和技术细节。
- 作者提出了两种新的分类方法,目的是帮助读者更容易地获得这个新的和不断发展的研究领域的知识。
- 作者总结了基于图像的3D 检测的主要问题和未来的挑战,概述了一些潜在的研究方向。
任务
给定 RGB 图像和相应的相机参数,基于图像的3D目标检测的目标是对感兴趣的目标进行分类和定位。每个目标都由其类别和3D世界空间中的边界框表示。一般来说,3D边界框是通过它的位置[ x,y,z ] ,尺寸[ h,w,l ]和方向[ θ,φ,ψ ]相对于一个预定义的参考坐标系(例如记录数据的自车)来参数化的。在绝大多数自动驾驶情况下,只考虑绕Y轴的航向角θ (偏航角)。下图在2D图像平面和鸟瞰图上显示了一个示例结果。
虽然基于图像的3D 目标检测的一般问题可以如上所述,但值得一提的是:
- 除了类别和3D 边界框之外,一些基准还需要额外的预测,例如 KITTI 数据集的2D 边界框[5]和 nuScenes 数据集的速度/属性[6]。
- 虽然最初只提供图像和相机参数,但辅助数据(如多目,CAD模型,激光雷达信号等)的采用在这个领域是常见的。
数据集和评估
数据集
常用数据集见下表:
在这些数据集中,KITTI 3D [5]、nuScenes [6]和Waymo Open[11]是最常用的,极大地推动了3D检测的发展。
在过去十年的大部分时间里,KITTI 3D 是唯一支持开发基于图像的 3D 检测器的数据集。KITTI 3D 提供分辨率为 1280×384 像素的前视图像。2019 年引入了 nuScenes 和 Waymo Open数据集。在 nuScenes 数据集中,六个摄像头用于生成分辨率为 1600×900 像素的 360°视图。同样,Waymo Open 也使用 5 个同步摄像头进行 360°全景拍摄,图像分辨率为 1920×1280 像素。
KITTI 3D 数据集 是在德国卡尔斯鲁厄的白天和良好的天气条件下捕获的。它主要评估三个类别(汽车、行人和自行车)的目标,根据2D框的高度、遮挡和截断将它们分为三个难度级别。提供7481张训练图和7518张测试图。
nuScenes 数据集 包含在波士顿和新加坡拍摄的 1000 个 20 年代的场景。与 KITTI 3D 基准测试不同的是,这些场景是在一天中的不同时间(包括夜晚)和不同的天气条件下(例如雨天)捕获的。3D 检测任务有十个类别的目标,nuScenes 还为每个类别标注属性标签,例如汽车的移动或静止,有或没有骑手的自行车。这些属性可以看作是一个细粒度的类标签,并且在nuScenes benchmark中也考虑了属性识别的准确性。其分别提供28130帧、6019帧、6008帧用于训练、验证和测试(每帧6张图)。
Waymo Open 数据集 涵盖了 1150 个场景,分别在凤凰城、山景城和旧金山在多种天气条件下(包括夜间和雨天)拍摄。与 KITTI 3D 类似,Waymo Open 也根据每个 3D 边界框中包含的 LiDAR 点的数量为 3D 检测任务定义了两个难度级别。其基准中感兴趣的目标包括车辆、行人和骑自行车的人。其提供122200帧用于训练、30407帧用于验证、40077帧用于测试(每帧有5张图)。
评估指标
与 2D 目标检测相同,平均精度 (AP)构成了 3D目标检测中使用的主要评估指标。从其原始定义开始,每个数据集都应用了特定的修改,从而产生了特定于数据集的评估指标。在这里,作者首先回顾一下原始的 AP 指标,然后介绍其在最常用的基准测试中采用的变体,包括 KITTI3D、nuScenes 和 Waymo Open。
AP指标回顾
最常用的一种方法,即真值 A 与预测的3D 边界框 B 之间的交并比(IoU) ,定义为: IoU (A,B) = | A ∩ B | /| A ∪ B | 。
将匹配的IoU与一定的阈值进行比较,用来判断一个匹配预测是真正例(TP)还是假正例(FP)。然后,根据公式:r = TP/(TP + FN),p = TP/(TP + FP),其中 FN 表示假反例,可以从排序(通过置信度)检测结果计算召回和精度。精度可以看作是召回的函数,即 p (r)。此外,为了减少“摆动”对精度-召回曲线的影响,使用插值精度值计算 AP ,公式如下:
其中 R是预定义的召回位置集和 pinterp (r)是插值函数,定义为:
这意味着,不是在召回 r 处对实际观察到的精度值进行平均,而是采用大于或等于 r 的召回值的最大精度。
特殊的一些指标
KITTI 3D 基准: KITTI 3D 采用 AP 作为主要指标,并引入了一些修改。第一种方法是在3D空间中进行IoU的计算。此外,KITTI 3D 采纳了Simonelli等[30]的建议,将上面的传统AP指标的 R11 = {0,1/10,2/10,3/10,... ,1}替换为 R40 = {1/40,2/40,3/40,... ,1} ,这是一个更密集的抽样,去除了0的召回位置。
此外,由于目标的高度不像自动驾驶场景中的其他目标那么重要,鸟瞰(BEV)检测,在一些工作中也被称为3D 定位任务[31],[32],[33],可以被看作是3D 检测的替代方案。计算过程的主题,BEV AP,这项任务是相同的3D AP,但计算的 IoU 是在平面,而不是3D 空间。这个任务也包含在其他一些基准测试中,比如 Waymo Open [11]。此外,KITTI 3D 还提出了一种新的度量方法——平均方向相似度(AOS)来评估方向估计的精度。AOS 表示为:
方向相似性s(r)∈[0,1]定义为:
其中 D (r)表示在召回率r下的所有目标检测结果的集合,delta(i) θ 是检测的估计值和真值方向之间的角度差。为了惩罚对单个目标的多次检测,KITTI 3D 强制 δi=1,如果检测i已被分配到一个真值边界框,如果它没有被分配δi=0。请注意,所有 AP 指标都是针对每个难度级别和类别独立计算的。
Waymo Open Benchmark: Waymo Open 也采用了 AP 度量标准,只做了一个小小的修改: 用 R21 = {0,1/20,2/20,3/20,... ,1}代替 传统AP的R11。此外,考虑到精确的航向角预测对于自动驾驶至关重要,而 AP 指标没有航向的概念,Waymo Open 进一步提出了以航向加权的 Average Precision (APH)作为其主要指标。具体来说,APH 将航向信息整合到精度计算中。每个真正例是由定义为min (| θ-θ* | ,2π-| θ-θ* |)/π 的航向精度加权的,其中 θ 和 θ* 是预测的航向角和真值航向角,以弧度[-π,π ]为单位。值得注意的是,APH 联合评估3D检测和方向估计的性能,而 AOS 只是为方向估计而设计的。
nuScenes Benchmatk: nuScenes提供了一种新的AP评估方法,特别是,它与一定的距离阈值(例如2m) 内,使用平面上的2D 中心距离来匹配预测和真值,而不是直接引入IoU。此外,nuScenes 计算 AP 作为精确召回曲线下的归一化区域,其召回率和精确度均在10% 以上。最后,计算了匹配阈值 D = {0.5,1,2,4} m 和类集 C:
然而,这个度量标准只考虑了目标的定位,而忽略了其他方面的影响,比如维度和方向。为了弥补这一缺陷,nuScenes 还提出了一组TP 指标 ,用于分别使用所有真正例(在匹配过程中确定的中心距离 = 2m)来测量每个预测误差。所有五个 TP 指标都被设计为真正例,定义如下 :
- 平均平移误差(ATE)是2D平面上目标中心的欧氏距离(米为单位)。
- 平均尺度误差(ASE)是方向和平移对齐后的3D IoU 误差(1-IoU)。
- 平均方向误差(AOE)是预测值和真值之间最小的偏航角差(以弧度为单位)。
- 平均速度误差(AVE)是作为2D(以 m/s 为单位)速度差的 L2范数的绝对速度误差。
- 平均属性错误(AAE)定义为1减属性分类精度(1-acc)。
此外,对于每个 TP 度量,nuScenes 还计算所有目标类别的平均 TP 度量(mTP) :
其中 TPk 表示分类 c 的第k个TP 度量(例如 k = 1表示 ATE)。最后,为了将所有提到的指标集成到一个标量得分中,nuScenes 进一步提出了 nuScenes 检测得分(NDS) ,它结合了nuScenes 中定义的 mAP 和nuScenes 中定义的 mTPk:
框架
分类
作者将现有的基于图像的3D检测器分为两类:
- 基于2D特征的方法。这些方法首先从2D特征中估计图像平面中目标的2D位置(以及其他项目,如方向、深度等) ,然后将2D检测提升到3D空间中。在此基础上,这些方法也可以称为“基于结果提升的方法”。此外,由于这些方法通常与2D检测模型具有相似的结构,因此可以通过2D检测中常用的分类法(即基于区域的方法和单目方法)进一步对它们进行分类。
- 基于3D特征的方法。这些方法基于3D特征对目标进行预测,从而可以直接在3D空间中对目标进行定位。此外,根据如何获得3D 特征,这些方法可以进一步分为“基于特征提升的方法”和“基于数据提升的方法”。顾名思义,前者通过提升2D特征来获得3D特征,而后者直接从2D图像转换的3D数据中提取3D特征。
主流的一些基于图像的3D目标检测方法如下图所示:
基于2D特征的方法
第一类是“基于2D特征的方法”。给定输入图像,他们首先从2D 特征中估计2D 位置,方向和尺寸,然后从这些结果(和其他一些中间结果)恢复3D 位置。因此,这些方法也可以称为“基于结果提升的方法”。为了得到目标的3D位置[ x,y,z ] ,一个直观且常用的解决方案是使用 CNN 估计深度值,然后使用以下映射关系:
将2D投影提升到3D空间,其中(Cx,Cy)是中心点,f是焦距,(u,v)是目标的2D位置。还要注意的是,这些方法只需要目标中心的深度,这与需要密集深度图的方法不同,例如伪激光雷达[34]。此外,由于这些方法在总体框架上类似于2D检测器,为了更好地表示,作者将它们进一步分为两个子类: 基于区域的方法和单目方法。
基于区域的方法
基于区域的方法遵循在2D目标检测中R-CNN 系列的思想[35],[36],[37]。在这个框架中,从输入图像生成独立于类别的区域proposal后,通过 CNN 从这些区域提取特征[37] ,[38]。最后,R-CNN 使用这些特性来进一步完善proposal,并确定他们的类别标签。本文总结了基于区域的3D图像检测框架的新设计。
生成proposal: 与2D检测领域中常用的proposal生成方法[39],[40]不同,生成3D检测proposal的简单方法是在地面平面上平铺3D anchor(proposal的形状模板) ,然后将它们投影到图像平面上作为proposal。然而,这种设计通常会导致巨大的计算开销。为了减少搜索空间,Chen等[2],[1],[41]提出了开创性的Mono3D 和3DOP,分别使用基于单目和多目方法的领域特定先验(例如形状,高度,位置分布等)去除低置信度的proposal。此外,Qin等[42]提出了另一种方案,在2D前视图中估计一个目标置信度图,并且在后续步骤中只考虑具有高目标置信度的潜在anchor。总之,3DOP [1]和 Mono3D [2]使用几何先验计算方案的置信度,而Qin等[42]使用网络来预测置信度图。使用区域proposal网络(RPN)[37] ,检测器可以使用来自最后共享卷积层的特征而不是外部算法来生成2D proposal,这节省了大部分计算成本,并且大量基于图像的3D 检测器[43],[44] ,[45],[46],[30],[17],[47],[48],[49],[50],[42],[51],[52],[53],[54]采用了这种设计。
引入空间信息: Chen等[47]将 RPN 和 R-CNN 结合的设计扩展到多目3D检测。他们提出分别从左右两幅图像中提取特征,并利用融合特征生成proposal,预测最终结果。这种设计允许 CNN 隐式地从多目中学习视差/深度,并被以下基于多目的3D 检测器所采用[50],[55],[53]。同样为了提供深度信息,Chen[45]提出了另一种方案,多融合单目3D 检测。具体而言,他们首先使用现成的深度估计器[56],[57]为输入图像生成深度图,然后为 RGB图和深度图设计具有多种信息融合策略的基于区域的检测器。值得注意的是,为单目图像提供深度提示的策略是由几个工作[58],[34],[33],[59],[60],[61],[62],[34],[63],[64],[65]。然而,Stereo R-CNN [47]和 Multi-Fusion [45]在高级范式中是相似的,因为它们都采用基于区域的框架并引入另一个图像(或地图)来提供空间线索。
Single-Shot 方法
Single-Shot 目标检测器直接预测类概率并从每个特征位置回归3D 框的其他属性。因此,这些方法通常比基于区域的方法具有更快的推理速度,这在自动驾驶的情况下是至关重要的。在Single-Shot 方法中只使用 CNN 层也促进了它们在不同硬件架构上的部署。此外,相关文献[66],[18],[67],[21]表明,这些Single-Shot 检测器也可以取得良好的性能。基于以上原因,近年来许多方法都采用了这一框架。目前,在基于图像的3D检测中有两种Single-Shot 原型。首先是anchor-based的,由[68]提出。特别是,这个检测器本质上是一个定制的 RPN 单目3D 检测,它为给定的图像生成2D anchor和3D anchor。与类别无关的2D anchor不同,3D anchor的形状通常与其语义标签有很强的相关性,例如,形状为“1.5 m × 1.6 m × 3.5 m”的anchor通常是小汽车而不是行人。因此,这种3D RPN 可以作为Single-Shot 的3D检测器,并已被多种方法采用[60],[69],[70],[61]。此外,在2019年,Zhou等[18]提出了一个名为 CenterNet 的anchor-free Single-Shot 检测器,并将其扩展到基于图像的3D检测。特别地,这个框架将目标编码为一个单点(目标的中心点) ,并使用关键点估计来找到它。此外,几个平行的head被用来估计目标的其他属性,包括深度,尺寸,位置和方向。尽管这个检测器在架构上看起来非常简单,但是它在多个任务和数据集中都能达到很好的性能。后来,很多以下作品[71],[72],[73],[74],[75],[76],[77],[22],[21],[78],[79]采用了这种设计。
基于3D 特征的方法
另一个分支是“基于3D 特征的方法”。这些方法的主要特点是首先从图像中生成3D特征,然后直接估计3D空间中包括3D位置在内的3D边界框的所有属性。根据如何获得3D特征,作者进一步将这些方法分组为“基于特征提升的方法”和“基于数据提升的方法”。
基于特征提升的方法
基于特征提升的方法的总体思想是将图像坐标系中的2D图像特征转换为世界坐标系中的3D体素特征。此外,现有的基于特征提升的方法[80],[81],[20],[82],[83]进一步折叠沿垂直维度的3D 体素特征,对应于目标的高度,以在估计最终结果之前生成 BEV 特征。对于这类方法,关键问题是如何将2D图像特征转换为3D体素特征。
单目方法特征提升: 提出了一种基于检索的检测模型OFTNet 来实现特征提升。他们通过在前视图特征区域积累对应于每个体素的左下角(u1,v2)和右下角(u2,v2)的投影的2D 特征来获得体素特征:
其中 V (x,y,z)和 F (u,v)表示给定体素(x,y,z)和像素(u,v)的特征。不同的是,Reading等以反向投影的方式实现特征提升[84]。首先,将连续深度空间离散为多重空间,并将深度估计作为一个分类任务,这样深度估计的输出就是这些空间的分布 D,而不是单个值。然后,每个特征像素 F (u,v)通过其在 D (u,v)中的相关深度二分概率来加权,以生成3D平截头体特征:
注意这个平截头体特性是基于图像深度坐标系(u,v,d) ,这需要使用相机参数来生成体素特征,并与3D世界坐标系(x,y,z)对齐。下图显示了这两种方法。
多目方法的特征提升: 由于有了先进的立体匹配技术,从多目图像对中构建3D 特征比从单目图像中构建更容易实现。Chen等[81]提出了深度立体几何网络(DSGN) ,实现了以多目图像为输入的特征提升。他们首先从多目对中提取特征,然后建立4D 平面扫描体遵循经典的平面扫描方法[85] ,[86] ,[87] ,将左图像特征和重新投影的右图像特征以等间隔的深度值连接起来。然后,在生成用于预测最终结果的 BEV 图之前,将这个4D 体转换为3D 世界空间。
基于数据提升的方法
在基于数据提升的方法中,将2D 图像转换为3D 数据(例如点云)。然后从生成的数据中提取3D 特征。在本节中,作者首先介绍伪 LiDAR 流程,它将图像提升到点云,以及为它设计的改进。然后介绍了基于图像表示的提升方法和其他提升方案。
伪激光雷达流程: 得益于深度估计,视差估计和基于激光雷达的3D目标检测,一个新的流程被提出来建立基于图像的方法和基于激光雷达的方法之间的桥梁。在这个流程中,作者首先需要从图像估计密度深度图[56] [57],(或视差图[55],[88],然后将它们转换为深度图[34])。然后,使用公式导出像素(u,v)的3D位置(x,y,z)。通过将所有像素反向投影到3D 坐标系中,可以生成伪 LiDAR 信号:
其中 N 是像素数。之后,基于 LiDAR 的检测方法[32],[89],[90],[91]可以使用伪 LiDAR 信号作为输入。这个流程中使用的数据表示的比较如下图所示。
伪激光雷达流程的成功显示了空间特征在这一任务中的重要性,突破了基于图像的方法和基于激光雷达的方法之间的障碍,使其有可能应用到其他领域的先进技术。
提高深度图(或由此产生的伪激光雷达信号)的质量: 理论上,基于伪激光雷达的模型的性能很大程度上取决于深度图的质量,一些工作[34],[33],[92]通过采用不同的深度估计已经证实了这一点。除了深度估计[56],[57],[93]和立体匹配[51],[88],[92]的改进之外,还有其他一些方法可以提高深度图的质量。注意,视差中的一个较小的误差将导致对远距离目标的深度误差较大,这是基于伪激光雷达的方法的主要弱点。为此,You等[94]提出将视差cost量转换为深度cost量,并直接端到端学习深度,而不是通过视差转换。Peng等[50]采用了非均匀视差量化策略来保证均匀的深度分布,这也可以减少远距离目标的视差深度变换误差。此外,直接提高伪激光雷达信号的精度也是一种选择。为此,You等[94]建议使用廉价的稀疏激光雷达(例如4波束激光雷达)来校正深度估计器的系统偏差。这些设计可以显著提高产生的伪 LiDAR 信号的准确性,特别是对于远距离目标。
聚焦前景目标: 原有的伪激光雷达模型估计输入图像的完整视差/深度映射。这种选择引入了大量不必要的计算成本,可能会分散网络对前景目标的注意力,因为只有对应于前景目标的像素是后续步骤的焦点。在此基础上,提出了几种改进方法。具体来说,类似于基于 LiDAR 的3D 检测器 F-PointNet [32] ,Ma等[33]使用2D 边界框去除背景点。此外,他们还提出了一种基于动态阈值的方案来进一步去除噪声点。与2D 边界框相比,[59],[53],[54],[51]中的方法采用实例mask,这是一个更好的过滤器,但需要额外的数据与真值mask。
此外,Wang等[95]和 Li等[96]建议在深度估计阶段解决这个问题。他们使用2D边界框作为mask,将输入图像的像素分为前景和背景,并对前景像素应用更高的训练权重。因此,前景区域的深度值比基线更准确,从而提高了3D检测性能。请注意,像素的可信度属于前景/背景,可以作为额外的特征来增强伪 LiDAR 点[96]。
其他信息丰富输入数据: 如前所述,大多数基于伪激光雷达的方法只采用最终得到的伪激光雷达信号作为输入。另一个改进方向是用其他信息丰富输入数据。Ma等人[33]使用基于注意力的模块将每个像素的 RGB 特征与其相应的3D 点融合。此外,还利用 RoI 级的 RGB 特性为伪激光雷达信号提供补充信息。Pon等[53]建议使用像素级部分定位图来增强伪 LiDAR 信号的几何信息(类似于基于 LiDAR 的3D 检测器[97])。特别地,他们使用 CNN 分支来预测3D边界框中每个像素/点的相对位置,然后使用这个相对位置来丰富伪 LiDAR 信号。
端对端训练: 基于伪激光雷达的检测方法一般分为深度估计和3D检测两部分,不能进行端到端的训练。对于这个问题,Qi等[98]提出了一个可微表示变化(CoR)模块,允许梯度从3D检测网络反向传播到深度估计网络,整个系统可以从联合训练中受益。
基于图像表示的方法: 为了探索基于伪 LiDAR 的方法成功的根本原因,Ma等[63]提出了 PatchNet,一种基于图像表示的原始伪 LiDAR 模型的等效实现[34] ,并取得了几乎相同的性能。这表明,数据提升是伪激光雷达系列成功的关键,它将图像坐标系中的2D位置提升到世界坐标系中的3D位置,而非数据表示。Simonelli等[16]对 PatchNet 进行了扩展,通过使用置信度head对3D 边界框进行置信度评分,从而获得更好的性能。大多数基于伪 LiDAR 方法的设计都可以很容易地用于基于图像表示的方法。此外,受益于深入研究的2D CNN 设计,基于图像的数据提升模型可能具有更大的潜力[63]。
其他提升方法: 与以前引入的通过深度估计和实现数据提升的模型不同,Srivastava等[99]引入了另一种提升数据的方法。具体而言,他们使用生成对抗网络(GAN)[100] ,[101]将前视图转换为 BEV 图,其中生成器网络旨在生成与给定图像对应的 BEV 图,并且鉴别器网络用于对生成的 BEV 图进行分类。此外,Kim等[102]提出使用逆透视映射将前视图像转换为 BEV 图像。在获得 BEV 图像后,这两个工作可以使用基于 BEV 的3D 检测器,如 MV3D [31]或 BirdNet [103]来估计最终结果。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)