摘要: 我们介绍了一种多摄像头三维物体检测框架。与直接从单目图像估算三维边界框或使用深度预测网络从二维信息生成三维物体检测输入的现有工作相比,我们的方法直接在三维空间中操作预测。我们的架构从多个摄像头图像中提取二维特征,然后使用稀疏的三维物体查询集对这些二维特征进行索引,利用摄像头变换矩阵将三维位置与多视角图像联系起来。最后,我们的模型对每个物体查询进行边界框预测,并使用集对集损失来衡量地面实况与预测之间的差异。这种自上而下的方法优于自下而上的方法,后者是根据每个像素的深度估算进行物体边界框预测,因为它不会受到深度预测模型带来的复合误差的影响。此外,我们的方法不需要非最大值抑制等后处理,大大提高了推理速度。我们在 nuScenes 自动驾驶基准测试中取得了一流的性能。
1 引言
从视觉信息中检测三维物体是低成本自动驾驶系统长期面临的挑战。利用激光雷达等模式收集的点云进行物体检测可以从可见物体的三维结构信息中获益,而基于摄像头的环境则更加困难,因为我们必须仅从 RGB 图像中包含的二维信息生成三维边界框预测。
现有方法 [1, 2] 通常纯粹通过 2D 计算建立检测管道。也就是说,它们使用为 2D 任务设计的物体检测管道(如 CenterNet [1]、FCOS [3])来预测物体姿态和速度等 3D 信息,而不考虑 3D 场景结构或传感器配置。这些方法需要几个后处理步骤来融合各摄像机的预测结果并去除冗余框,因此在效率和效果之间需要进行慎重权衡。作为这些基于 2D 的方法的替代方案,一些方法将更多的 3D 计算纳入了我们的物体检测管道,通过应用 3D 重构方法(如 [4, 5, 6] 等),从摄像机图像中创建场景的伪激光雷达或测距输入。然后,他们就可以对这些数据应用三维物体检测方法,就像直接从三维传感器收集数据一样。然而,这种策略会产生复合误差 [7]:深度值估计不准确会对 3D 物体检测的性能产生严重的负面影响,而 3D 物体检测本身也会产生误差。
在本文中,我们为自动驾驶提出了一种在二维观测和三维预测之间更优雅的过渡方法,它不依赖于密集深度预测模块。我们的框架被称为 DETR3D(多视图 3D 检测),以自上而下的方式解决这一问题。我们通过相机变换矩阵进行几何反投影,将二维特征提取和三维物体预测联系起来。我们的方法从一组稀疏的物体先验开始,这些先验在整个数据集中共享,并且是端到端学习的。为了收集特定场景的信息,我们将从这些物体先验解码出的一组参考点反向投影到每个摄像头,并获取由 ResNet 主干网提取的相应图像特征[8]。然后,从参考点图像特征中收集的特征通过多头自注意层 [9] 相互影响。在一系列自注意层之后,我们从每一层读取边界框参数,并使用受 DETR [10] 启发的集对集损失来评估性能。
我们的架构不执行点云重建,也不对图像进行明确的深度预测,因此对深度估计中的错误具有鲁棒性。此外,我们的方法不需要任何后处理,如非最大抑制(NMS),从而提高了效率,减少了对手工设计的净化输出方法的依赖。在 nuScenes 数据集上,我们的方法(不含 NMS)与现有技术(含 NMS)不相上下。在摄像机重叠区域,我们的方法明显优于其他方法。
贡献。我们的主要贡献总结如下:
- 我们提出了一种简化的 RGB 图像 3D 物体检测模型。与在最后阶段将来自不同摄像机视图的物体预测信息合并在一起的现有工作不同,我们的方法在每一层计算中都融合了来自所有摄像机视图的信息。据我们所知,这是首次尝试将多摄像头检测作为三维集对集预测。
- 我们引入了一个模块,通过后向几何投影将二维特征提取和三维边界框预测连接起来。它不会受到来自辅助网络的不准确深度预测的影响,并通过将三维信息反向投影到所有可用帧上,无缝使用来自多个摄像头的信息。
- 与对象 DGCNN [11]类似,我们的方法不需要后处理,如每个图像或全局 NMS,与现有的基于 NMS 的方法相当。在摄像机重叠区域,我们的方法大大优于其他方法。
- 我们发布了我们的代码,以促进可重复性和未来研究。
2 相关工作
2D 物体检测。
RCNN [12] 率先使用深度学习进行物体检测。它将一组预选的对象建议输入卷积神经网络(CNN),并据此预测边界框参数。虽然这种方法表现出了令人惊讶的性能,但它比其他方法慢了一个数量级,因为它要对每个物体建议执行 ConvNet 前传。为了解决这个问题,Fast RCNN [13] 引入了共享可学习 CNN,只需一次前向传递即可处理整个图像。为了进一步提高性能和速度,Faster RCNN [13] 包含一个区域建议网络 (RPN),该网络与检测网络共享全图像卷积特征,从而实现了几乎无成本的区域建议。掩码 RCNN [14] 包含一个掩码预测分支,以实现并行实例分割。这些方法通常涉及多阶段细化,在实践中可能会很慢。与这些多阶段方法不同,SSD [15] 和 YOLO [16] 一次即可完成密集预测。虽然它们的速度明显快于上述方法,但它们仍然依赖 NMS 来去除多余的边框预测。这些方法根据预定义的锚点预测边界框。CenterNet [1] 和 FCOS [3] 改变了这一模式,从按锚点预测转向按像素预测,大大简化了普通的物体检测管道。
基于集合的物体检测。
DETR [10] 将物体检测作为一个集合到集合的问题。它采用变换器[9]来捕捉特征与物体之间的交互。DETR 学会将预测结果分配给一组地面真实方框;因此,它不需要进行后处理来过滤掉多余的方框。然而,DETR 的一个关键缺点是需要大量的训练时间。可变形 DETR [17] 分析了 DETR 的收敛速度慢的问题,并提出了一个可变形的自我注意模块来定位特征并加速训练。同时,[18] 将 DETR 的缓慢收敛归因于基于集合的损失和 Transformer 交叉注意机制。他们提出了两种变体 TSP-FCOS 和 TSP-RCNN 来克服这些问题。SparseRCNN [19] 将集合预测纳入了 RCNN 类型的流水线;它的性能优于无 NMS 的多阶段对象检测。OneNet [20] 研究了一个有趣的现象:基于密集度的物体检测器在配备了最小成本的集合损失后,可以做到无 NMS。对于三维领域,Object DGCNN [11] 研究了从点云中检测三维物体的问题。它将三维物体检测建模为动态图上的信息传递,将 DGCNN 框架推广到预测一组物体上。与 DETR 相似,Object DGCNN 也不需要 NMS。单目三维物体检测。Mono3D 是早期从 RGB 图像中进行 3D 检测的方法[21],它使用语义和形状线索,在训练时利用场景约束和额外的先验条件,从一系列 3D 提议中进行选择。[22]使用鸟眼视图(BEV)进行单目三维检测,[23]通过最小化 2D-3D 投影误差,利用 2D 检测进行三维边界框回归。最近,使用 2D 检测器作为 3D 计算的起点已成为一种标准方法 [24,25]。其他作品也在探索可微分渲染 [26] 或 3D 关键点检测 [27, 28, 1] 方面的进步,以实现最先进的 3D 物体检测性能。所有这些方法都是在单目环境下运行的,要扩展到多台摄像机,需要先独立处理每一帧,然后在后处理阶段合并输出结果。
图 1:我们的方法概述。模型的输入是一组多视角图像,由 ResNet 和 FPN 编码。然后,我们的模型对一组稀疏的对象查询进行操作,其中每个查询都被解码为一个 3D 参考点。通过将三维参考点投射到图像空间,对二维特征进行转换,以完善对象查询。我们的模型对每个查询进行预测,并使用集对集损失。
3 多视角3D物体检测
3.1 概述
我们的架构输入从一组相机收集的 RGB 图像,这些相机的投影矩阵(内在因素和相对外在因素的组合)是已知的,并输出场景中对象的一组 3D 边界框参数。 与过去的方法相比,我们基于一些高级需求构建架构:
• 我们将3D 信息纳入架构内的中间计算中,而不是在图像平面中执行纯粹的2D 计算。
• 我们不估计密集的3D 场景几何形状,以避免相关的重建错误。
• 我们避免后处理步骤,例如NMS。
我们使用新的集合预测模块来解决这些需求,该模块通过在 2D 和 3D 计算之间交替来链接 2D 特征提取和 3D 框预测。 我们的模型包含三个关键组件,如图 1 所示。首先,遵循 2D 视觉的常见做法,它使用共享的 ResNet [8] 主干从相机图像中提取特征。 或者,这些特征可以通过特征金字塔网络(FPN)[29](§3.2)来增强。 其次,检测头(第 3.3 节)——我们的主要贡献——以几何感知方式将计算出的 2D 特征与一组 3D 边界框预测联系起来(第 3.3 节)。 检测头的每一层都从一组稀疏的对象查询开始,这些对象查询是从数据中学习的。 每个对象查询都编码一个 3D 位置,该位置被投影到相机平面并用于通过双线性插值收集图像特征。 与 DETR [10] 类似,我们然后使用多头注意力 [9] 通过合并对象交互来细化对象查询。 该层重复多次,在特征采样和对象查询细化之间交替。 最后,我们评估集合到集合的损失 [30, 10] 来训练网络(第 3.4 节)。
3.2 特征学习
我们的模型从一组图像 I = {im1, . 。 。 , imK} ⊂ RHim×Wim×3(由周围摄像机捕获),摄像机矩阵 T = {T1, . 。 。 , TK} ⊂ R3×4 ,真实边界框 B = {b1, . 。 。 , bj , . 。 。 , bM} ⊂ R9 ,分类标签 C = {c1, . 。 。 , cj , . 。 。 , cM} ⊂ Z。每个bj包含鸟瞰视图(BEV)中的位置、大小、航向角和速度; 我们的模型旨在从这些图像中预测这些框及其标签。 我们不使用点云,点云通常由高端激光雷达捕获。 这些图像使用 ResNet [8] 和 FPN [29] 编码为四组特征 F1、F2、F3、F4。 每组 Fk = {f k1 , . 。 。 , f k6} ⊂ RH×W×C 对应于6张图像的特征级别。 这些多尺度特征为识别不同尺寸的物体提供了丰富的信息。 接下来,我们详细介绍使用新颖的集合预测模块将这些 2D 特征转换为 3D 的方法。
3.3 检测头
用于从相机输入检测对象的现有方法通常采用自下而上的方法,该方法预测每个图像的一组密集边界框,过滤图像之间的冗余框,并在后处理步骤中聚合跨相机的预测。 这种范式有两个关键的缺点:密集的边界框预测需要准确的深度感知,这本身就是一个具有挑战性的问题; 基于 NMS 的冗余去除和聚合是不可并行的操作,会引入大量的推理开销。 我们使用如下所述的自上而下的物体检测头来解决这些问题。
与 [11, 17] 类似,DETR3D 是迭代的; 它使用 L 层和基于集合的计算来从 2D 特征图生成边界框估计。 每一层包括以下步骤:
1. 预测与对象查询相关的一组边界框中心;
2.使用相机变换矩阵将这些中心投影到所有特征图中;
3. 通过双线性插值采样特征并将其合并到对象查询中; 和
4. 使用多头注意力描述对象交互。
受 DETR [10] 的启发,每层 ` ∈ {0, . 。 。 , L − 1} 对一组对象查询进行操作 Q` = {q` 1 , . 。 。 , q`M* } ⊂ RC ,产生一个新集合 Q` +1。 参考点 c`i ∈ R3 从对象查询 q`i 解码如下: c`i = Φref(q`i), (1)
其中 Φ ref 是神经网络。 c`i 可以被认为是第 i 个盒子的中心的假设。 接下来,我们获取与 c`i 对应的图像特征来细化和预测最终的边界框。 然后,使用相机变换矩阵将 c`i(或更准确地说,其齐次对应物 c*`i)投影到每个图像中:c*`i = c`i ⊕ 1 c`mi = Tmc*`i, (2)
其中 ⊕ 表示串联,c`mi 是参考点在第 m 个相机上的投影。 为了消除特征图大小的影响并收集不同级别的特征,我们将 c`mi 标准化为 [−1, 1]。 接下来,通过 f`kmi = f bilinear(Fkm, c`mi) 收集图像特征,(3)
其中 f`kmi 是第 m 个相机的第 k 层的第 i 个点的特征。 给定的参考点不一定在所有相机图像中都可见,因此我们需要一些启发式方法来过滤无效点。 为此,我们定义了一个二进制值 σ`kmi,它是根据参考点是否投影到图像平面之外来确定的。 最终特征 f`i 和下一层 q(` +1)i 中的对象查询由下式给出
其中 是一个小数,以避免被零除。 最后,对于每个对象查询 q`i,我们使用两个神经网络 Φ reg ` 和 Φ cls ` 预测边界框 bˆ `i 及其分类标签 cˆ`i:bˆ `i = Φreg `(q`i) 和 ˆc `i = Φcls `(q`i)。 (5) 我们计算预测 Bˆ` = {bˆ` 1, ... 的损失。 。 。 , bˆ `j , . 。 。 , bˆ `M* } ⊂ R9 且 Cˆ` = {cˆ` 1, . 。 。 , cˆ`j , . 。 。 训练期间每一层的 , cˆ`M} ⊂ Z。 在推理过程中,我们仅使用最后一层的输出。
3.4 损失
按照[30, 10],我们使用集合到集合的损失来测量预测集 (B`, C`) 和真实集 (B, C) 之间的差异。 该损失由两部分组成:类标签的焦点损失[31]和边界框参数的 L1 损失。 为了符号方便,我们去掉了 Bˆ` 和 Cˆ` 中的 ` 下标。 地面实况框的数量 M 通常小于预测的数量 M* ,因此我们用 ∅s(无对象)填充地面实况框的集合,直到 M* ,以便于计算。 我们通过二分匹配问题建立真实值和预测之间的对应关系: σ* = arg minσ∈P P Mj=1 −1{cj 6=∅}pˆσ(j)(cj ) + 1{cj=∅} Lbox(bj , bˆσ(j)),其中 P 表示排列集合,pˆσ(j)(cj ) 是索引为 σ(j) 的预测的类 cj 的概率,Lbox 是边界框的 L1 损失 参数。 我们使用匈牙利算法 [32] 来解决这个分配问题,如 [30, 10] 中所示,产生集合到集合的损失 Lsup = P Nj=1 − log ˆpσ*(j)(cj ) + 1{cj =∅}Lbox(bj , b^σ*(j))。
4 实验
我们的结果如下:首先,我们在第 4.1 节中详细介绍了数据集、指标和实现; 然后我们将我们的方法与第 4.2 节中的现有方法进行比较; 我们在第 4.3 节中对不同模型在相机重叠区域的性能进行了基准测试; 我们与第 4.4 节中的前向预测模型进行比较; 我们在第 4.5 节中提供了额外的分析和消融。
4.1 实施细节数据集。
我们在 nuScenes 数据集 [33] 上测试我们的方法。 nuScenes 由 1,000 个序列组成; 每个序列大约长 20 秒,采样率为 20 帧/秒。 每个样本包含来自 6 个摄像头的图像 [左前、前、右前、左后、后、右后]。 相机参数包括内部参数和外部参数可用。 nuScenes每0.5秒提供一次注释; 总共有 28k、6k 和 6k 个带注释的样本分别用于训练、验证和测试。 总共 23 个类中的 10 个可用于计算指标。 指标。 我们遵循 nuScenes 提供的官方评估协议。 我们评估平均平移误差(ATE)、平均尺度误差(ASE)、平均方向误差(AOE)、平均速度误差(AVE)和平均属性误差(AAE)。 这些指标是真阳性指标(TP 指标)并以物理单位计算。 此外,我们还测量平均精度 (mAP)。 为了捕获检测任务的所有方面,统一的标量度量——nuScenes 检测分数 (NDS) [33]——被定义为 NDS = 1 10 [5mAP + P mTP∈TP(1 − min(1, mTP))] 。 模型。 我们的模型由 ResNet [8] 特征提取器、FPN 和 DETR3D 检测头组成。 我们在第三阶段和第四阶段使用带有可变形卷积的 ResNet101 [34]。 FPN [29] 采用 ResNet 输出的特征并生成 4 个特征图,其大小分别为输入图像大小的 1/8、1/16、1/32 和 1/64。 DETR3D 检测头由 6 层组成,其中每一层都是特征细化步骤和多头注意层的组合。 DETR3D检测头的隐藏维度为256。最后,两个子网络预测每个对象查询的边界框参数和类标签; 每个子网络由两个隐藏维度为 256 的全连接层组成。我们在检测头中使用 LayerNorm [35]。 训练和推理。 我们使用 AdamW [36] 来训练整个管道。 权重衰减为 10−4。 我们使用初始学习率 10−4 ,在第 8 和第 11 时期降低到 10−5 和 10−6 。 该模型在 8 个 RTX 3090 GPU 上总共训练了 12 个 epoch,每个 GPU 的批量大小为 1。
表 1:与验证集上的最新工作的比较。 我们的方法对于 NMS 的使用是稳健的。 *:CenterNet 使用定制的主干 DLA [38]。 ‡:该模型使用深度权重 1.0 进行训练,并从 FCOS3D 检查点进行初始化; 检查点在深度权重为 0.2 的同一数据集上进行训练。 §:增加测试时间。 ¶:具有测试时间增强、更多纪元和模型集成。 详细信息请参见[2]。 †:我们的模型也是从 FCOS3D 主干初始化的; 检测头随机初始化。 #:接受 CBGS 训练 [39]
表 2:与排行榜上测试集上表现最好的作品的比较。 #:从 DD3D 检查点初始化。 †:从根据额外数据预训练的主干初始化。 训练过程大约需要18个小时。 我们在推理过程中不使用任何后处理,例如 NMS。 为了进行评估,我们使用 nuScenes 评估工具包。
4.2 与现有作品的比较
我们与之前最先进的方法 CenterNet [1] 和 FCOS3D [2] 进行比较。 CenterNet 是一种无锚点 2D 检测方法,可在高分辨率特征图中进行密集预测。 FCOS3D 采用 FCOS [3] 管道进行逐像素预测。 这些方法都将 3D 对象检测转化为 2D 问题,并在此过程中忽略场景几何形状和传感器配置。 为了执行多视图目标检测,这些方法必须独立处理每个图像,并使用每个图像和全局 NMS 分别删除每个视图和重叠区域中的冗余框。 如表 1 所示,即使我们不使用任何后处理,我们的方法也优于这些方法。 我们的方法在 mATE 方面的表现比 FCOS3D 差。 我们怀疑这是因为 FCOS3D 直接预测边界框深度,这导致对对象平移的强监督。 此外,FCOS3D 针对不同的边界框参数使用解缠结头,这可以提高性能。 在测试集上(表 2),截至 2021 年 10 月 13 日,我们的方法优于所有现有方法; 为了公平比较,我们的方法使用与 DD3D [37] 相同的主干网。
4.3 重叠区域比较
一个巨大的挑战在于物体更容易被切断的重叠区域。 我们的方法同时考虑所有摄像机,而 FCOS3D 单独预测每个摄像机的边界框。 为了进一步证明融合推理的优势,我们计算了落入相机重叠区域的框的度量。 为了计算指标,我们选择 3D 中心对多个摄像机可见的框。 在验证集上,有 18,147 个这样的框,占总数的 9.7%。
结果如表3所示。 在此设置中,我们的方法在 NDS 分数方面显着优于 FCOS3D。 这证实了我们的综合预测方法更加有效。 6 表 3:重叠区域的比较。 ‡:该模型使用深度权重 1.0 进行训练,并从 FCOS3D 检查点进行初始化; 检查点在深度权重为 0.2 的同一数据集上进行训练。 详细信息请参见[2]。 †:我们的模型也是从 FCOS3D 主干初始化的; 检测头随机初始化。
表 4:与伪 LiDAR 方法的比较。
4.4 与伪激光雷达方法的比较
执行 3D 对象检测的另一种方法是使用深度预测模型从多视图图像生成伪 LiDAR 点云。 在nuScenes数据集上,没有公开的伪激光雷达作品可供我们进行直接比较。 因此,我们自己实现了一个基线来验证我们的方法比显式深度预测更有效。 我们使用预先训练的 PackNet [6] 网络来预测来自所有六个摄像机的密集深度图,然后使用摄像机变换将这些深度图转换为点云。 我们还尝试了具有速度监督的自监督 PackNet 模型(如原始论文中所示),但我们发现地面实况深度监督产生了更真实的点云,因此使用监督模型作为基线。 对于 3D 检测,我们采用最近提出的 CenterPoint 架构 [41]。 从概念上讲,该管道是伪激光雷达的变体[42]。 表4显示了结果; 我们得出的结论是,即使深度估计是由最先进的模型生成的,这种伪激光雷达方法的性能也明显低于我们的方法。 一种可能的解释是,伪激光雷达目标检测器会受到不准确的深度预测带来的复合误差的影响,而这种复合误差又会过度拟合训练数据,并且很难推广到其他分布 [7]。
4.5 消融与分析
我们在图 2 中提供了对象查询细化的可视化。我们可视化从每层中的对象查询解码的边界框。 当我们进入模型的更深层次时,预测的边界框会变得更接近真实情况。此外,最左边的图显示了所有数据共享的学习对象查询先验。 我们还在表 5 中提供了定量结果,这表明迭代细化确实显着提高了性能。 这表明迭代细化对于充分利用我们提出的架构来说既有益又必要。 此外,我们在表 6 中提供了对象查询数量的删减; 增加查询数量会持续提高性能,直到达到 900 饱和。最后,表 7 显示了不同主干网的结果。 我们还在图 3 中提供了定性结果,以便于直观地了解模型性能。 我们将预测的边界框投影到 6 个摄像机以及 BEV 视角中。 一般来说,我们的方法会产生合理的结果,甚至可以检测到相对较小的物体。 然而,我们的方法仍然表现出很大的平移误差(与表4.2中的结果一致):尽管我们的模型避免了显式深度预测,但深度估计仍然是这个问题的核心挑战。
5 结论 我们提出了一种新的范式来解决从 2D 图像恢复 3D 信息的不适定逆问题。 在这种情况下,输入信号缺乏模型在没有从数据中学习先验知识的情况下做出有效预测的必要信息。 其他方法要么仅在 2D 计算上运行,要么使用额外的深度网络来重建场景,而我们的方法在 3D 空间中运行,并使用向后投影来根据需要检索图像特征。 我们的方法有两个好处:(1)它消除了对中间层表示(例如,预测深度图或点云)的需求,这可能是复合误差的来源; (2) 它通过将相同的 3D 点投影到所有可用帧上来使用来自多个摄像机的信息。 除了我们的工作直接应用于自动驾驶的 3D 物体检测之外,还有几个领域值得未来研究。 例如,单点投影在检索到的图像特征图中创建有限的感受野,并且为每个对象查询采样多个点将包含更多信息以进行对象细化。 此外,新的检测头与输入无关,并且包括 LiDAR/RADAR 等其他模式将提高性能和鲁棒性。 最后,将我们的管道推广到室内导航和对象操作等其他领域将扩大其应用范围,并揭示进一步改进的其他方法。 8
表5:不同层检测结果评价。
图 2:DETR3D 头部中第 1 层到第 5 层的检测结果。 我们可视化 BEV 中的边界框并覆盖激光雷达顶部的点云。 预测在更深层次上更加接近真实情况。
表 6:不同查询次数的结果。
表 7:不同主链的结果。
图 3:我们在 BEV 和图像视图中可视化 DETR3D 预测。 我们的模型能够检测相当小的物体,甚至是未注释为地面实况的物体(CAM BACK LEFT 中的汽车)。 一些故障案例包括 CAM FRONT 中遥遥领先的汽车,但未被检测到。