DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
??本文的四位作者来自麻省理工学院、丰田研究所、卡内基梅隆大学和理想汽车,最近被录用CORL 2021接收。
- 论文链接:https://export.arxiv.org/abs/2110.06922
- 官方开源代码:https://github.com/WangYueFt/detr3d
Abstract
??我们介绍了一种多相机3D目标检测框架。现有方法一般直接从单目图像估计3D包络框,或使用深度预测网络从2D信息生成3D输入目标检测任务,我们的方法直接在3D预测空间。我们的模型从多个相机图像中提取2D特征,然后使用一组稀疏的3D目标查询索引这些2D特征,使用相机变换矩阵来建立3D位置与多视图像之间的联系。最后,我们的模型对每个目标进行查询和预测,使用包络框set-to-set的损失来衡量预测结果和真值之间的差异。由于不受深度预测模型引入的复合误差的影响,这种自顶向下的方法优于目标包络框预测受每个像素深度估计影响的自底向上的方法。另外,我们的方法不需要这样做NMS后处理大大提高了推理速度。我们在nuScenes自动驾驶基准达到SOTA的性能。
1. Introduction
??3.使用视觉信息D目标检测是低成本自动驾驶系统的长期挑战。虽然使用LiDAR目标检测等模态收集的点云数据受益于可见目标3D结构信息,但是基于相机的设置更加不稳定,因为我们必须仅根据RGB图像包含的2D信息生成3D预测包络框。
??现有的方法通常完全从2开始D计算建立他们的测试过程。也就是说,它们被用作 2D 预测任务设计的目标检测过程 3D 不考虑目标姿态和速度等信息 3D 场景结构或传感器配置。这些方法需要几个后处理步骤来整合不同相机的预测结果,并去除冗余包络框,因此需要在性能和效率之间妥协。作为这些基于2D 替代方法,有些方法使用3D从相机图像生成伪激光雷达或输入范围,重建更多3D计算集成到目标检测过程中。然后他们直接将这些输入视为3D使用传感器采集的数据3D目标检测方法。但这种策略手复合误差的影响:对3的深度值预测不好D目标检测性能有很强的负面影响。
??在这篇文章中,我们提出了一驾驶提出了更优雅的2D观测到3D不依赖于密集深度预测模块的预测变化。我们的方法DETR3D(Multi-View 3D Detection)自上而下解决这个问题。我们将利用相机转换矩阵和几何反投影提取2D特征和3D目标检测联系在一起。我们的方法从一组稀疏的目标先验开始,整个数据集共享,端到端学习。为了收集场景的独特信息,我们将从目标先验解码中反向投影一组参考点到每个相机,并从ResNet主干提取的图像特征。从参考点的图像特征中收集的特征,然后通过多头自注意层相互交互。在一系列自注意层之后,我们从每层读取包络框参数并使用它们DETR启发的set-to-set评估性能损失。 ??我们的架构不使用点云重建或显示的深度估计,使深度误差鲁棒。而且,我们的方法不需要任何后处理,比如NMS,提高效率,减少对手工设计方法的依赖。在nuScenes我们没有数据集NMS方法性能和带有NMS前人的方法性能相当。在相机视野的重叠区域,我们的方法性能明显高于其他方法。
??我们的主要贡献总结如下:
- 我们提出了一个基础RGB图像进行3D目标测试的改进模型。与现有的目标预测不同,我们的方法将所有相机的信息整合到每一层计算中。据我们所知,这是将多相机检测转换为3D set-to-set首次尝试预测问题。
- 我们逆几何投影提取2D特征和3D包络框预测连接在一起的模块。它不受二阶段网络不准确的深度预测的影响,并且通过将3D多个相机的信息反投影到所有可用帧上。
- 和Object DGCNN类似地,我们的方法不需要后处理,比如整合每个图像或整体情况NMS,性能和现有基础NMS方法相当。在相机视野的重叠区域,我们的方法明显优于其他方法。
- 我们发布了促进复现和未来研究的代码。
2. Related Work
??RCNN率先用深度学习进行目标测试。它输入了一组预选目标提议CNN 并相应预测包络框参数。虽然这种方法表现出惊人的性能,但它需要一次性提出每个目标CNN数量级比其他方法低。要解决这个问题,Fast RCNN提出共享课程学习CNN整个图像在前向过程中处理。为进一步提高性能和速度,Faster RCNN提出了RPN,与检测网络共享全图像卷积特征,是的,区域提议的计算费用几乎为0。Mask RCNN同时合并一个掩模预测分支进行实例分割。这些方法通常涉及多阶段优化,实际使用时会变慢。不同于这些多阶段的方法,SSD和YOLO尽管它们比上述方法快得多,但它们仍然依赖于单次密集预测NMS预测溢出冗余包络框。这些方法是基于预定义的anchor预测包络框。CenterNet和FCOS通过将这一范式逐一改变anchor将预测转化为逐像素预测,极大地简化了一般目标检测过程。
??DETR将目标检测转化为set-to-set它用的问题Transformer捕捉特征与目标之间的关系。DETR学习将预测结果分配到一组真实的框架中,因此他不需要后处理来过滤多余的框架。但是,DETR他需要重要的缺点,他需要很多训练时间。可形变DETR对DERT收敛缓慢分析,提出了集中特征和加速训练的可变自注意模块。同时,也有学者认为DETR收敛缓慢是由于基于收集的损失和损失Transformer交叉注意机制。他们提出了两种变体TSP-FCOS和TSP-RCNN克服这些问题。SparseRCNN引入集合预测RCNN性能优于没有风格的流程NMS多阶段目标检测。OneNet发现了一个有趣的现象。密集目标检测方法配备最低成本的集合损失后,无需NNMS了。对于3D领域,Object DGCNN研究了点云的3D目标检测,它将3D检测建模为动态图的消息传递,将DGCNN框架总结为预测一组目标。和DETR类似,Object DGCNN也不需要NMS。
??使用RGB图像进行3D早期的检测方法是Mono3D,语义和形状线索的使用D建议集中选择,并在训练阶段使用场景约束和额外的先验信息。Roddick使用BEV进行3D检测,Mousavian最小化2D-3D投影误差,使用2D检测来进行3D回归包络框。使用2D检测器作为3D计算的起点已成为一种标准方法。其他工作也探索了微渲染和3D实现关键点检测SOTA的3D目标检测性能。所有这些方法都是基于单目相机扩展到多个相机,需要在后处理阶段将模型输出集成之前单独处理每个帧。
3. Multi-view 3D Object Detection
3.1 Overview
??我们的架构输入一组投影矩阵已知的相机RGB图像,并在场景中输出3组目标D包络框参数。与以往的方法相比,我们建立了基于一些先进需求的架构:
- 我们将3D将信息合并到我们架构的中间计算中,而不是在图像平面上执行纯度 2D计算。
- 我们不估计密集的3D场景几何,以避免相关的重构误差。
- 我们避免这样做NMS后处理步骤。

