DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
这篇论文的四个作者分别来自麻省理工学院、丰田研究院、卡耐基梅隆大学、理想汽车,最近被CORL 2021接收。
Abstract
我们介绍了一种用于多相机3D目标检测的框架。现有方法一般直接从单目图像估计3D包络框,或使用深度预测网络从2D信息生成3D目标检测任务的输入,而我们的方法直接在3D空间中进行预测。我们的模型从多张相机图像中提取2D特征,然后使用一组稀疏的3D目标查询来索引这些2D特征,使用相机变换矩阵来建立3D位置和多视图像之间的联系。最后,我们的模型对每个目标查询预测一个包络框,使用一个set-to-set的损失来衡量预测结果和真值之间的差异。这种自顶向下的方法优于那些目标包络框预测受每个像素深度估计影响的自底向上的方法,因为其不受深度预测模型引入的复合误差的影响。此外,我们的方法不需要诸如NMS的后处理,极大提高了推理速度。我们在nuScenes自动驾驶基准上达到了SOTA的性能。
1. Introduction
利用视觉信息进行3D目标检测是低成本自动驾驶系统中一个长期存在的挑战。虽然使用LiDAR等模态收集的点云数据进行目标检测受益于可见目标的3D结构信息,但是基于相机的设置更加不稳定,因为我们必须仅根据RGB图像包含的2D信息生成3D包络框预测。
现有方法通常完全从2D计算建立他们的检测流程。也就是说,他们使用为 2D 任务设计的目标检测流程来预测 3D 信息,比如目标姿态和速度,而不考虑 3D 场景结构或传感器配置。这些方法需要几个后处理步骤来融合不同相机的预测结果,并去除冗余包络框,因此需要在性能和效率之间做一个折中。作为这些基于2D 的方法的替代,一些方法利用3D重建从相机图像生成伪激光雷达或范围输入,将更多的3D计算整合到目标检测流程之中。然后他们将这些输入当做直接从3D传感器采集的数据,使用3D目标检测方法。但是这种策略手复合误差的影响:预测糟糕的深度值对于3D目标检测性能有很强的负面作用。
我们在本文为自己动驾驶提出了一种更加优雅的从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
2D目标检测
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。
单目3D目标检测
使用RGB图像进行3D检测的早期方法是Mono3D,使用语义和形状线索从3D提议集合中进行选择,并在训练阶段使用场景约束和额外的先验信息。Roddick使用BEV进行3D检测,Mousavian则通过最小化2D-3D的投影误差,利用2D检测来进行3D包络框的回归。使用2D检测器作为3D计算的起点已经成为一种标准方法。其他工作还探索了可微渲染和3D关键点检测来实现SOTA的3D目标检测性能。所有这些方法都基于单目相机,扩展到多个相机需要在后处理阶段中融合模型输出之前对每一帧进行单独处理。
3. Multi-view 3D Object Detection
3.1 Overview
我们架构输入一组投影矩阵已知的相机的RGB图像,并为场景中的目标输出一组3D包络框参数。与过去的方法相比,我们基于一些高级需求来建立我们的架构:
- 我们将3D信息合并到我们架构中的中间计算,而不是在图像平面中执行纯 2D计算。
- 我们不估计密集的3D场景几何,从而避免相关的重构误差。
- 我们避免诸如NMS的后处理步骤。
![](https://i-blog.csdnimg.cn/blog_migrate/4b608100b062e6648c7e4157bb2ad68a.png)
我们使用一种新的集合预测模块来解决这些需求,该模块通过在2D和3D计算间交替来连接2D特征提取和3D框预测。如图1所示,我们的模型包含3个关键组件。第一,遵循 2D 视觉中的常见做法,使用共享的 ResNet 主干从相机图像中提取特征,视需要使用特征金字塔FPN加强这些特征。第二,一个以几何感知方式将计算的2D特征和3D包络框预测集合进行进行连接的检测头,这也是我们的主要贡献。检测头的每一层都从一组稀疏的目标查询开始,这些查询是从数据中学习的。每个目标查询编码一个3D位置,该位置投影到相机平面并通过双线性插值用于收集图像特征。和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\mathrm{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是第
m
m
m个相机在第
l
l
l层第
k
k
k级第
i
i
i个点的特征。
一个给定的参考点不一定在所有相机图像中可见,所以我们需要一些启发式方法来过滤无效点。为了达到这个效果,我们定义一个二分值 σ ℓ k m i \sigma_{\ell kmi} σℓkmi来表示参考点投影是否在图像平面外。最终的特征 f ℓ i f_{\ell i} fℓi和下一层的目标查询 q ( ℓ + 1 ) i q_{(\ell + 1)i} q(ℓ+1)i由下式给出: f ℓ i = 1 ∑ k ∑ m σ ℓ k m i + ϵ ∑ k ∑ m f ℓ k m i σ ℓ k m i a n d q ( ℓ + 1 ) i = f ℓ i + q ℓ i (4) f_{\ell i}=\frac{1}{\sum_k \sum_m \sigma_{\ell kmi} + \epsilon}\sum\limits_{k}\sum\limits_{m}f_{\ell kmi}\sigma_{\ell kmi} and q_{(\ell + 1)i}=f_{\ell i} + q_{\ell i} \tag{4} fℓi=∑k∑mσℓkmi+ϵ1k∑m∑fℓkmiσℓkmi and q(ℓ+1)i=fℓi+qℓi(4)其中 ϵ \epsilon ϵ是一个防止除零的极小值。最后,对于每个目标查询 q ℓ i q_{\ell i} qℓi,我们用神经网络 Φ ℓ r e g \Phi_{\ell}^{\mathrm{reg}} Φℓreg和 Φ ℓ c l s \Phi_{\ell}^{\mathrm{cls}} Φℓcls预测一个包络框 b ^ ℓ i \hat{b}_{\ell i} b^ℓi及其类别标签 c ^ ℓ i \hat{c}_{\ell i} c^ℓi: b ^ ℓ i = Φ ℓ r e g ( q ℓ i ) a n d c ^ ℓ i = Φ ℓ c l s ( q ℓ i ) (5) \hat{b}_{\ell i}=\Phi_{\ell}^{\mathrm{reg}}(q_{\ell i}) and \hat{c}_{\ell i}=\Phi_{\ell}^{\mathrm{cls}}(q_{\ell i})\tag{5} b^ℓi=Φℓreg(qℓi) and c^ℓi=Φℓcls(qℓi)(5) 我们在训练阶段计算每一层预测 B ^ ℓ = { b ^ ℓ 1 , … , b ^ ℓ j , … , b ^ ℓ M ∗ } ⊂ R 9 \hat\mathcal{B}_{\ell}=\{\hat b_{\ell 1},\dots,\hat b_{\ell j},\dots,\hat b_{\ell M*}\}\subset\mathbb{R}^9 B^ℓ={b^ℓ1,…,b^ℓj,…,b^ℓM∗}⊂R9和 C ^ ℓ = { c ^ ℓ 1 , … , c ^ ℓ j , … , c ^ ℓ M ∗ } ⊂ Z \hat\mathcal{C}_{\ell}=\{\hat c_{\ell 1},\dots,\hat c_{\ell j},\dots,\hat c_{\ell M*}\}\subset\mathbb{Z} C^ℓ={c^ℓ1,…,c^ℓj,…,c^ℓM∗}⊂Z的损失。在推理阶段,我们只使用最后一层的输出。
3.4 Loss
我们使用set-to-set损失来衡量预测集合 ( B ^ ℓ , C ^ ℓ ) (\hat\mathcal{B}_\ell,\hat\mathcal{C}_\ell) (B^ℓ,C^ℓ)和真值集合 ( B , C ) (\mathcal{B},\mathcal{C}) (B,C)之间的差异。这个损失包含两部分:对于类别标签的focal loss和包络框参数的 L 1 L^1 L1损失。为了表述方便,我们省略 B ^ ℓ , C ^ ℓ \hat\mathcal{B}_\ell,\hat\mathcal{C}_\ell B^ℓ,C^ℓ的下标 ℓ \ell ℓ。真值框数目 M M M通常小于预测数 M ∗ M^* M∗,为了计算简便,我们使用 ∅ \varnothing ∅填充真值框集合到 M ∗ M^* M∗。我们通过双边匹配问题建立真值和预测的关联: σ ∗ = a r g m i n σ ∈ P ∑ j = 1 M − 1 { c j ≠ ∅ } p ^ σ ( j ) ( c j ) + 1 { c j = ∅ } L b o x ( b j , b ^ σ ( j ) ) \sigma^*=\mathrm{argmin}_{\sigma\in\mathcal{P}}\sum_{j=1}^{M}-1_{\{c_j\neq\varnothing\}\hat p_{\sigma(j)}(c_j)}+1_{\{c_j=\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_j,\hat b_{\sigma(j)}) σ∗=argminσ∈Pj=1∑M−1{cj=∅}p^σ(j)(cj)+1{cj=∅}Lbox(bj,b^σ(j))其中 P \mathcal{P} P表示排列的集合, p σ ( j ) ( c j ) p_{\sigma(j)}(c_j) pσ(j)(cj)是索引为 σ ( j ) \sigma(j) σ(j)的预测类别 c j c_j cj的概率, L b o x \mathcal{L}_\mathbb{box} Lbox是包络框参数的 L 1 L^1 L1损失。我们用匈牙利算法来求解这个分配问题,产生set-to-set损失 L s u p = ∑ j = 1 N − l o g p ^ σ ∗ ( j ) ( c j ) + 1 { c j ≠ ∅ } L b o x ( b j , b ^ σ ∗ ( j ) ) \mathcal{L_{sup}}=\sum_{j=1}^N-\mathrm{log}\hat p_{\sigma^*(j)}(c_j)+1_{\{c_j\neq\varnothing\}}\mathcal{L}_\mathrm{box}(b_j,\hat b_{\sigma^*(j)}) Lsup=j=1∑N−logp^σ∗(j)(cj)+1{cj=∅}Lbox(bj,b^σ∗(j))
4. Experiment
首先,我们在4.1节详细介绍数据集、指标以及实现;然后在4.2节对我们的方法和现有方法进行对比;4.3节中我们用基准测试不同的模型在相机交叠区域的性能;4.4节我们与前向模型进行比较;4.5节我们提供额外的分析和消融实验。
4.1 Implementation Details
Dataset
我们在nuScenes数据集上测试我们的方法。nuScenes包含1000个视频序列,每个序列大约20s,取样频率20帧/s。每一帧包含6个相机的图像[front_left, front, front_right, back_left, back, back_right],也提供了相机内外餐。nuScenes每0.5s标注一次,训练集、验证集、测试集分别有28k,6k,6k的标注样本。总共23个类别,其中10个类别可用于计算指标。
Metrics
我们遵循nuScenes官方提供的评估协议。我们评估平均平移误差(ATE)、平均尺度误差(ASE)、平均方向误差(AOE)、平均速度误差(AVE)以及平均属性误差(AAE)。这些指标都是真阳性(TP)指标并且按物理单元计算。另外,我们还计算mAP。为了评估检测任务各方面性能,定义了一个综合度量指标——nuScenes Detection Score(NDS):
N
D
S
=
1
10
[
5
m
A
P
+
∑
m
T
P
∈
T
P
(
1
−
m
i
n
(
1
,
m
T
P
)
)
]
NDS=\frac{1}{10}[5\mathrm{mAP}+\sum_{mTP\in\mathbb{TP}}(1-\mathrm{min}(1, \mathrm{mTP}))]
NDS=101[5mAP+mTP∈TP∑(1−min(1,mTP))]
Model
我们的模型包含一个ResNet特征提取器,一个FPN,一个DETR3D检测头。我们在ResNet101的第三和第四阶段使用可形变的卷积。FPN输入ResNet的输出特征,产生大小分别为1/8,1/16,1/32,1/64的特征图。DETR3D包含6层,每一层由一个特征提炼步骤和一个多头注意力层组成。DETR3D检测头的隐藏层维度为256。最后,两个子网络为每个目标查询预测包络框参数以及类别标签;每个子网络包含两层256维度的全连接层。我们在检测头中使用LayerNorm。
Training & inference
我们使用AdamW贯穿整个训练过程。
w
e
i
g
h
t
_
d
e
c
a
y
=
1
0
−
1
\mathrm{weight\_decay}=10^{-1}
weight_decay=10−1,初始学习率为
1
0
−
4
10^{-4}
10−4,在第8和第11个epoch时衰减至
1
0
−
5
10^{-5}
10−5和
1
0
−
6
10^{-6}
10−6。模型在8张RTX 3090GPU上训练12个epoch,每个GPU的
b
a
t
c
h
_
s
i
z
e
=
1
\mathrm{batch\_size=1}
batch_size=1。训练过程大约18小时,我们在推理阶段没有使用任何诸如NMS的后处理。我们使用nuScenes评估工具包进行评估。
4.2 Comparison to Existing Works
我们比较了之前的SOTA方法CenterNet和FCOS3D。CenterNet是一个anchor-free的2D检测方法,在高分辨率的特征图上进行密集预测。FCOS3D使用FCOS的流程来对每个像素进行预测。这些方法都是将3D目标检测转换成2D问题,但这么做忽略了场景几何信息和传感器配置。如果要在多个视角下进行目标检测,这些方法每个相机的图像进行单独处理,而且需要使用全局NMS来去除每个镜头下以及相机重叠区域内的冗余框。如表1所示,我们的方法在不使用任何后处理的情况下,性能优于其它方法。我们的方法在mATE指标上不如FCOS3D,猜测是由于FCOS3D直接预测包络框的深度,导致对于目标位置有一个很强的监督。同样,FCOS3D为不同的包络参数使用了不同的头,可以提升性能。
在测试集上(表2),我们的方法性能由于所有已有方法;为了公平比较,我们使用了DD3D同样的主干。
![](https://i-blog.csdnimg.cn/blog_migrate/0737c43c5f67b2e21dec1cf686d71ac3.png)
4.3 Comparison in Overlap Regions
在相机交叠区域预测更加困难,因为目标更有可能被截断。我们的方法同时考虑所有的相机,FCOS3D则对每个相机单独进行包络框预测。为了进一步说明融合推理方式的优点,我们单独统计了落入相机交叠区域包络框的性能。为了计算这个指标,我们选择那些3D中心在多个相机中可见的包络框。在验证集上,有18147个这样的框,占总体的9.7%。表3展示了这个结果;我们的方法的NDS分数大幅超过FCOS3D。这证实了我们融合预测的方法更加有效。
![](https://i-blog.csdnimg.cn/blog_migrate/90fa910dcf1dd74f5f0c50d3f2ada4a7.png)
4.4 Comparison to pseudo-LiDAR Methods
另一种进行3D目标检测的方法是使用深度预测模型生成周视图像的伪激光雷达点云。在nuScenes数据集上,目前还没有公开的为激光雷达方法供我们直接进行比较。因此,我们自己实现了基线并验证我们的方法比显示深度预测更有效。我们使用预训练PackNet预测6个相机图像的深度图 ,然后利用相机参数将深度图转换成点云。我们同样在带有速度监督信息的自监督PackNet上进行了实验,但是我们发现真值深度监督能产生更加真实的点云,因此我们最终使用监督模型作为基线。对于3D检测,我们使用最近提出的CenterPoint架构。从概念上讲,这个流程是伪雷达的一种变体。表4展示了实验结果,我们可以推断这种伪激光雷达方法远不及我们的方法,尽管使用了当前SOTA的模型。一个可能的解释是伪激光雷达目标检测器受不准确深度预测的复合误差影响,这反过来又会过拟合训练数据,导致在在其他分布上泛化性能差。
![](https://i-blog.csdnimg.cn/blog_migrate/be56f2741e92e35827a22c8d4fdd1f92.png)
4.5 Ablation & Analysis
我们在图2中提供了目标查询优化的可视化效果。我们将每一层从目标查询解码的都的包络框进行了可视化。可以看到模型的层数越深,包络框和真值框更接近。同样的,最左侧的图表示学习到的目标查询先验被所有数据共享。我们同样对对结果进行了量化,如表5所示,说明了迭代优化的确显著提升了性能。此外,我们在表6提供了目标查询数量的消融实验,当增加到900时性能趋于饱和。最后,表7为不同主干的对比结果。
我们同样在图3中提供了定性结果方便更加直观的了解默哀脑血管性能。我们将预测包络框投影道6个相机图像以及BEV俯视图。通常,我们的方法生成了合理的结果,甚至探测到了远处相对较小的目标。然而,我们的方法仍然表现出很大的位置错误(符合4.2节的表格结果):尽管我们的方法避免了显示预测深度,但是深度估计仍然是这个问题中的核心挑战。
![](https://i-blog.csdnimg.cn/blog_migrate/c288b9b4e4dd0a57481bcddf3b9442d6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f26ea00c78fd129c266f136709544008.png)
![](https://i-blog.csdnimg.cn/blog_migrate/066d9ec22c07dcd8fa46825bd6c0a7da.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dc029f7f736e16b3367ac60d80a4a410.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f780ac51113a06f42c162dae88b11437.png)
5. Conclusion
我们提出了一种新的范式用于解决从2D图形恢复3D信息的不适定逆问题。在这种情况下,如果没有从数据中学习的先验,输入信号缺少模型进行有效预测的必要信息。其他方法要么仅在2D计算上运行,要么使用额外的深度网络来重建场景,而我们的方法在3D空间中运行,并根据需要使用反向投影来检索图像特征。我们方法的好处有两方面:(1) 减少了对中层表征的需求(比如预测的深度图或点云),这可能是复合误差的来源;(2) 通过投影同一个3D点到所有可用帧来使用多个相机的信息。
除了将我们的工作直接应用于自动驾驶的 3D 物体检测之外,还有几个方面值得未来探究。 例如,单点投影在检索到的图像特征图中创建了一个有限的感受野,为每个目标查询采样多个点将包含更多用于对象优化的信息。 此外,新的检测头与输入无关,包括 LiDAR/RADAR 等其他模态将提高性能和鲁棒性。 最后,将我们的流程推广到其他领域,如室内导航和对象操作,将扩大其应用范围,并揭示进一步改进的其他方法。