Adabins:Depth Estimation using Adaptive Bins

  • 摘要
  • 1.Introduction
  • 2.Related Work
  • 3.Methodology
    • 3.1 Motivation
    • 3.2 Adabins Design
    • 3.3 Architecture description
    • 3.4 Loss Function
  • 4.实验
  • 5结论
  • 6思考

论文:https://arxiv.org/abs/2011.14141
代码:https://github.com/shariqfarooq123/AdaBins

摘要

我们解决了从单个RGB输入图像估计高质量密集深度图的问题。我们从一个基线编码器-解码器卷积神经网络结构开始,提出了信息的全局处理如何帮助改进整体深度估计的问题。为此,我们提出了一种基于Transformer的结构块,它将深度范围划分为多个单元,每个单元的中心值自适应估计每幅图像。图像最终深度值估计为单元中心的线性组合。我们称这个新构造的模块为AdaBins。结果显示,在所有指标上,在几个流行的深度数据集上,与最先进的技术相比,有了决定性的改进。并且通过消融实验验证了该模型的有效性,给出了新模型的编码和相应的预训练权值。

1.Introduction

本文解决了从单一RGB输入图像中估计高质量稠密深度映射的问题。这是计算机视觉中的一个经典问题,在许多应用中都是必不可少的。在这项工作中,我们提出了一种新的建筑模块,称为Adabins,这提出了在两个最流行的室内和室外数据集NYU和KITTI上进行深度估计的SOTA模型。
我们工作的动机是推测当前的体系结构没有对输出值执行足够的全局分析。卷积层的一个缺点是,当张量在瓶颈处或瓶颈附近达到非常低的空间分辨率时,它们才处理全局信息。然而,我们相信,全局处理在以高分辨率进行时能力要强大得多。我们的总体思路是对传统编码器-解码器体系结构的输出进行全局统计分析,并使用学习的以最高分辨率运行的后处理构建块对输出进行优化。为实现这一想法,我们建议对深度值的分布进行分析和修正。

对应于不同RGB输入的深度分布可以在很大程度上变化(参见图1),一些图像中的大部分对象都位于非常小的深度值范围内。例如,家具的近距离图像包含的像素大部分是靠近相机的,而其他图像的深度值可能分布在更大的范围内,例如走廊,其中深度值的范围从较小的值到网络支持的最大深度。由于问题的不适定性质,深度分布的这种变化使得端到端的深度回归成为一项更加困难的任务。最近的研究已经提出利用室内环境的假设,如平面性约束[26,22]来引导网络,这些约束可能存在或者可能不存在于现实环境,特别是在室外场景。
与强加这样的假设不同,我们研究了一种网络学习自适应聚焦深度范围内更可能出现在输入图像场景中的区域的方法。
我们的主要贡献在下面列出:

  • 我们提出了一个架构模块来执行场景信息的全局处理。我们建议将预测深度范围划分到单元格里,它的宽度随每张图片而改变,最终的深度估计是这些单元中心的线性组合。
  • 对于两种最流行的数据NYU和KITTI,我们在所有度量中都显示了有监督的单幅图像深度估计的决定性改进
  • 我们分析了我们的发现,并对所提出的AdaBins块进行了不同的修正,并研究了对深度估计精度的影响

2.Related Work

基于RGB图像的三维场景重建问题是一个不适定问题。诸如缺乏场景平均、比例模糊、半透明或反光材料等问题都会导致无法从外观获得几何图形的模糊情况。近年来,基于卷积神经网络(CNNs)的方法能够从单个RGB输入图像中实时生成合理的深度图。
单目深度估计被许多CNN方法视为对单个RGB图像密集深度映射的回归。
我们考虑BTS和DAV作为两个最重要的竞争对手,在解码阶段,BTS使用局部平面引导层将特征引导到全分辨率,而不是标准的上采样层。DAV采用了标准的编解码方案,并提出了在场景中通过注意瓶颈来挖掘物体的共面性
编码器-解码器网络在图像分割[35]、光流估计[10]和图像恢复[28]等许多视觉相关问题上做出了重要贡献。近年来,这种体系结构的使用在深度估计问题的监督和非监督设置方面都取得了巨大的成功[15,41,21,48,1]。这种方法通常使用一个或多个编码器-解码器网络作为其较大网络的子部分。在本文中,我们采用了文献[1]中使用的基线编码器-解码器网络结构。这使我们能够更明确地研究我们在管道上提出的扩展的性能属性,这通常是一个困难的任务。
Transformer网络作为一种可用的构建块,在NLP任务和计算机视觉任务中得到了越来越多的关注[32,43,2,6]。根据最近将CNN与Transformers结合起来的成功趋势[2],我们建议利用Transformer编码器作为CNN输出的非本地处理的构建块