??我们使用新的集合预测模块来解决这些需求,该模块在2D和3D交替连接计算间2D特征提取和3D框预测。如图1所示,我们的模型包含三个关键组件。第一,遵循 2D 常见的视觉实践,使用共享 ResNet 主干从相机图像中提取特征,根据需要使用特征金字塔FPN加强这些特征。二是以几何感知的方式计算2D特征和3D包络框预测集合连接的检测头也是我们的主要贡献。检测头的每一层都从一组稀疏的目标查询开始,从数据中学习。每个目标都有3个查询码D该位置投影到相机平面,并通过双线插值收集图像特征。和DERT类似地,我们利用多头注意力通过合并目标交互来优化目标查询。这一层将在特征采样和目标查询优化之间重复多次。最后,我们使用它set-to-set训练网络的损失。
3.2 Feature Learning
??我们模型的输入是:一组图像 I = { i m 1 , … , i m K } ? R H i m × W i m × 3 \mathcal{I}=\{\mathrm{im}_1, \dots, \mathrm{im}_K\}\subset \mathbb{R}^{\mathrm{H_{im}}\times\mathr{W_{im}}\times3} I={ im1,…,imK}⊂RHim×Wim×3(由周视相机采集),相机矩阵 T = { T 1 , … , T K } ⊂ R 3 × 4 \mathcal{T}=\{T_1,\dots,T_K\}\subset \mathbb{R}^{3\times4} T={ T1,…,TK}⊂R3×4,真值包络框 B = { b 1 , … , b j , … , b M } ⊂ R 9 \mathcal{B}=\{b_1,\dots,b_j,\dots,b_M\}\subset \mathbb{R}^9 B={ b1,…,bj,…,bM}⊂R9,以及类别标签 C = { c 1 , … , c j , … , c M } ⊂ Z \mathcal{C}=\{c_1,\dots,c_j,\dots,c_M\}\subset \mathbb{Z} C={ c1,…,cj,…,cM}⊂Z。每个 b j b_j bj包含位置、尺寸、朝向角以及BEV中的速度;我们模型致力于从这些图像中预测这些包络框及其标签。我们不使用高端激光雷达捕捉的点云。
这些图像使用ResNet和FPN编码成四组特征 F 1 , F 2 , F 3 , F 4 \mathcal{F}_1,\mathcal{F}_2,\mathcal{F}_3,\mathcal{F}_4 F1,F2,F3,F4。每组特征 F k = { f k 1 , … , f k 6 } ⊂ R H × W × C \mathcal{F}_k=\{f_{k1},\dots,f_{k6}\}\subset \mathbb{R}^{H\times W\times C} Fk={ fk1,…,fk6}⊂RH×W×C对应6张图像的特征级别。这些多尺度特征维识别不同尺寸的目标提供了丰富的信息。接下来,我们将详细介绍使用集合预测模块将这些2D特征转换为3D的方法。
3.3 Detection Head
现有目标检测方法通常使用自底向上的方法,每张图像预测一个密集包络框的集合,过滤图像之间的冗余框,然后在后处理步骤中融合不同相机的预测结果。这种范式有两个主要缺点:密集包络框预测需要准确的深度感知,深度预测本身也是一个具有挑战性的问题;基于NMS的冗余去除和聚合是不可并行的操作,会引入大量的推理开销。我们使用下面描述的自顶向下的目标检测头来解决这些问题。
和Object DGCNN、可形变DETR类似,DETR3D是迭代的,使用 L L L层基于集合的计算从2D特征图生成包络框估计。每一层包含下列步骤:
- 根据目标查询预测一组包络框中心;
- 使用相机变换矩阵将这些中心投影到所有特征图上;
- 通过双线性插值进行特征采样,并合并到目标查询中
- 使用多头注意力描述目标交互
受DETR启发,每一层 ℓ ∈ { 0 , … , L − 1 } \ell \in\{0,\dots,L-1\} ℓ∈{ 0,…,L−1}对一组目标查询 Q l = { q ℓ 1 , … , q ℓ M ∗ } ⊂ R C \mathscr{Q}_l=\{q_{\ell 1},\dots,q_{\ell M*}\}\subset\mathbb{R}^C Ql={ qℓ1,…,qℓM∗}⊂RC起进行操作,产生一个新集合 Q ℓ + 1 \mathscr{Q}_{\ell +1} Qℓ+1。参考点 c ℓ i ∈ R 3 c_{\ell i}\in\mathbb{R}^3 cℓi∈R3从一个目标查询 q ℓ i q_{\ell i} qℓi中编码得到: c ℓ i = Φ r e f ( q ℓ i ) (1) c_{\ell i}=\Phi^{\mathrm{ref}}(q_{\ell i}) \tag{1} cℓi=Φref(qℓi)(1)其中 Φ r e f \Phi^{\mathrm{ref}} Φref是神经网络。 c ℓ i c_{\ell i} cℓi可以认为是第 i i i个包络框中心的假设。接下来,我们获取和 c ℓ i c_{\ell i} cℓi对应的图像特征来细化和预测最终的包络框。然后,使用相机变换矩阵将 c ℓ i c_{\ell i} cℓi(或更准确的来说,它的同质副本 c ℓ i ∗ c_{\ell i}^* cℓi∗)投影到每张图像中: c ℓ i ∗ = c ℓ i ⊕ 1 c ℓ m i = T m c ℓ i ∗ (2) c_{\ell i}^*=c_{\ell i}\oplus1 c_{\ell mi}=T_mc_{\ell i}^*\tag{2} cℓi∗=cℓi⊕1 cℓmi=Tmcℓi∗(2)其中 ⊕ \oplus ⊕表示串接, c ℓ m i c_{\ell mi} cℓmi表示参考点到第 m m m个相机的投影。为了去除特征图尺寸和采集不同层级特征的影响,我们将 c ℓ m i c_{\ell mi} cℓmi归一化到 [ − 1 , 1 ] [-1,1] [−1,1]。接下来获取到图像特征: f ℓ k m i = f b i l i n e a r ( F k m , c ℓ m i ) (3) f_{\ell kmi}=f^{\mathrm{bilinear}}(\mathcal{F}_{km},c_{\ell mi})\tag{3} fℓkmi=fbilinear(Fkm,cℓmi)(3)其中 f ℓ k m i f_{\ell kmi} fℓkmi