参考代码:Structure-Guided-Ranking-Loss
1. 概述
导读:在这篇文章中提出了一种在监督深度估计方法中的损失函数。该方法是属于pair-wise ranking loss族的,文章通过利用目标的分割结果提出了一些新的采样策略,也就是低层次的边缘采样与目标实例级别的采样。从而极大增强了损失函数的约束能力,提升了最后深度图预测在边缘部分的锐化成都,以及目标内部的一致性内在属性。
文章将之前一些方法的损失函数进行比较,其结果在边缘与目标内部均得到了不错的提升,见下图所示:

理解下面的内容,需要的背景知识:
- 论文:Single- image depth perception in the wild
- 读书笔记:Single-Image Depth Perception in the Wild笔记
- 论文:Monocular relative depth per- ception with web stereo data supervision
2. 方法设计
2.1 original pair-wise ranking loss
文章中使用到的深度表达为inverse depth,RGB的图像经过网络之后得到估计出来的深度:
P
=
F
(
I
)
P=F(I)
P=F(I)
在之前的论文中对于pair-wise的损失函数描述为:
ϕ
(
p
0
−
p
1
)
=
{
l
o
g
(
1
+
e
x
p
(
−
l
(
p
0
−
p
1
)
)
)
,
l
≠
0
(
p
0
−
p
1
)
2
,
l
=
0
\phi(p_0-p_1) = \begin{cases} log(1+exp(-l(p_0-p_1))), & \text{$l\neq0$} \\[2ex] (p_0-p_1)^2, & \text{$l=0$} \end{cases}
ϕ(p0−p1)=⎩⎨⎧log(1+exp(−l(p0−p1))),(p0−p1)2,l=0l=0
其中采样过程中正负样本的判别条件为:
l
=
{
+
1
p
0
∗
/
p
1
∗
≥
1
+
τ
−
1
,
p
0
∗
/
p
1
∗
≤
1
1
+
τ
0
,
otherwise
l= \begin{cases} +1 & \text{$p_0^{*}/p_1^{*}\ge1+\tau$} \\[2ex] -1, & \text{$p_0^{*}/p_1^{*}\le\frac{1}{1+\tau}$} \\[3ex] 0, & \text{otherwise} \end{cases}
l=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧+1−1,0,p0∗/p1∗≥1+τp0∗/p1∗≤1+τ1otherwise
其中,
τ
=
0.03
\tau=0.03
τ=0.03。那么对于采样之后的集合
P
=
{
[
p
i
,
0
,
p
i
,
1
]
,
i
=
0
,
…
.
N
}
\mathcal{P}=\{[p_{i,0},p_{i,1}],i=0,\dots.N\}
P={[pi,0,pi,1],i=0,….N},则损失函数描述为:
L
r
a
n
k
(
P
)
=
1
N
∑
i
ϕ
(
p
i
,
0
−
p
i
,
1
)
L_{rank}(\mathcal{P})=\frac{1}{N}\sum_i\phi(p_{i,0}-p_{i,1})
Lrank(P)=N1i∑ϕ(pi,0−pi,1)
在上面的损失函数中采样的过程是通过随机采样的形式实现的,进而导致结果中的深度看起来比较模糊且缺少细节信息,这也说明其采样是存在一些问题的。在这篇文章中对这个损失函数进行了改进,在输入图像分割的基础上提出了低层次边缘引导的采样以及instance 分割结果上的instance采样。
2.2 采样策略

边缘采样策略:
直接随机的采样会导致模糊与细节的丢失,那么一个直观的改进就是在图像(目标的mask掩膜)的边界两边进行采样,这样却会带来over-sharpening的问题,见图2的a图所示。对此文章的解决办法是在边缘的正交方向上进行采样4个点,也就是图2的b图中的
(
a
,
b
,
c
,
d
)
(a,b,c,d)
(a,b,c,d)点,从而得到采样pair为
[
(
a
,
b
)
,
(
b
,
c
)
,
(
c
,
d
)
]
[(a,b),(b,c),(c,d)]
[(a,b),(b,c),(c,d)]。
对于一张给定的mask图,通过Sobel算子计算其在
(
X
,
Y
)
(X,Y)
(X,Y)方向上的梯度图
(
G
x
,
G
y
)
(G_x,G_y)
(Gx,Gy),以及整个梯度图
G
G
G。那么需要采样的图像边界被描述为:
E
=
I
[
G
≥
α
⋅
m
a
x
(
G
)
]
E=\mathcal{I}[G\ge\alpha\cdot max(G)]
E=I[G≥α⋅max(G)]
其中,
α
=
0.1
\alpha=0.1
α=0.1。那么对于边缘
E
E
E上的一个点
e
=
(
x
,
y
)
e=(x,y)
e=(x,y),其正交方向上采样的4个点
k
∈
(
a
,
b
,
c
,
d
)
k\in (a,b,c,d)
k∈(a,b,c,d)被描述为:
{
x
k
=
x
+
∂
k
G
x
(
e
)
/
G
(
e
)
y
k
=
y
+
∂
k
G
y
(
e
)
/
G
(
e
)
\begin{cases} x_k=x+\partial_kG_x(e)/G(e) & \text{} \\[2ex] y_k=y+\partial_kG_y(e)/G(e) & \text{} \end{cases}
⎩⎨⎧xk=x+∂kGx(e)/G(e)yk=y+∂kGy(e)/G(e)
其中,
∂
a
<
∂
b
<
0
<
∂
c
<
∂
d
\partial_a\lt\partial_b\lt0\lt\partial_c\lt\partial_d
∂a<∂b<0<∂c<∂d,这里最大延伸的距离
β
=
30
\beta=30
β=30。具体的算法流程描述为:

instance采样策略:
在得到目标的mask之后,在instance的外部采样得到采样点
(
a
,
b
)
(a,b)
(a,b),内部得到采样点
(
c
,
d
)
(c,d)
(c,d)。则按照文章的策略,得到3组采样点
[
(
a
,
b
)
,
(
b
,
c
)
,
(
c
,
d
)
]
[(a,b),(b,c),(c,d)]
[(a,b),(b,c),(c,d)],可以参考图2的c图。
采样数量的确定:
为了采样的完备性,文章除了edge-level sampling/instance sampling之外,还引入random sampling用以扩充采样空间。这里图像边界上的点数量为
N
N
N,与instance面积成比例的采样数量为
M
M
M,从而具体的采样数量被定义为:
- 1)edge-level sampling:采样点数量为 3 N 3N 3N;
- 2)random sampling:采样点数量为 N N N;
- 3)instance sampling:采样点数量为 3 M 3M 3M;
2.3 损失函数
梯度方面的损失:
L
g
r
a
d
=
1
M
∑
s
∑
i
∣
Δ
x
R
i
s
∣
+
∣
Δ
y
R
i
s
∣
)
L_{grad}=\frac{1}{M}\sum_s\sum_i|\Delta_xR_i^s|+|\Delta_yR_i^s|)
Lgrad=M1s∑i∑∣ΔxRis∣+∣ΔyRis∣)
其中,
R
i
=
p
i
−
p
i
∗
R_i=p_i-p_i^{*}
Ri=pi−pi∗。再结合文章提出的损失函数,则整体的损失函数被描述为:
L
=
L
r
a
n
k
+
λ
L
g
r
a
d
L=L_{rank}+\lambda L_{grad}
L=Lrank+λLgrad
其中,
λ
=
0.2
\lambda=0.2
λ=0.2。
3. 实验结果
性能比较:

本文介绍了如何使用结构引导的排名损失改进深度估计方法。通过结合分割结果,提出边缘引导和实例级别的采样策略,增强损失函数,提高深度图预测的边缘清晰度和目标内部一致性。实验表明,这种方法在边缘和目标内部的深度预测性能得到显著提升。
838

被折叠的 条评论
为什么被折叠?