3.Methodology

在本节中,我们将介绍这项工作的动机,提供AdaBins体系结构的细节,并且描述相应使用的损耗函数

3.1 Motivation

我们的想法可以看作是由fu等人提出的通过有序回归网络进行深度估计的一种推广。Fu等人观察到,如果将深度回归任务转化为分类任务,可以实现性能改进。他们建议将深度范围划分为固定数量的预先确定宽度的单元。我们的推广解决了初始方法的多重限制。首先,我们提出了一种根据输入场景的特征来计算动态变化的自适应箱的方法。第二,分类方法导致深度值的离散化,导致视觉质量差,深度不连续性明显。这可能仍然会在标准评估指标方面产生良好的结果,但对于下游应用(如计算摄影或三维重建)来说,这可能是一个挑战。我们建议用单元这允许我们将分类的优点与深度映射回归的优点结合起来。最后,与其他架构(如DAV[22])相比,我们在高分辨率下全局计算信息,而不是在低分辨率下主要在瓶颈部分计算信息。中心的线性组合来预测最终的深度值。

3.2 Adabins Design

在这里,我们讨论了我们所提出的架构的四种设计选择,它们对获得的结果最为重要
首先,我们采用自适应装箱策略来离散化深度区间D=(Dmin,Dmax)为N个单元。这个对于给定的数据集,间隔是固定的,由数据集规范确定或手动设置为合理范围。为了说明我们将深度间隔划分到单元中的想法,我们想将我们的最终解决方案与我们评估的其他三种可能的设计选择进行对比。

  • 用统一的单元宽度固定单元:深度间隔D被划分为相同大小的N个单元
  • 用对数标准的单元宽度固定单元:深度间隔D按对数尺度划分为N个相等的单元
  • 受训练的单元宽度:单元宽度是自适应的,并且可以从特定的数据集进行学习,尽管宽度间隔是普遍的,最终所有图片共享深度间隔D细分出来的单元。.
  • Adabins:每张图片的宽度间隔b是适应性计算出来的。
    我们推荐AdaBins作为最佳选择,我们的消融研究验证了这一选择,显示了该设计优于其他选择。图3中显示了储物箱宽度的四种设计选择。


其次,将深度间隔D离散为各个单元并且将每个像素分配到单个单元中形成深度离散化伪影。因此,我们将最终深度预测为单元中心的线性组合,使模型能够估计平滑变化的深度值。第三,先前的一些架构建议在网络中的编码器块(例如,图像字幕[5,18]或对象检测[2])之后使用注意块来处理信息来执行全局处理。此外,目前最先进的深度估计也采用了这种策略[22]。这种体系结构由三个模块组成:编码器、注意力机制,然后是解码器。我们最初采用这种方法,但注意到在空间分辨率较高的张量上使用注意力可以获得更好的结果。因此,我们提出了一个建筑,也有这三个块,但排序如下跟随:编码器,解码器,最后注意力机制。
第四,我们想建立在最简单的架构上以拎出我们新提出的Adabins概念的影响。因此,我们构建了一个现代的编码器-解码器[1],使用EfficientNet B5[40]作为编码器的主干。
在下一小节中,我们将提供整个架构的描述

3.3 Architecture description

图2显示了我们提出的深度估计体系结构的概述。我们的架构由两个主要组成部分组成:1) 基于预先训练的EfficientNet B5[40]编码器和标准特征上采样解码器构建的编码器-解码器块2) 我们提出的自适应单元宽度估计块称为AdaBins。第一个组件主要基于Alhashim和Wonka[1]的简单深度回归网络,并进行了一些修改。两个基本的修改是将编码器从DenseNet[20]到EfficientNet B5并且为新架构使用了不同的适当的损失函数。此外,解码器的输出是张量xd∈\inR(H×W×Cd),没有代表最终深度值的单通道图像。我们把这个张量称为“解码特征”。第二部分是本文的关键贡献,即Adabins模块。Adabins模块的输入是大小为(H×W×Cd)的解码特征,输出是大小为(H×W×1)的张量。由于当前gpu硬件的内存限制,我们用h=H2\frac{H}{2}2H和w=W2\frac{W}{2}2W以便在批量较大的情况下更好地学习。通过简单的双线性上采样到H×W×1计算得到最终的深度图。
AdaBins模块中的第一个块称为mini-ViT。图4中示出了该块的概述。它是最近提出的一种使用Transformer进行图像识别技术的简化版本[6],只需稍加修改。mini-ViT的详细信息将在下一节中解释。mini-ViT有两个输出:1)bin widths矢量,它定义了如何为输入图像划分深度区间;2)大小为h×w×C的范围注意映射,它包含了像素级深度计算的有用信息。

