本文共 3220 字,大约阅读时间需要 10 分钟。
参考代码:
导读:在这篇文章中提出了一种在监督深度估计方法中的损失函数。该方法是属于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采样。对于一张给定的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。具体的算法流程描述为:采样数量的确定:
为了采样的完备性,文章除了edge-level sampling/instance sampling之外,还引入random sampling用以扩充采样空间。这里图像边界上的点数量为 N N N,与instance面积成比例的采样数量为 M M M,从而具体的采样数量被定义为:梯度方面的损失:
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。性能比较:
转载地址:http://dkkhj.baihongyu.com/