《NeW CRFs:Neural Window Fully-connected CRFs for Monocular Depth Estimation》论文笔记
Posted m_buddy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《NeW CRFs:Neural Window Fully-connected CRFs for Monocular Depth Estimation》论文笔记相关的知识,希望对你有一定的参考价值。
参考代码:NeWCRFs
1. 概述
介绍:在这篇文章中对单目有监督深度估计算法提出了新的解码单元,该解码单元设计的灵感源自于CRFs(Conditional Random Fields)和Swin-Transformer。首先,在该解码单元中在local-window(文中也将其称之为 N ∗ N N*N N∗N个patch的组合)中计算CRFs,这样可以显著减少因全局CRFs带来的计算量巨大问题,这是基于深度本身也存在一定的局部信息依赖性,同时也引入shift-window用于关联不同的local-window。然后,借鉴Swin-Transformer中的多头注意力机制,增强特征图pixel之间的关联性,相当于是在多角度去做信息整合。因而文章从高维度特征开始使用这种window CRFs进行特征优化,极大提升了网络的表达能力,自然也带来深度估计结果的提升。这里使用的是NYU、MatterPort3D和KITTI数据集作为benchmark。
总体来看文章提出的深度估计网络是一个U型的编解码网络,其主要的创新点在于对编码器和解码器中特征优化单元的改进,其结构大体见下图:
比较显著的一些idea归纳为:
- 1)使用local-window内计算CRFs替换全局CRFs,极大减少计算量,贴合深度局部相似性假设。同时针对local-window划分带来window之间隔离的问题,通过shift-window实现window间信息传递;
- 2)借鉴Transformer中的multi-head attention在特征多角度上优化特征图;
对于刚才说到在local-window上做CRFs,其与传统上的全图CRFs进行比较见下图所示:
从现有的benchmark排行榜来看文章的算法排名靠前,说明堆料还是能带来具体场景下性能的提升的,不过这样的提升幅度越来越小了。
2. 方法设计
2.1 网络结构
文章提出的网络结构见下图所示:
可以看到上述的结构就是一个典型的编解码结构,其具体的组件有:
编码器:
这里对于编码器使用的是Swin-Transformer。对于输入的图像输出的最小stride为4,最大stride为32。对于不同stage上输出的特征会将按照方格大小
N
∗
N
,
N
=
7
N*N,N=7
N∗N,N=7划分为一个window,则特征图上得到的window数量计算为
H
S
t
r
i
d
e
∗
N
∗
W
S
t
r
i
d
e
∗
N
\\fracHStride*N*\\fracWStride*N
Stride∗NH∗Stride∗NW。
全局特征提取:
这里使用PPM(pyramid pooling module)其参数scale=[1, 2, 3, 6]。
Local-window CRFs:
这里是在multi-head基础上计算CRFs所需的参数。
上采样操作:
对于上采样操作文章中使用的PixelShuffle的形式在channel维度编码spatial信息,从而实现可学习的上采样。
损失函数:
对于深度回归的损失采用的是尺度无关的Log损失,其描述为:
L
=
α
1
K
∑
i
Δ
d
i
2
−
λ
K
(
∑
i
Δ
d
i
)
2
,
Δ
d
i
=
l
o
g
d
i
^
−
l
o
g
d
i
∗
L=\\alpha\\sqrt\\frac1K\\sum_i\\Delta d_i^2-\\frac\\lambdaK(\\sum_i\\Delta d_i)^2,\\ \\ \\Delta d_i=log\\hatd_i-logd_i^*
L=αK1i∑Δdi2−Kλ(i∑Δdi)2, Δdi=logdi^−logdi∗
2.2 Neural Window FC-CRFs
对于原本CRFs操作其在
i
i
i处的计算输出可以描述为:
E
(
x
)
=
∑
i
ψ
u
(
x
i
)
+
∑
i
j
ψ
p
(
x
i
,
x
j
)
E(x)=\\sum_i\\psi_u(x_i)+\\sum_ij\\psi_p(x_i,x_j)
E(x)=i∑ψu(xi)+ij∑ψp(xi,xj)
其中,
ψ
p
(
x
i
,
x
j
)
=
u
(
x
i
,
x
j
)
⋅
f
(
x
i
,
x
j
)
⋅
g
(
I
i
,
I
j
)
⋅
h
(
p
i
,
p
j
)
\\psi_p(x_i,x_j)=u(x_i,x_j)\\cdot f(x_i,x_j)\\cdot g(I_i,I_j)\\cdot h(p_i,p_j)
ψp(xi,xj)=u(xi,xj)⋅f(xi,xj)⋅g(Ii,Ij)⋅h(pi,pj),且
I
,
p
I,p
I,p分别代表特征图(图片)和位置信息,
u
(
x
i
,
x
j
)
u(x_i,x_j)
u(xi,xj)在
i
≠
j
i\\neq j
i=j的时候取非0。
在文章的任务中处理的是深度信息,其在
x
i
x_i
xi处的本身响应为(也就是通过CNN网络预测得到的响应结果,
θ
u
\\theta_u
θu为可学习参数):
ψ
u
(
x
i
)
=
θ
u
(
I
,
x
i
)
\\psi_u(x_i)=\\theta_u(I,x_i)
ψu(xi)=θu(I,xi)
而对于周围特征图像素对于当前像素的影响,描述为特征图
F
\\mathcalF
F和位置
p
p
p的组合:
ψ
p
i
=
α
(
F
i
,
F
j
,
p
i
,
p
j
)
+
∑
j
≠
i
β
(
F
i
,
F
j
,
p
i
,
p
j
)
x
j
\\psi_p_i=\\alpha(\\mathcalF_i,\\mathcalF_j,p_i,p_j)+\\sum_j\\neq i\\beta(\\mathcalF_i,\\mathcalF_j,p_i,p_j)x_j
ψpi=α(Fi,Fj,pi,pj)+j=i∑β(Fi,Fj,pi,pj)xj
那么对应到文章的实现部分就是使用的attention与位置编码的形式去实现了。
3. 实验结果
KITTI - Eigen Split:
KITTI - Official Split:
NYU:
以上是关于《NeW CRFs:Neural Window Fully-connected CRFs for Monocular Depth Estimation》论文笔记的主要内容,如果未能解决你的问题,请参考以下文章
Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation摘要和简介翻译
BokehMe: When Neural Rendering Meets Classical Rendering