Mini-ViT.对于给定的图像,估计深度范围内更可能出现的子层段需要同时结合局部结构信息和全局分布信息。我们建议使用全局注意来计算每个输入图像的单元宽度向量。全局注意力在内存和计算复杂性方面都是昂贵的,特别是在更高的分辨率下。然而,Transformer的最新进展提供了一些有效的替代品。在设计AdaBins的Transformer模块时,我们从Vision TransformerViT[6]中获得了灵感。由于我们的数据集较小,我们还使用了一个小得多的transformer版本,在下面的描述中将这个transformer称为mini ViT或mViT。
单元宽度.我们首先描述如何使用mViT获得单元宽度矢量。输入mVIT的是xd∈\inR(H×W×Cd)的解码特征张量,然而,一个Transformer需要一个固定大小的向量序列作为输入。我们首先将解码的特征通过一个命名为嵌入式卷积(Embedding Conv)的卷积块,卷积核大小为p×p,步长为p并且输出通道为E。因此,这个卷积的结果是一个大小为hp\frac{h}{p}ph×wp\frac{w}{p}pw×E的张量(假设h,w都可以被p整除)。结果被重构成一个空间平坦的张量xp∈\inRS×E,S=hw/p2作为Transformer的有效序列长度。我们将这个E维序列称作补丁嵌入。
按照通常的做法[2,6],我们在将补丁嵌入到Transformer之前,将学习到的位置编码添加到补丁嵌入中。我们的变压器是一个小型变压器编码器(见表)。1)并输出输出嵌入序列x0∈\inRS×E,我们在第一个输出嵌入上使用了一个MLP头(我们还使用了一个版本,该版本有一个额外的特殊标记作为第一个输入,但没有看到改进)。MLPhead使用ReLU激活并输出N维向量b′,最后,我们对向量b′进行归一化,使其总和达到1,以获得如下的单元宽度向量:

ϵ\epsilonϵ=10-3,小正数ϵ\epsilonϵ确保每个单元的宽度都是严格正数。归一化引入了单元宽度之间的竞争,并通过预测D的感兴趣区域的较小单元宽度,从概念上强制网络聚焦D的子区间。
在下一小节中,我们将描述如何从分解的特征和Transformer输出嵌入中获得范围注意映射。
Range attention maps在这里,所述的有限元分析结果显示了高分辨率和局部像素级信息,而变压器输出嵌入有效地包含了更多的全局信息。Transfor的嵌入输出从2到C+1被用来作为一系列1×1卷积核并且与解码特征卷积(伴随着一个3×3的卷积层)来获取范围注意力图R。这相当于计算被视为“keys”的像素特征和被视为“queries”的Transformer输出嵌入之间的点积注意权值,这种使用输出嵌入作为卷积核的简单设计,使网络能够将变压器的自适应全局信息集成到分解特征的局部信息中。R和b一起使用来获得最终的深度图。
Hybrid regression范围注意图R通过1×1卷积层得到N通道,并进行softmax激活。我们定义这N个softmax得分pk,K=1,2…N,作为N个深度单元中心在每个像素处的概率,深度单元中心c(b):={c(b1),c(b2),…,c(bn)}按以下公式从单元宽度向量b计算得到

最后,每个像素处的最终深度值dˇ\check{d}dˇ从该像素的Softmax分数和深度单元中心c(b)的线性组合计算,如下所示

与Fu等人[11]相比,我们没有预测最可能的单元的单元中心的深度。这使我们能够预测平滑的深度图,而不必像图5所示的那样出现离散化伪影

3.4 Loss Function

像素深度损失受[26]的启发,我们使用由Eigen等人引入的标度不变损耗(SI)的缩放版本。

T代表具有有效地面真实值得像素数目,实验中取λ\lambdaλ=0.85,α\alphaα=10
单元中心密度损失
这个损失期鼓励单元中心的分配跟随地面真实深度值分布。我们希望鼓励单元中心接近实际的地面真相深度值,反之亦然。我们用c(b)代表一系列单元中心并且用X代表所有地面真实深度值,使用双向倒角损失作为正则化器。
最终,定义总损失为:

实验中设置β\betaβ=0.1.我们用不同的损失函数进行了计算,包括RMSE损失,以及[1]所建议的SSIM[42]加上L1loss得组合损失。然而,我们能够在我们提议的损失中取得最好的结果。本文对不同损耗函数及其在消融研究中的性能进行了比较。

