论文地址:https://arxiv.org/abs/2304.00152
源码地址:https://github.com/lly00412/SEDNet.git
概述
受启发于多任务学习模型,本文提出一种联合了视差与不确定性估计的损失函数用于监督立体匹配模型的训练,通过使用KL散度来约束预测的不确定性分布与预测误差分布,从而实现模型性能的提升。此外,文中还提出一种可微的 soft-histogramming 来拟合分布。实验结果表明,该方法可以使得模型在视差与不确定性预测的性能得到较大提升。
本文的主要贡献如下:
- 提出一种新的不确定性估计模块来从视差子网络生成的中间多分辨率视差图中提取信息。
- 提出一种可微的软直方图技术,用于近似视差误差和不确定性的分布。
- 基于KL散度损失监督模型训练。
模型架构
SEDNet 旨在联合估计视差与其不确定性,由于多任务网络可以从不确定性子网络中学习到有用的信息,从而提高对视差的预测能力。给定立体图像对 X = { x l , x r ∈ R H × W } \mathbf{X}=\{\mathbf{x}_l, \mathbf{x}_r\in\mathbb{R}^{H\times W}\} X={xl,xr∈RH×W}与对应的视差图 d \mathbf{d} d, 立体匹配模型 f θ f_{\theta} fθ的预测视差 d ^ = f θ ( x l , x r ) \hat{\mathbf{d}} = f_{\theta}(\mathbf{x}_l, \mathbf{x}_r) d^=fθ(xl,xr), 对于每个像素 i i i,使用 L 1 L_1 L1 范数来计算其视差损失。
本文提出了一种新的方法来最小化预测不确定性和实际视差误差之间的差异,以便更好地匹配两者之间的分布。
Aleatoric Uncertainty Estimation
为了更好地预测不确定性并减少噪声的影响,参考Kendall和Gal提出的方法来最小化预测模型的像素级负对数似然,而Ilg等人的研究表明,预测分布可以根据用于视差估计的损失函数建模为拉普拉斯分布或高斯分布,预测模型可以表达为:
p
(
d
∣
f
θ
(
X
)
)
=
L
aplace
(
f
θ
(
X
)
,
σ
)
(1)
p\left(\mathbf{d} \mid f_{\theta}(\mathbf{X})\right)=\mathcal{L} \text { aplace }\left(f_{\theta}(\mathbf{X}), \sigma\right)\tag{1}
p(d∣fθ(X))=L aplace (fθ(X),σ)(1)
其中均值为模型的输出,
σ
\sigma
σ 为观测噪声标量。
Kendall和Gal在他们的研究中引入了像素特定的噪声参数
σ
(
i
)
σ^{(i)}
σ(i)。Ilg等人采用了类似的方法,用拉普拉斯模型来建模,并得到了一个像素级的损失函数。这意味着,通过引入像素特定的噪声参数,可以更好地建模测定不确定性,并计算像素级的损失:
L
log
=
1
n
∑
i
=
1
n
∣
d
^
(
i
)
−
d
(
i
)
∣
exp
(
s
(
i
)
)
+
1
n
∑
i
=
1
n
s
(
i
)
(2)
\mathcal{L}_{\text {log }}=\frac{1}{n} \sum_{i=1}^{n} \frac{\left|\hat{\mathbf{d}}^{(i)}-\mathbf{d}^{(i)}\right|}{\exp \left(\mathbf{s}^{(i)}\right)}+\frac{1}{n} \sum_{i=1}^{n} \mathbf{s}^{(i)}\tag{2}
Llog =n1i=1∑nexp(s(i))
d^(i)−d(i)
+n1i=1∑ns(i)(2)
其中
d
^
(
i
)
、
d
(
i
)
\hat{\mathbf{d}}^{(i)}、\mathbf{d}^{(i)}
d^(i)、d(i) 分别代表标签视差与预测视差,
s
(
i
)
s(i)
s(i) 为观测噪声标量取对数
l
o
g
(
σ
(
i
)
)
log(σ^{(i)})
log(σ(i)),
n
n
n 为总像素数量,公式(2) 可以视为一个鲁棒的损失函数,使用预测的确定性来对预测的残差值进行衰减(加权),第二项为正则化项,训练网络来预测观测噪声标量的对数
s
s
s,使得模型更加稳定。
Matching the Distribution of Errors
使用公式2作为损失函数来训练模型,提高模型的准确性。想要直接预测每个像素精准的误差是不现实的,本文采用KL散度来约束不确定性估计的分布与误差分布的分布相匹配,对于分布
σ
\sigma
σ 与
ϵ
\epsilon
ϵ, 将
ϵ
\epsilon
ϵ 视为参考,目标函数为:
L
div
=
D
(
P
σ
(
d
)
)
∥
Q
ϵ
(
d
)
)
=
∫
0
d
max
P
σ
(
d
)
log
P
σ
(
d
)
Q
ϵ
(
d
)
d
d
(3)
\begin{array}{l} \left.\mathcal{L}_{\text {div }}=\mathcal{D}\left(P_{\sigma}(d)\right) \| Q_{\epsilon}(d)\right)=\int_{0}^{d_{\max }} P_{\sigma}(d) \log \frac{P_{\sigma}(d)}{Q_{\epsilon}(d)} d d \end{array}\tag{3}
Ldiv =D(Pσ(d))∥Qϵ(d))=∫0dmaxPσ(d)logQϵ(d)Pσ(d)dd(3)
其中,
d
d
d 为视差范围,因为模型预测的是连续的视差,因此使用KL散度来衡量不确定性分布与误差分布之间的差异是合理的。
直接优化公式3的目标函数需要两个闭合的分布函数表达式,而直接获取两个分布的精确分布表达式是困难的,为此将其建模为拉布拉斯分布。而拉普拉斯分布的最大似然估计不可微,此外,将模型拟合导数据上可能存在分布的尾部精确度不足,为此,文中选择以直方图的非参数形式的直方图来对分布进行拟合。
针对直方图不可微的问题,本文使用软直方图来替代直方图,基于误差分布与估计不确定度 σ 分布一致的假设,从而根据误差的
ϵ
\epsilon
ϵ 的统计数据来对确定直方图的分组。因为
L
1
L_1
L1 损失和所提模型对正负误差的不敏感,直接使用绝对值来处理误差和不确定性。
在每个batch的训练过程中,计算误差的均值
μ
ϵ
\mu_{\epsilon}
μϵ 与方差
b
ϵ
b_{\epsilon}
bϵ,使用
C
0
=
μ
ϵ
C_0=\mu_{\epsilon}
C0=μϵ 作为第一个bin的中心,则
C
m
=
μ
ϵ
+
a
m
b
ϵ
C_m=\mu_{\epsilon} + a_mb_{\epsilon}
Cm=μϵ+ambϵ 为最后一个bin的中心,然后再中间插入了
m
−
1
m-1
m−1 个bin,这些bin的中心在线性或者对数刻度上均匀分布的,以便于在网络的损失函数中使用。
对于每一个bin的中心,对于每一个误差
ϵ
(
i
)
\epsilon^{(i)}
ϵ(i) ,计算误差中心与该误差的权重(与距离成反比):
w
j
(
ϵ
(
i
)
)
=
λ
1
⋅
exp
(
−
(
μ
ϵ
+
α
j
b
ϵ
−
ϵ
(
i
)
)
2
λ
2
)
(4)
w_{j}\left(\epsilon^{(i)}\right)=\lambda_{1} \cdot \exp \left(-\frac{\left(\mu_{\epsilon}+\alpha_{j} b_{\epsilon}-\epsilon^{(i)}\right)^{2}}{\lambda_{2}}\right)\tag{4}
wj(ϵ(i))=λ1⋅exp(−λ2(μϵ+αjbϵ−ϵ(i))2)(4)
其中
λ
1
、
λ
2
\lambda_1、\lambda_2
λ1、λ2 为超参数。继而使用softmax来将权重转换为概率值,并将n个像素的贡献累积到直方图
H
ϵ
H_{\epsilon}
Hϵ 的bin中:
H
ϵ
(
j
)
=
1
n
∑
i
=
1
n
exp
(
w
j
(
ϵ
(
i
)
)
)
∑
j
=
0
m
exp
(
w
j
(
ϵ
(
i
)
)
)
,
j
∈
[
0
,
m
]
(5)
H_{\epsilon}(j)=\frac{1}{n} \sum_{i=1}^{n} \frac{\exp \left(w_{j}\left(\epsilon^{(i)}\right)\right)}{\sum_{j=0}^{m} \exp \left(w_{j}\left(\epsilon^{(i)}\right)\right)}, j \in[0, m]\tag{5}
Hϵ(j)=n1i=1∑n∑j=0mexp(wj(ϵ(i)))exp(wj(ϵ(i))),j∈[0,m](5)
不确定度
σ
σ
σ 的直方图
H
σ
H_σ
Hσ 以类似的方式获得,两个直方图的bin都是由
b
ϵ
b_\epsilon
bϵ 来定义的,最后使用KL散度来对两个分布计算损失:
=
L
d
i
v
=
∑
j
=
0
m
H
ϵ
(
j
)
log
H
ϵ
(
j
)
H
σ
(
j
)
(6)
\begin{array}{l}= \mathcal{L}_{d i v}=\sum_{j=0}^{m} H_{\epsilon}(j) \log \frac{H_{\epsilon}(j)}{H_{\sigma}(j)} \end{array}\tag{6}
=Ldiv=∑j=0mHϵ(j)logHσ(j)Hϵ(j)(6)
SEDNet
如图2所示,SEDNet包含视差估计子模块、不确定度估计子模块,使用GwcNet作为视差估计模块的基准,并且设计了一个新的轻量级的子网络作为不确定度估计模块。
不确定性估计子网络学习预测每个像素的观测噪声标量(误差)的对数。所提出的子网络将多分辨率视差预测作为输入,计算成对差异向量(PDV),并将其传递给像素级MLP以回归不确定性地图。具体来说,视差估计器输出K个不同分辨率的视差图
d
^
=
{
d
1
,
…
,
d
K
}
\hat{d} = \{d_1,…,d_K\}
d^={d1,…,dK},首先将多尺度视差图上采样到全分辨率再计算每个像素的PVD。
损失函数
损失函数包含两部分:(1)使用对数似然损失来优化误差与不确定度估计(2)使用KL散度来约束误差分布与不确定度分布相匹配:
L
=
∑
k
=
1
K
c
k
⋅
(
L
l
o
g
,
k
+
L
d
i
v
,
k
)
(7)
\mathcal{L}=\sum_{k=1}^{K}c_k\cdot (\mathcal{L}_{log, k}+\mathcal{L}_{div,k})\tag{7}
L=k=1∑Kck⋅(Llog,k+Ldiv,k)(7)
其中
c
k
c_k
ck 为第 k 个分辨率的权重,
L
l
o
g
,
k
,
L
d
i
v
,
k
\mathcal{L}_{log, k}, \mathcal{L}_{div,k}
Llog,k,Ldiv,k 由公式2与公式6计算。
实验结果