《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 NN个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 NN,N=7划分为一个window,则特征图上得到的window数量计算为 H S t r i d e ∗ N ∗ W S t r i d e ∗ N \\fracHStride*N*\\fracWStride*N StrideNHStrideNW

全局特征提取:
这里使用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Δdi2Kλ(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》论文笔记的主要内容,如果未能解决你的问题,请参考以下文章

Neural Tangent Kernel (NTK)

Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation摘要和简介翻译

JavaScript this指向问题new的过程

BokehMe: When Neural Rendering Meets Classical Rendering

BokehMe: When Neural Rendering Meets Classical Rendering

BokehMe: When Neural Rendering Meets Classical Rendering