4.实验



5结论

我们为单张图片得深度估计引入了一个新的模块称为Adabins。Adabins使NYU和KITTI这两个最受欢迎的数据集的技术水平有了决定性的提高。在未来的工作中,我们将研究高分辨率的全局信息处理是否也能提高其他任务的性能,例如分割、法线估计和多幅图像的三维重建。

6思考

看完文章主要想搞清楚,为什么transformer经过MLP head之后输出的b就是深度间隔,两者的映射关系是怎么建立的?

Adabins:Transformer+单目深度估计相关推荐

  1. 深度学习之单目深度估计:无监督学习篇

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:桔子毛 https://zhuanlan.zhihu.com/p/29968267 本文仅做学术 ...

  2. 最强无监督单目深度估计Baseline--MonoViT--简介与代码复现

    1. 无监督单目深度估计 单目深度估计是指,借助于深度神经网络,从单张输入视图中推理场景的稠密深度信息:该技术可以广泛用于自动驾驶.虚拟现实.增强现实等依赖于三维场景感知理解的领域,同时也可以为其他视 ...

  3. 2022最新 | 室外单目深度估计研究综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨 自动驾驶之心 论文标题:Outdoor Monocular Depth Esti ...

  4. 单目深度估计与伪雷达点云、可视化

    单目深度估计 项目代码下载地址:下载地址 深度图转点云: def depth2ptc_universal(depth, intrinsics):"""depth: dep ...

  5. 夜间奇异规范:夜间高效自监督单目深度估计(ICCV 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨泡泡机器人 来源丨 泡泡机器人SLAM 标题: Regularizing Nighttime W ...

  6. 基于高分辨率的单目深度估计网络(AAAI2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨图灵智库 来源丨 泡泡机器人SLAM 标题: HR-Depth:High Resolution ...

  7. 单目深度估计方法综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 一 相关概念介绍 1. 深度估计 深度估计,就是获取图像中场景里的每个点到相机的距离信息,这种距离信息 ...

  8. 重磅!单目深度估计方法:算法梳理与代码实现

    应用背景介绍 在自动驾驶中,如何获取车辆行人等目标的深度信息,是当前很多研究中较为重要的技术点,如3D重建,障碍物检测,SLAM等等.传统上,获取高精度目标深度信息的方法,通常是利用激光雷达或结构光在 ...

  9. 低成本测距方案—单目深度估计

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 导读:随着计算机视觉技术的不断发展,特别是自动驾驶等一些前沿的研究中,图像的深度信息至关重要 ...

最新文章

  1. 排序算法 --- 堆排序
  2. Objective-C 的动态提示和技巧
  3. 电子科技大学计算机2019报名人数,电子科技大学录取分数线2019(在各省市录取数据)...
  4. java smtp收信_求一个简单java编写的邮件收发程序,邮件发送程序为smtpsend,邮件接收程序为popreceive。急需,感谢。...
  5. FlashCC导入使用greensock(TweenLite)包
  6. SpringBoot项目实现网络测速功能
  7. php安装时候的源是什么,Windows安装源无效怎么办
  8. CodeForces - 1313C2 Skyscrapers (hard version)(单调栈+dp)
  9. python再计算无限循环小数的循环节
  10. Ubuntu安装微软Onedrive教程
  11. linux字体不识别不了怎么办,Docker容器不识别宋体等字体的解决方案
  12. 完全用Linux工作
  13. 013:Django商城项目规划与环境搭建
  14. MQTT入门2 -- “Error: Invalid password hash for user nick.”和“Connection Refused: not authorised.”...
  15. 数据的准确性对模型效果的重要性
  16. 正六边形:判断点是否在正六边形内
  17. 【卫朋】智能硬件 | 做好一款电子硬件产品,工具必不可少
  18. 基于FPGA的简易 DDS 信号发生器的设计
  19. 如何彻底删除hao123主页?
  20. 采用HTML,CSS,JAVASCRIPT的前端网页设计的内容展示

热门文章

  1. (邱维声)高等代数课程笔记:矩阵的加法、数量乘法与乘法
  2. docker存储bind mounts用法
  3. 7-8 打死我也不说
  4. 判断是否为平衡二叉树(Java)
  5. python怎么解题_农夫过河问题 Python实现解题
  6. 【工作记录】网易云信最近联系人中加入本地服务端数据
  7. STM32(1)跑马灯
  8. HPE BL460c 配置536 FLB网卡VMware Esxi 6.0开启FCOE功能方法
  9. css3水波纹渐变扩散
  10. 中国到美国寄国际快递怎么收费