论文地址:Probabilistic and Geometric Depth: Detecting Objects in Perspective
Github 地址:Probabilistic and Geometric Depth: Detecting Objects in Perspective
1. 解决了什么问题?
3D 目标检测在许多应用中发挥着重要作用,如驾驶辅助系统。单目 3D 检测的成本要比依赖 LiDAR 的方案低,但是效果都比较差。难点在于,模型的输入是 2D 数据,但是输出却是 3D 预测。
本文认为,单目 3D 检测问题实质上可简化为实例深度估计的问题。如果实例的深度估计不准确,会妨碍其它 3D 属性的预测,无法保证算法的整体表现。
以前的工作首先使用一个繁重的深度估计模型,为 2D 检测器提供深度信息。另一些方法将深度作为 3D 定位任务的一个维度去预测,简化了架构;但它们是基于单独的实例或像素点来回归深度信息,忽视了不同物体之间的几何关系。图像中各物体是同时存在的,它们之间的几何关系对于深度估计也非常有价值。
2. 提出了什么方法?
提出了 “Probabilistic and Geometric Depth (PGD)”,利用概率深度不确定性和实例之间的几何关系来估计深度。在极端场景中,每个实例的深度估计通常是不准确的,于是作者加入了一个概率表征来得到预测深度的不确定性。如下图 (a) 所示,用概率表征来预测每个实例的深度,首先将深度值划分为一组区间,通过该分布的期望可计算出深度值,再用该分布的
top-
k
\text{top-}k
top-k个置信度得分的均值来表示深度的不确定性,均值越大表示深度越确定。为了建模实例间的几何关系,作者进一步构建了一个深度传播图(depth propagation graph),用上下文的关系来增强预测,如下图 (b) 所示。
3d700c40c8b5826775cb48bf49.png#pic_center" alt="在这里插入图片描述" width="750" />
2.1 Preliminary and Motivating Study
传统的 2D 目标检测需要为每个感兴趣目标预测出 2D 边框和类别标签,而单目 3D 检测器需要预测七自由度的 3D 边框。这么看,单目 3D 检测比 2D 检测效果差的直接原因在于,3D 定位任务要回归的目标更多,而且更困难。因此作者选择 FCOS3D 作为基线模型,它结构简洁,能有效地提取 2D 特征,并对 3D 检测的 targets 做了适配。如下图左所示,它有两个分支,分别用于分类和回归。在回归分支上,检测器预测输出特征图上每个位置的 3D 属性,包括到投影后 3D 中心点的偏移量
(
Δ
x
,
Δ
y
)
(\Delta x,\Delta y)
(Δx,Δy)、深度
d
d
d、3D 大小
(
w
3
D
,
l
3
D
,
h
3
D
)
(w^{3D},l^{3D},h^{3D})
(w3D,l3D,h3D)、旋转角度
θ
\theta
θ的正弦值、方向类别
C
θ
C_\theta
Cθ、centerness
c
c
c、到 2D 框四条边的距离
(
l
,
r
,
t
,
b
)
(l,r,t,b)
(l,r,t,b)。
作者在 KITTI 和 nuScenes 两个基准上做了测试,逐个地将预测值替换为 Ground-truths,找出性能瓶颈。如下图所示,从左到右分别是 KITTI 基准基于 3D IoU 的 mAP、nuScenes 的 NDS、nuScenes 基于距离的 mAP。作者发现,不准确的深度估计会阻碍其它所有子任务的预测,而准确的深度估计能带来显著的性能提升(绿线)。因此,当前的单目 3D 检测,尤其是 3D 定位问题,可以归约为实例深度估计问题。
2.2 Approach
给定由参数相近的相机采集的图像,以前的工作通常是直接回归每个实例的深度值,期望模型能学到规律,即特定外观和尺寸的物体总是出现在特定深度的位置。但这是很难学到的,因为目标的外观和尺寸差异很大,预测的准确率就很低。直接回归孤立的像素点的深度是很困难的,于是本文构建了一个通晓不确定性的深度传播图,利用各实例间的上下文关系来增强深度估计。
2.2.1 Uncertainty Modeling with Probabilistic Representation
对于单阶段检测器,估计深度的最直接办法就是在回归分支上增加一个小 head,输出密集的深度图。如上面第二张图所示,假定输入图像的尺寸是
H
×
W
H\times W
H×W,直接回归的深度输出记做
D
R
∈
R
H
×
W
D_R\in \mathbb{R}^{H\times W}
DR∈RH×W。然后为了构建有效的深度传播机制,就必须对每个实例的深度预测做不确定性建模,从而引导如何加权各实例间的传播。为此,作者采用了一个简单而有效的概率表征:考虑到在特定区间内深度值是连续的,作者将深度间隔均匀划分成一组离散的值,用分布的期望来表示该预测深度。假定检测的区间是
0
∼
D
m
a
x
0\sim D_{max}
0∼Dmax,离散化的单位是
U
U
U,那么我们有
C
=
⌊
D
m
a
x
/
U
⌋
+
1
C=\lfloor D_{max}/U\rfloor+1
C=⌊Dmax/U⌋+1个分隔点。将这组点记做加权向量
ω
∈
R
C
\omega\in\mathbb{R}^{C}
ω∈RC。然后引入一个新的 head,与直接回归 head 平行,该 head 输出一个概率图(probability map)
D
P
M
D_{PM}
DPM,用下面式子解码:
D
P
=
ω
T
⋅
softmax
(
D
P
M
)
D_P=\omega^T \cdot \text{softmax}(D_{PM})
DP=ωT⋅softmax(DPM)
D
P
D_P
DP就是概率深度(probabilistic depth)。上式等价于计算
softmax
(
D
P
M
)
\text{softmax}(D_{PM})
softmax(DPM)产生的概率分布的期望。除了
D
P
D_P
DP,从每个实例的深度分布,我们能进一步得到深度置信度得分(depth confidence score),记做
s
d
∈
S
D
s^d\in S_D
sd∈SD。当
U
=
10
m
U=10m
U=10m时,我们取
top-
2
\text{top-}2
top-2置信度的均值作为深度置信度得分
s
d
s^d
sd。在推理时,它与中心度得分、分类得分相乘,作为最终的排序指标使用。
后面将
D
R
D_R
DR和
D
P
D_P
DP融合,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)是 sigmoid 函数,
λ
\lambda
λ是一个与数据无关的学习参数:
D
L
=
σ
(
λ
)
D
R
+
(
1
−
σ
(
λ
)
)
D
P
D_L=\sigma(\lambda)D_R + (1-\sigma(\lambda))D_P
DL=σ(λ)DR+(1−σ(λ))DP
D
L
D_L
DL是每个孤立的实例的局部深度估计(local depth estimation),用它和
D
P
M
D_{PM}
DPM计算的深度得分一起构建深度传播图(depth propagation graph)。
本文的实现与传统的单目深度估计不同,传统方法通常会将深度间隔划分得很细,然后用分类和残差回归进一步估计深度值。本文方法则回归连续的值,更加高效、直接。
2.2.2 Depth Propagation from Perspective Geometry
有了各孤立实例的深度预测 D L D_L DL和用于不确定性估计的深度置信度得分 S D S_D SD,我们就能根据上下文几何关系构建出传播图。在典型的的驾驶场景中,我们可以发现一个通用的约束,即几乎所有的物体都在地面上。为了解决深度估计问题,考虑到各实例间的相互关系,作者提出了一个几何深度传播机制。下面,作者首先推导两个实例之间的透视关系,然后阐述基于图的深度传播机制。
透视关系
在透视投影中,假设相机参数矩阵
P
P
P为:
P
=
(
f
0
c
u
−
f
b
x
0
f
c
v
−
f
b
y
0
0
1
−
f
b
z
)
P=\begin{pmatrix} f & 0 & c_u & -fb_x\\ 0 & f & c_v & -fb_y\\ 0 & 0 & 1 & -fb_z\\ \end{pmatrix}
P=
f000f0cucv1−fbx−fby−fbz
f
f
f是焦距,
c
u
,
c
v
c_u, c_v
cu,cv是图像中相机在水平和垂直方向的位置,
b
x
,
b
y
,
b
z
b_x,b_y,b_z
bx,by,bz是关于参考相机位置的参数(KITTI 中是非零的值,通过
−
f
b
x
,
−
f
b
y
,
−
f
b
z
-fb_x,-fb_y,-fb_z
−fbx,−fby,−fbz把不同位置的相机平面统一到 P0 相机下;在 nuScenes 中都是
0
0
0值)。注意,作者用单个
f
f
f表示
u
u
u轴和
v
v
v轴的焦距。相机坐标系的一个 3D 点
x
3
D
=
(
x
,
y
,
z
,
1
)
T
\mathbf{x^{3D}}=(x,y,z,1)^T
x3D=(x,y,z,1)T可以通过下面的等式投影到图像的点
x
2
D
=
(
u
′
,
v
′
,
1
)
T
\mathbf{x^{2D}}=(u',v',1)^T
x2D=(u′,v′,1)T:
d
⋅
x
2
D
=
P
⋅
x
3
D
d\cdot \mathbf{x_{2D}}=P\cdot \mathbf{x_{3D}}
d⋅x2D=P⋅x3D
为了简化结果,将
v
′
v'
v′替换为
v
+
c
v
v+c_v
v+cv,
v
v
v表示到水平线(即消失线)的距离(朝下是正方向)。然后我们得到:
v
⋅
d
=
f
⋅
(
y
−
b
y
+
c
v
⋅
b
z
)
v\cdot d = f\cdot (y-b_y+c_v \cdot b_z)
v⋅d=f⋅(y−by+cv⋅bz)
对
u
u
u来说,也是如此。考虑到所有的目标都在地面上,目标框底边中心的
y
y
y是相同的(相机坐标系的高度),所以作者主要考虑
v
v
v的关系。假定有两个目标
1
,
2
1,2
1,2,它们中心点深度的关系就是:
d
2
=
v
1
v
2
d
1
+
f
v
2
(
y
2
−
y
1
)
≈
v
1
v
2
d
1
+
f
2
v
2
(
h
1
3
D
−
h
2
3
D
)
≜
d
1
→
2
P
d_2=\frac{v_1}{v_2}d_1+\frac{f}{v_2}(y_2-y_1)\approx \frac{v_1}{v_2}d_1+\frac{f}{2v_2}(h_1^{3D}-h_2^{3D})\triangleq d_{1\rightarrow 2}^P
d2=v2v1d1+v2f(y2−y1)≈v2v1d1+2v2f(h13D−h23D)≜d1→2P
我们可以利用两个 3D 中心点的高度差,有了
d
1
d_1
d1就可准确地预测
d
2
d_2
d2。此外,假定物体有着相同的底边高度,
y
2
−
y
1
y_2-y_1
y2−y1可以替换为 3D 边框高度一半的差,即
1
2
(
h
1
3
D
−
h
2
3
D
)
\frac{1}{2}(h_1^{3D}-h_2^{3D})
21(h13D−h23D),记做
d
1
→
2
P
d_{1\rightarrow 2}^P
d1→2P。
在这个关系中,当
h
1
3
D
=
h
2
3
D
h_1^{3D}=h_2^{3D}
h13D=h23D时,
v
1
d
1
=
v
2
d
2
v_1d_1=v_2d_2
v1d1=v2d2,即一个物体越靠近消失线,它就越远。这是关系很清晰,但也会犯错。假定
∣
(
y
2
−
y
1
)
−
1
2
(
h
1
−
h
2
)
∣
=
δ
|(y_2-y_1)-\frac{1}{2}(h_1-h_2)|=\delta
∣(y2−y1)−21(h1−h2)∣=δ,深度误差就是
Δ
d
=
f
v
2
δ
\Delta d=\frac{f}{v_2}\delta
Δd=v2fδ。当
δ
=
0.1
m
,
v
2
=
50
\delta=0.1m, v_2=50
δ=0.1m,v2=50像素点时,
Δ
d
\Delta d
Δd大约就是 1.5 米。尽管对于距离 30米远的物体来说可以接受(对应的
v
2
=
50
v_2=50
v2=50),我们也需要一个机制来避免更大的误差。它由 edge pruning 和 gating 机制组成。
基于图的深度传播
有了两两之间的透视关系,我们就能根据其它物体的线索,估计任意物体的深度了。然后就可以构建一个筹密的有向图,在任意两个物体之间都使用双向的边代表深度传播,如下图左所示。假设我们有
N
N
N个预测目标,
P
=
{
1
,
2
,
3
,
.
.
.
,
n
}
\mathcal{P}=\lbrace 1,2,3,...,n \rbrace
P={1,2,3,...,n}是索引的集合,给定所有
j
∈
P
j\in\mathcal{P}
j∈P的
d
j
→
i
P
d_{j\rightarrow i}^P
dj→iP,我们能估计出目标
i
i
i的深度,即几何深度
d
i
G
∈
D
G
d_i^G \in D_G
diG∈DG。考虑到计算效率和可能的误差,作者使用了 edge pruning 和 edge gating 机制来优化传播图。作者发现,距离近的同类别物体能很好地满足“相同地面”条件,所以作者选择了下面三个最重要的因素来决定哪些边是重要的且可靠的:深度置信度得分
s
j
d
s_j^d
sjd、2D 距离得分
s
i
j
2
D
s_{ij}^{2D}
sij2D、类别相似度
s
i
j
c
l
s
s_{ij}^{cls}
sijcls。
s
i
j
2
D
s_{ij}^{2D}
sij2D、
s
i
j
c
l
s
s_{ij}^{cls}
sijcls和全边得分
s
j
→
i
e
s_{j\rightarrow i}^e
sj→ie计算如下:
s
i
j
2
D
=
1
−
t
i
j
2
D
t
m
a
x
2
D
,
s
i
j
c
l
s
=
f
i
⋅
f
j
∥
f
i
∥
2
⋅
∥
f
j
∥
2
,
s
j
→
i
e
=
s
j
d
⋅
s
i
j
2
D
⋅
s
i
j
c
l
s
∑
j
=
1
k
s
j
d
⋅
s
i
j
2
D
⋅
s
i
j
c
l
s
s_{ij}^{2D}=1-\frac{t_{ij}^{2D}}{t_{max}^{2D}},\quad \quad \quad s_{ij}^{cls}=\frac{\bm{f_i}\cdot \bm{f_j}}{\left\|\bm{f_i}\right\|_2 \cdot \left\|\bm{f_j}\right\|_2},\quad \quad \quad s_{j\rightarrow i}^e = \frac{s_j^d \cdot s_{ij}^{2D} \cdot s_{ij}^{cls}}{\sum_{j=1}^k s_j^d \cdot s_{ij}^{2D} \cdot s_{ij}^{cls}}
sij2D=1−tmax2Dtij2D,sijcls=∥fi∥2⋅∥fj∥2fi⋅fj,sj→ie=∑j=1ksjd⋅sij2D⋅sijclssjd⋅sij2D⋅sijcls
t
i
j
2
D
t_{ij}^{2D}
tij2D是目标
i
i
i和
j
j
j预测中心点之间的距离,
t
m
a
x
2
D
t_{max}^{2D}
tmax2D设定为图像对角线的长度,
f
i
,
f
j
\bm{f_i}, \bm{f_j}
fi,fj是分类分支输出的两个目标的置信度向量,
k
k
k是 pruning 后剩余的边个数的最大值(保留得分
top-k
\text{top-k}
top-k个边)。然后将每条边的得分用于 edge gating,这样每个节点都能关注到它所在的边。几何深度定义为:
d
i
G
=
∑
j
=
1
k
s
j
→
i
e
⋅
d
j
→
i
P
d_i^G = \sum_{j=1}^k s_{j\rightarrow i}^e \cdot d_{j\rightarrow i}^P
diG=j=1∑ksj→ie⋅dj→iP
注意,从这个图获取几何深度图
D
G
D_G
DG是不需要参数学习的。为了避免影响其它模块的学习,切断梯度反向传播的计算。
Probabilistic and Geometric Depth Estimation
至此,我们得到了两种深度预测
D
L
,
D
G
D_L, D_G
DL,DG,分别来自于孤立的上下文估计和基于图的上下文估计。然后以学习的方式融合这两种预测。考虑到各种极端的场景,融合
D
L
D_L
DL和
D
G
D_G
DG比较复杂,所以作者增加了一个输出位置的权重图
α
∈
R
H
×
W
\alpha\in \mathbb{R}^{H\times W}
α∈RH×W的分支,来融合它们:
D
=
σ
(
α
)
∘
D
L
+
(
1
−
σ
(
α
)
)
∘
D
G
D=\sigma(\alpha)\circ D_L + (1-\sigma(\alpha))\circ D_G
D=σ(α)∘DL+(1−σ(α))∘DG
用融合得到的深度
D
D
D替换基线模型中直接回归的
D
R
D_R
DR,用 smooth L1 损失进行端到端的训练。通过观察发现,增加中间的监督信号能让训练更加稳定,但不会带来多少性能增益。
2.3 实验
在 KITTI 和 nuScenes 基准上做了测试,评价模型的表现和效率。
2.3.1 Datasets and Evaluation Metrics
KITTI 包括了
7481
/
7518
7481/7518
7481/7518个训练/测试样本,训练样本分为
3712
/
3769
3712/3769
3712/3769个样本作为训练/验证使用。KITTI 的场景和类别有点少,于是又在 nuScenes 基准上做了测试。
nuScenes 共有
1000
1000
1000个场景的多模态数据,包括
6
6
6个相机的 RGB 图像、
5
5
5个毫米波雷达和
1
1
1个激光雷达的点云。训练/验证/测试集分别有
750
/
150
/
150
750/150/150
750/150/150个场景。总共有
140
140
140万个 3D 标注框,涉及
10
10
10个类别。nuScenes 使用基于距离的 mAP 和 NDS 度量。
2.3.2 实现细节
网络结构
如上面第二张图所示,基线模型延续了 FCOS3D。给定输入图像,使用 ResNet-101 作为主干网络提取特征,然后 FPN 输出多层级的特征图。检测 heads 是共享的,但使用了
3
3
3个系数来区分最终的回归结果,包括偏移量、深度、尺寸。
在深度估计模块,超参
U
U
U设定为
10
m
10m
10m,
k
k
k设定为
5
5
5。
训练参数
随机初始化网络,从零进行端到端的训练。使用 SGD 优化器训练模型,学习率为 0.001 0.001 0.001,warmup 500 500 500 次 iterations,warmup ratio 为 0.33 0.33 0.33,对于 nuScenes/KITTI 数据集分别使用 16 / 4 16/4 16/4张 1080Ti 显卡,batch size 分别为 32 / 12 32/12 32/12。
数据增强
只用了图像翻转增强,对 2D 图像将 2D 坐标和偏移做了翻转,在 3D 空间则变换 3D 边框。
2.3.3 消融实验
最后,作者在 KITTI 和 nuScenes 基准上做了消融实验,验证本文所提的方法的有效性。从上表可看到,local constraints 能明显增强基线模型,probabilistic and geometric depth 能进一步提升性能,尤其是 mAP 和 mATE 指标。
下表说明本文的关键方法能在
IoU
≥
0.7
\text{IoU}\geq 0.7
IoU≥0.7的 AP 下增强深度估计。概率表征(prop. branch)、直接回归(w/ direct)、深度得分(depth score)结合起来,便构成了最终的方法。
对于几何深度,简单的融合局部估计值并不能带来明显的增益。通过 edge pruning 和 edge gating、切断非必要的梯度传播(cut off grad.)可以去除可能存在的噪声,使网络更加关注于融合,整体架构从而更加有效。
在下表,作者比较了从概率分布计算深度得分的可能方案,包括
Top-
2
\text{Top-}2
Top-2score、normalized entropy、standard deviation。
Top-
2
\text{Top-}2
Top-2Score 的效率和表现更好。
Local Geometric Constraints
FCOS3D 生硬地将网络输出适配到 3D 检测的 targets。这些预测属性之间彼此独立,网络很难学习,尤其是在数据有限的情况下。该检测器能在 2D 车辆检测上取得
90
%
90\%
90%的准确率,于是作者在目标函数里面也加入了 2D 定位,用它来正则化 3D 输出。
如上面第二张图所示,在 2D 预测框和 3D 预测框的外接 2D 框之间,作者增加了一个 consistency loss (GIoU Loss),用来增强基线模型,这对小数据集如 KITTI 很重要。注意,要想准确地回归深度是很困难的,于是在计算 consistency loss 时使用了 ground-truth depth 来得到 3D 框。
通常当数据有限时,网络很难单独地直接回归不同的 3D 目标(偏移、深度、朝向角等)。如下图所示,基线模型对相邻的大物体所预测的朝向角可能非常不准确,根据 3D 框外接的 2D 框就能很容易地就验证出 3D 预测是否准确。于是作者在目标函数中增加了一个更加可靠的 2D 定位,正则化 3D 预测。简单的局部约束就能缓解这个问题,而不会在推理时引入额外的计算开支。
Loss
基本延续了 FCOS3D 的损失函数设计,除了加入了本文提出的 consistency loss 并对不同数据集做了适配。
首先使用了 focal loss 作为目标分类损失:
L
c
l
s
=
−
α
(
1
−
p
)
γ
log
p
L_{cls}=-\alpha (1-p)^\gamma \log p
Lcls=−α(1−p)γlogp
p
p
p是预测框的类别概率,
α
=
0.25
,
γ
=
2
\alpha=0.25,\gamma=2
α=0.25,γ=2。
nuScenes 数据集还有一个属性分类,使用了简单的 softmax 分类损失,记做
L
a
t
t
r
L_{attr}
Lattr。
在回归分支,除了 centerness,对每个回归目标都使用 smooth L1 损失:
L
l
o
c
=
∑
b
∈
(
Δ
x
,
Δ
y
,
d
,
w
,
l
,
h
,
θ
,
v
x
,
v
y
)
SmoothL1
(
Δ
b
)
L_{loc}=\sum_{b\in(\Delta x, \Delta y, d,w,l,h,\theta,v_x,v_y)}\text{SmoothL1}(\Delta b)
Lloc=b∈(Δx,Δy,d,w,l,h,θ,vx,vy)∑SmoothL1(Δb)
Δ
x
,
Δ
y
,
d
,
w
,
l
,
h
,
θ
\Delta x, \Delta y, d, w, l, h, \theta
Δx,Δy,d,w,l,h,θ损失的权重为
1
1
1,
v
x
,
v
y
v_x,v_y
vx,vy的权重为
0.05
0.05
0.05。
方向分类损失用的是 softmax 分类损失,记做
L
d
i
r
L_{dir}
Ldir。
Centerness 回归用的是 BCE 损失,记做
L
c
t
L_{ct}
Lct。
对于局部几何约束,预测 2D 框记做
B
2
D
\bm{B_{2D}}
B2D,3D 框投影后的外接 2D 框记做
B
p
r
o
j
\bm{B_{proj}}
Bproj,consistency loss 为:
L
g
e
o
=
GIoU
(
B
2
D
,
B
p
r
o
j
)
L_{geo}=\text{GIoU}(\bm{B_{2D}}, \bm{B_{proj}})
Lgeo=GIoU(B2D,Bproj)
最终的损失是:
L
=
1
N
p
o
s
(
β
c
l
s
L
c
l
s
+
β
a
t
t
r
L
a
t
t
r
+
β
l
o
c
L
l
o
c
+
β
d
i
r
L
d
i
r
+
β
c
t
L
c
t
+
β
g
e
o
L
g
e
o
)
L=\frac{1}{N_{pos}}(\beta_{cls}L_{cls}+\beta_{attr}L_{attr}+\beta_{loc}L_{loc}+\beta_{dir}L_{dir}+\beta_{ct}L_{ct}+\beta_{geo}L_{geo})
L=Npos1(βclsLcls+βattrLattr+βlocLloc+βdirLdir+βctLct+βgeoLgeo)
N
p
o
s
N_{pos}
Npos是预测的正样本的个数,
β
c
l
s
=
β
a
t
t
r
=
β
l
o
c
=
β
d
i
r
=
β
c
t
=
β
g
e
o
=
1
\beta_{cls}=\beta_{attr}=\beta_{loc}=\beta_{dir}=\beta_{ct}=\beta_{geo}=1
βcls=βattr=βloc=βdir=βct=βgeo=1。注意,
L
a
t
t
r
L_{attr}
Lattr和
L
l
o
c
L_{loc}
Lloc里的 velocity loss 只用于 nuScenes 实验。
针对 KITTI 特别的损失设计
因为 KITTI 样本数量有限,评价标准严格,作者使用了两项特别的损失设计。
- 增加了一个辅助关键点损失,增强局部几何一致性。将 3D 框 8 8 8个顶点到某一前景点的 2D 偏移记做 k ∈ R 1 × 16 \bm{k}\in\mathbb{R}^{1\times 16} k∈R1×16,然后将这些偏移量作为 L l o c L_{loc} Lloc的 16 16 16个额外的维度计算损失,权重为 0.2 0.2 0.2。为了让 FPN 的学习稳定,作者归一化了这些偏移量,操作与 2D 框内点到四条边的偏移所做的归一化做法相同。
- 作者借鉴了 Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics,针对多任务学习,使用了一个更有效的不确定性方案。参考了最大似然和同方差不确定性,将深度损失定义为:
L d e p t h = L 1 ( D ^ , D ) 2 σ 2 + log σ L_{depth}=\frac{L_1(\hat{D}, D)}{2\sigma^2}+\log \sigma Ldepth=2σ2L1(D^,D)+logσ
D ^ \hat{D} D^和 D D D是深度的真值和预测值, L 1 L_1 L1表示 Smooth L1 \text{Smooth L1} Smooth L1损失, δ = 3.0 \delta=3.0 δ=3.0, σ \sigma σ是不确定性的变量。为了让学习变得简单,我们只针对深度估计,训练网络去预测方差的对数 s = log σ 2 s=\log \sigma^2 s=logσ2,这要比直接预测方差数值上稳定一些。因此深度损失的权重就是 exp ( − s ) \exp(-s) exp(−s)。这样深度损失就会相对其它损失项自适应地调节权重。
此外在推理时,不确定性权重 exp ( − s ) \exp(-s) exp(−s)可与置信度得分相乘,预测深度越准确,它有了更高的得分。
注意,这项改进只在 KITTI 基准上有显著的增益,然而在 nuScenes 基准上却严重损害了泛化表现。
2.4 补充实验结果
2.4.1 Basic Validation of Depth Propagation
如下图所示,在单张图像中有多个物体,这里以两个样本为例。给定目标
1
1
1和
2
2
2,它们中心点的关系严格满足:
d
2
=
v
1
v
2
d
1
+
f
v
2
(
y
2
−
y
1
)
d_2=\frac{v_1}{v_2}d_1 + \frac{f}{v_2}(y_2-y_1)
d2=v2v1d1+v2f(y2−y1)
考虑到两个物体有着相同的地平面(底边高度),我们能得到近似的关系:
d
2
=
v
1
v
2
d
1
+
f
2
v
2
(
h
1
3
D
−
h
2
3
D
)
d_2=\frac{v_1}{v_2}d_1 + \frac{f}{2v_2}(h_1^{3D}-h_2^{3D})
d2=v2v1d1+2v2f(h13D−h23D)
其中
d
d
d表示深度,
v
v
v是投影后 2D 目标中心点和消失线的距离,
y
y
y是目标中心点的 3D 高度,
h
3
D
h^{3D}
h3D是 3D 框的高度。如下图左边所示,
8
8
8台车子的深度分别是
{
5.23
,
11.80
,
16.50
,
22.05
,
23.64
,
28.53
,
29.07
,
42.8
}
\lbrace 5.23, 11.80, 16.50, 22.05, 23.64, 28.53, 29.07, 42.8\rbrace
{5.23,11.80,16.50,22.05,23.64,28.53,29.07,42.8}。使用上面的推断,只用前
2
2
2个准确深度值,我们能估计出它们的深度:
{
5.23
,
11.74
,
16.78
,
22.92
,
21.13
,
26.59
,
25.78
,
36.51
}
\lbrace 5.23, 11.74, 16.78, 22.92, 21.13, 26.59, 25.78, 36.51\rbrace
{5.23,11.74,16.78,22.92,21.13,26.59,25.78,36.51}。可以看到,与一般的深度估计方法相似,该传播机制面对远距离物体,产生的错误也更加明显。
可以进一步从上图发现底边不一致的问题。尽管大多数时候,所有的目标有着相近的高度,但依然存在 corner cases。该问题可能是由实际的拓扑关系造成,比如行人站在了台阶上。也有可能是因为标注噪声,尤其是对于不同的类别和远距离的物体。因此,若当前实例的标注信息不充分时,倾向于使用距离近的标注框。另外,有时候激光雷达只扫到了远处物体的顶部,标注人员无法准确地判断它的底边位置。
2.5 量化分析
不同数据集之间的差异
在 KITTI 基准上,深度置信度得分有着重要作用,但在 nuScenes 上只提高了
0.3
%
0.3\%
0.3%NDS,但 mATE 下降了。为了找出原因,作者分析了精度-召回曲线,如下图所示。当召回率低、匹配阈值严格(0.5米和1米,蓝线和黄线)时,深度得分(实线)能极大地提高精度,而当召回率高、匹配阈值宽松(2.0米和4.0米,绿线和红线)时,深度得分反而会不利于表现。该问题对大目标尤其明显。这反映了,深度得分过分地抑制了预测深度不准确的框,但在某些条件下我们应该容忍,比如远距离目标和小目标。
Contributions of Each Depth Estimation
为了理解深度估计的每项构成的角色,作者统计分析了融合权重。首先,对于局部深度估计
D
L
=
σ
(
λ
)
D
R
+
(
1
−
σ
(
λ
)
)
D
P
D_L=\sigma(\lambda)D_R + (1-\sigma(\lambda))D_P
DL=σ(λ)DR+(1−σ(λ))DP,作者发现直接回归
D
R
D_R
DR占了输出结果的
25.6
%
25.6\%
25.6%,即
σ
(
λ
)
=
0.256
\sigma(\lambda)=0.256
σ(λ)=0.256。这说明,直接回归有可能负责回归出概率估计的残差信号。
另一方面,对于最终融合
D
=
σ
(
α
)
∘
D
L
+
(
1
−
σ
(
α
)
)
∘
D
G
D=\sigma(\alpha)\circ D_L + (1-\sigma(\alpha))\circ D_G
D=σ(α)∘DL+(1−σ(α))∘DG,基于验证集在 NMS 操作之前匹配得到的 ground-truths,作者对预测结果的位置权重
σ
(
α
)
\sigma(\alpha)
σ(α)做了统计分析。如下图左边所示,值越高,代表局部估计
D
L
D_L
DL的贡献越大。可以看到,尽管局部估计在很多情形中发挥着重要作用,几何深度传播对整体估计的贡献也很大。此外,在下图右边,作者画出了权重关于预测深度的散点图,可以看到当目标非常近时(可能被图像截断),几何深度的贡献就要更多。
3deea38048ecb0099f1b900002f4.png#pic_center" alt="在这里插入图片描述" width="600" />
在下图,作者画出了权重关于不同类别的柱状图,可以看到当目标比较小时(如行人),几何深度的贡献就要更多。
这两类场景的检测是相对困难的,因而我们要加入一些上下文信息来做推理。
2.6 质量分析
下面展示了 nuScenes 基准的质量分析结果,包括带 3D 边框的六视角的图像和点云。作者比较了 PGD 和 FCOS3D 模型的预测结果,证明深度估计得到了改善。从图像视角看,二者的检测结果都是不错的,尤其是未标注的小目标。但从 BEV 看,两个模型所估计的深度就差异明显,尤其是红圈内的目标。PGD 显著提高了准确率。