论文链接
作者:Shariq Farooq Bhat, Ibraheem Alhashim, Peter Wonka

一、摘要

​ We address the problem of estimating a high quality dense depth map from a single RGB input image. We start out with a baseline encoder-decoder convolutional neural network architecture and pose the question of how the global processing of information can help improve overall depth estimation. To this end, we propose a transformer-based architecture block that divides the depth range into bins whose center value is estimated adaptively per image. The final depth values are estimated as linear combinations of the bin centers. We call our new building block AdaBins. Our results show a decisive improvement over the state-of- the-art on several popular depth datasets across all metrics. We also validate the effectiveness of the proposed block with an ablation study and provide the code and corresponding pre-trained weights of the new state-of-the-art model.

二、介绍

  1. 动机:作者相信在高分辨率下进行全局处理的效果要好得多,认为先前工作的网络结构没有进行足够的全局分析(卷积层的一个缺点就是只有当空间分辨率很小时才能处理全局信息)
  2. 主要贡献:
    • 设计了"AdaBins"后处理模块,对网络的输出进行全局分析,细化输出
    • 本文可视为《Deep Ordinal Regression Network for Monocular Depth Estimation》的扩展:针对不同图像进行自适应深度区间划分并通过对每个深度区间的中心值进行线性组合来估计深度值避免了离散化造成的伪影现象
      改善伪影现象

三、模型结构

  1. mViT模块:
    image-20211203203608954
    估计深度区间需要同时使用全局与局部信息,于是作者提出使用全局注意力来进行估计。启发于Vision Transformer(ViT),作者使用一个更小版本的transformer称为mini-ViT。该模块首先接收来自解码器的输出xdRh×w×Cd\mathbf{x}_{\mathbf{d}} \in \mathbb{R}^{h \times w \times C_{d}}
    • 通过一个核为p×pp\times p的卷积,再将输出展平为xpRS×E\mathbf{x}_{\mathbf{p}} \in \mathbb{R}^{S \times E},其中S=hwp2S=\frac{h w}{p^{2}}即为transformer输入序列的有效长度;在将序列输入transformer之前为它添加位置编码(随机初始化参数);之后在第一维输出上添加一个MLP层输出一个N维的区间长度向量b\mathbf{b}^{\prime},再将其标准化(添加一个偏置项以保证每个区间长度大于0)
    • 解码层的输出表示高分辨率的局部像素级信息,将它通过一个3×33 \times 3卷积层后与transformer从第2维到第C+1维的输出向量进行矩阵乘法(相当于将输出视为一个1×11 \times 1的卷积核)得到区域注意力图R\mathcal{R}
  2. 整体结构:
    image-20211203201402387
    ​ 其中的编码器部分是预训练的”EfficientNet_B5“,解码器部分是标准的上采样(双线性插值);之后将输出送入"mViT"模块,该模块有两个输出:
  • N维的区间长度向量b\mathbf{b}^{\prime}:通过下式(Eq.2)计算深度区间中心向量c(b)c(\mathbf{b})

c(bi)=dmin+(dmaxdmin)(bi/2+j=1i1bj)c\left(b_{i}\right)=d_{\min }+\left(d_{\max }-d_{\min }\right)\left(b_{i} / 2+\sum_{j=1}^{i-1} b_{j}\right)

  • 区域注意力图R\mathcal{R}:通过一个1×11 \times 1卷积层将输出通道变为N维,最后经过Softmax得到每个像素对应于N个深度区间的概率
    最后,通过将Softmax分数与深度区间中心进行线性组合得到最终的深度值(Eq.3):

    d~=k=1Nc(bk)pk\tilde{d}=\sum_{k=1}^{N} c\left(b_{k}\right) p_{k}

四、损失函数

作者采用两种损失函数一起控制网络的学习:

  • Pixel-wise depth loss:使用之前深度估计工作的损失函数(缩放版的尺度不变损失)

    Lpixel =α1Tigi2λT2(igi)2\mathcal{L}_{\text {pixel }}=\alpha \sqrt{\frac{1}{T} \sum_{i} g_{i}^{2}-\frac{\lambda}{T^{2}}\left(\sum_{i} g_{i}\right)^{2}}

  • Bin-center density loss: 使用3D重建网络的chamfer损失函数

    Lbins =xXminyc(b)xy2+yc(b)minxXxy2\mathcal{L}_{\text {bins }}=\sum_{x \in X} \min _{y \in c(\mathbf{b})}\|x-y\|^{2}+\sum_{y \in c(\mathbf{b})} \min _{x \in X}\|x-y\|^{2}

    前面部分表示XX中任意元素到c(b)c(\mathbf{b})的最小距离和,后面表示c(b)c(\mathbf{b})中任意元素到XX的最小距离和
    最终的损失为:

Ltotal =Lpixel +βLbins \mathcal{L}_{\text {total }}=\mathcal{L}_{\text {pixel }}+\beta \mathcal{L}_{\text {bins }}

五、实验

基准实验

image-20211204105644904

消融实验

  1. 损失函数
    image-20211204105738047
  2. 区间划分策略与回归方法
    image-20211204105837783
    image-20211204111235813
  3. 区间划分个数
    image-20211204105858925

效果

image-20211204111838900
​ 可以看出估计出的深度效果不错但是室外数据集对于图像上面的部分估计出的深度效果不是很好

六、总结

本文作为《DORN》的扩展同样将深度估计视为分类任务,不过有关深度区间划分采用自适应的方法而非固定策略。还借鉴ViT的方法将transformer应用于视觉任务进行全局信息处理