博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Structure-Guided Ranking Loss for Single Image Depth Prediction》论文笔记
阅读量:3527 次
发布时间:2019-05-20

本文共 3220 字,大约阅读时间需要 10 分钟。

参考代码:

1. 概述

导读:在这篇文章中提出了一种在监督深度估计方法中的损失函数。该方法是属于pair-wise ranking loss族的,文章通过利用目标的分割结果提出了一些新的采样策略,也就是低层次的边缘采样与目标实例级别的采样。从而极大增强了损失函数的约束能力,提升了最后深度图预测在边缘部分的锐化成都,以及目标内部的一致性内在属性。

文章将之前一些方法的损失函数进行比较,其结果在边缘与目标内部均得到了不错的提升,见下图所示:

在这里插入图片描述
理解下面的内容,需要的背景知识:

  1. 论文:
  2. 读书笔记:
  3. 论文:

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} ϕ(p0p1)=log(1+exp(l(p0p1))),(p0p1)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=+11,0,p0/p11+τp0/p11+τ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,0pi,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=M1siΔxRis+ΔyRis)
其中, R i = p i − p i ∗ R_i=p_i-p_i^{*} Ri=pipi。再结合文章提出的损失函数,则整体的损失函数被描述为:
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. 实验结果

性能比较:

在这里插入图片描述

转载地址:http://dkkhj.baihongyu.com/

你可能感兴趣的文章