AdaBins:使用自适应bins进行深度估计

论文:https://arxiv.org/abs/2011.14141

代码:https://github.com/open-mmlab/mmsegmentation/tree/main/projects/Adabins

0、摘要

        本文主要解决了从单个RGB输入图像估计高质量密集深度图的问题。我们从一个baseline的encoder-decoder CNN结构出发,提出一个问题:信息的全局处理如何帮助提高整体深度估计?为此,我们提出了一种基于transformer的架构块,它将深度范围划分为多个 bin,而每个bin的中心值是根据每个图像自适应估计的,最终的深度值估计为 bin 中心的线性组合。我们将这种新的构造块称为AdaBins。我们的结果显示,在所有指标上,在几个流行的深度数据集上都比现有技术有了决定性的改进。我们还通过消融研究验证了所提出的块的有效性,并提供了新的最先进模型的代码和相应的预训练权重。

1、引言

        本文解决了从单个RGB输入图像估计高质量密集深度图的问题。这是计算机视觉中的一个经典问题,对许多应用至关重要。在这项工作中,我们提出了一种新的架构构建块,称为AdaBins,它为在两个最流行的室内和室外数据集NYU和KITTI上进行深度估计带来了一种最先进的新架构。

        我们工作的动机是猜测当前的体系结构没有对输出值进行足够的全局分析。卷积层的一个缺点是,只有当张量在瓶颈处或瓶颈附近达到非常低的空间分辨率时,它们才会处理全局信息。然而,我们相信,在高分辨率下进行全局处理会更加强大。我们的总体想法是对传统编码器-解码器架构的输出执行全局统计分析,并使用以最高分辨率操作的训练过的后处理构建块来细化输出。作为这种思想的一种特殊认识,我们提出分析和修改深度值的分布。

        与不同RGB输入相对应的深度分布可以在很大范围内变化(见图1)。一些图像的大多数对象位于非常小的深度值范围内。比如,家具特写图像中包含大部分靠近相机的像素,而其他图像则具有分布在更宽范围上的深度值,比如走廊,深度值的范围从很小的值到网络支持的最大深度值。随着问题的不适定性,深度分布的这种变化使得以端到端的方式进行深度回归变得更加困难。最近的工作已经提出利用关于室内环境的假设,如平面性约束,来指导网络,这可能适用也可能不适用于真实世界的环境,尤其是室外场景。

图1:AdaBins的插图:顶部:输入RGB图像。中:我们的模型预测的深度。底部:GT的深度值直方图(蓝色)和预测的自适应深度仓中心的直方图(红色),深度值从左到右递增。注意,对于特写图像,预测的仓中心被聚焦在较小的深度值附近,但是对于具有更宽范围的深度值的图像被广泛分布。

        我们没有基于这样的假设继续研究,而是提出了一种新方法,在该方法中,网络学会自适应地关注深度范围内更可能出现在输入图像场景中的区域。

        主要贡献如下:

  • 提出了一个可以执行场景信息全局处理的构造块,提出将预测的深度范围划分为每个图像的宽度可变的bins。最终的深度估计是bin中心值的线性组合。
  • 在两个最流行的数据集NYU和KITTI的所有指标中,显示了监督单图像深度估计的决定性改进。
  • 我们分析了我们的发现,研究了对所提出的AdaBins块的不同修改,并研究了它们对深度估计准确性的影响。

2、相关工作

        从RGB图像重建三维场景的问题是一个不适定问题。缺乏场景覆盖、比例模糊、半透明或反射材质等问题都会导致无法从外观中导出几何体的模糊情况。最近,依赖卷积神经网络(CNNs)的方法能够以实时速度从单个RGB输入图像中生成合理的深度图。

        单目深度估计(Monocular depth estimation)已经被许多CNN方法认为是从单个RGB图像中的密集深度图的回归。

        我们考虑了两个最接近我们方法的工作:BTS和DAV。BTS在解码阶段使用局部平面引导层来将特征引导到全分辨率,而不是标准上采样层。DAV使用标准的编码器-解码器方案,并提出通过关注bottleneck来利用场景中对象的共面性。

        编码器-解码器网络在许多与视觉相关的问题上做出了重大贡献,如图像分割[35]、光流估计和图像恢复。近年来,这种架构的使用在深度估计问题的有监督和无监督设置中都取得了巨大成功。这种方法通常使用一个或多个编码器-解码器网络作为其较大网络的子部分。在本文中,我们采用了《High Quality Monocular Depth Estimation via Transfer Learning》使用的baseline编码器网络架构。这使我们能够更明确地研究我们提出的管道扩展的性能归因,这通常是一项困难的任务。

        transformer网络作为一种可行的构建块,在NLP任务和计算机视觉任务中的传统使用之外,正受到越来越多的关注。继最近将CNN与Transformer相结合的趋势取得成功之后,我们建议利用Transformer编码器作为CNN输出的non-local处理的构建块。

3、方法

        在本节中,我们介绍了这项工作的动机,提供了AdaBins架构的细节,并描述了相应的损失函数的使用。

3.1. 动机

        我们的想法可以被视为通过有序回归网络对深度估计的推广,如Fu等人提出的那样,他们观察到,如果将深度回归任务转换为分类任务,则可以实现性能改进,他们建议将深度范围划分为固定数量的预定宽度的bins。我们的推广解决了初始方法的多个局限性。首先,我们提出计算根据输入场景的特征动态变化的自适应bin。其次,分类方法导致深度值的离散化,这导致视觉质量差,具有明显的尖锐深度不连续性。这可能仍然会得到关于标准评估指标的较好结果,但它可能会对下游应用提出挑战,例如计算摄影或3D重建。因此,我们建议将最终深度值预测为bin中心的线性组合。这使我们能够将分类的优势与深度图回归的优势相结合。最后,与其他架构(例如DAV)相比,我们以高分辨率全局的计算信息,而不是在低分辨率的瓶颈部分计算信息。

3.2. AdaBins设计

        我们讨论了我们提出的架构的四种设计选择,这些选择对获得的结果最重要。

        首先,我们采用自适应分仓策略将深度区间D=(dmin,dmax)离散为N个bin。对于给定的数据集,此间隔是固定的,并由数据集规范确定或手动设置为合理的范围。为了说明我们将深度区间划分为区间的想法,我们想将我们的最终解决方案与我们评估的其他三种可能的设计选择进行对比:

  • 具有均匀bin宽的固定bin:深度间隔D被划分为大小相等的N个bin;
  • 具有对数刻度bin宽度的固定bin:深度间隔D按对数刻度划分为大小相等的bin;
  • 训练过的bin宽度:bin宽度是自适应的,可以针对特定的数据集进行学习。由于bin宽度是通用的,因此所有图像最终共享深度间隔D的相同bin;
  • AdaBins:为每个图像自适应地计算bin宽度;

        我们推荐AdaBins策略作为最佳选择,我们的消融研究通过显示该设计相对于其替代方案的优势来验证这一选择。bin宽度的四种设计选择如图3所示。

图3:bin宽度的选择:Uniform和Loguniform bin是预先确定的;训练bin因数据集而异;自适应bin针对每个输入图像而变化

        其次,将深度间隔D离散化为多个bin,并将每个像素分配到一个单独的bin中,这导致了深度离散化伪影。因此,我们将最终深度预测为仓中心的线性组合,从而使模型能够估计平滑变化的深度值。

        第三,一些前期工作(图像字幕、目标检测等)提出在encoder块之后使用注意力模块来进行全局处理。此外,当前的SOTA深度估计使用了这种策略,这样的体系结构由三个块组成,按顺序排列:编码器、注意力,然后是解码器。我们最初遵循了这种方法,但考虑到在空间上更高分辨率的feature map上使用注意力可以获得更好的结果。因此,我们提出了一种架构,它也有这三个块,但顺序如下:编码器、解码器,最后是注意力。

        第四,我们希望建立在尽可能简单的架构上,以强调我们新提出的AdaBins概念的影响。因此,我们在现代编码器的基础上构建编码器,使用EfficientNet B5作为编码器的主干。

        在下一小节中,我们将对整个体系结构进行描述。

3.3. 体系结构描述

        图2显示了我们提出的深度估计架构的概述。我们的架构由两个主要组件组成:1)建立在预训练的EfficientNet B5[40]编码器和标准特征上采样解码器上的编码器-解码器块;2) 我们提出的自适应bin宽度估计器块称为AdaBins。第一个组成部分主要基于Alhashim和Wonka的简单深度回归网络,并进行了一些修改。两个基本的修改是:从DenseNet改为EfficientNet B5,并为新架构使用不同的损失函数。此外,解码器的输出是张量x_d\in R^{h×w×C_d},而不是表示最终深度值的单通道图像,我们将这个张量称为“decoded features”。第二个组件是本文的一个关键贡献,AdaBins模块。AdaBins模块的输入是大小为h×w×Cd的解码特征,输出张量的大小为h x w×1。由于当前GPU硬件的内存限制,我们使用h=H/2和w=W/2来使用更大的batch size,然后通过简单的双线性上采样到H×W×1来计算最终的深度图。

图2:我们提出的网络架构概述。我们的架构由两个主要组件组成:编码器块和我们提出的自适应bin宽度估计器块AdaBins。我们网络的输入是空间维度H和W的RGB图像,输出是单通道H×W深度图像(例如,空间分辨率的一半)。

 AdaBins模块中的第一个块称为miniViT,该块的概述如图4所示。它是ViT的一个简化版,并做了微小改动。mini-ViT有两个输出:1)bin度的矢量b,它定义了如何为输入图像划分深度间隔D;2)大小为h×w×C的范围注意力映射R,它包含像素级深度计算的有用信息。

图4:mini ViT块的概述。块的输入是输入图像的多通道特征图。该块包括应用于输入的patch嵌入的Transformer编码器,用于学习估计bin宽度b,以及计算范围注意力映射R所需的一组卷积核。

        Mini-ViT: 估计深度范围D内对于给定图像更有可能发生的子区间将需要同时组合局部结构信息和全局分布信息。我们建议使用全局注意力来计算每个输入图像的bin宽度向量b。全局注意力在内存和计算复杂性方面都是昂贵的,尤其是在更高分辨率下。然而,最近transformer的快速发展提供了一些有效的替代方案。我们在设计带有transformer的AdaBins模块时,从Vision Transformer ViT中获得了灵感。我们还使用了一个小得多的transformer版本,因为我们的数据集更小,并在以下描述中将此transformer称为mini-ViT或mViT。

        Bin-widths:我们首先描述如何使用mViT来获得bin宽度向量b。mViT块的输入是解码特征的张量x_d\in R^{h×w×C_d}。然而,transformer采用一系列固定大小的矢量作为输入。我们首先将解码的特征通过卷积块,称为嵌入卷积(见图4),核大小为p×p,步长为p,输出通道数为E。因此,这个卷积的结果是大小为h/p×w/p×E的张量(假设h和w都可以被p整除)。其结果中空间维度被拉平,形成向量X_p \in R^{SXE},其中S=hw/p^2作为transformer的有效序列长度。我们将这个E维向量序列称为patch嵌入。

        根据常见操作,我们在将patch嵌入送到transformer之前,将学习的位置编码添加到patch嵌入中。我们的transformer是一个小型transformer(详见表1),并输出一系列输出嵌入X_o \in R^{SXE}。我们在第一个输出嵌入上使用了MLP头(我们还试验了一个版本,该版本有一个额外的特殊令牌作为第一个输入,但没有看到改进)。MLP头使用ReLU激活并输出N维矢量b′。最后,我们对向量b′进行归一化,使其总和为1,以获得如下的bin宽度向量b:

        式中\epsilon = 10^{-3},较小的正值可以确保每个bin宽度严格非负。归一化引入了bin宽度之间的竞争,并通过预测D的感兴趣区域的较小仓宽度,在概念上迫使网络关注D内的子区间。

        在下一小节中,我们将描述如何从解码的特征和transformer输出嵌入中获得范围注意力映射R。

        Range attention maps:在这一点上,解码的特征表示高分辨率的局部像素级信息,而transformer的输出嵌入有效地包含更多的全局信息。如图4所示,来自transformer的输出嵌入第2到C+1的部分被用作1×1卷积核,并且与解码的特征进行卷积(后接3×3卷积层)以获得范围注意力映射R。这相当于计算被视为“keys”的像素特征和被视为‘queries’的transformer输出嵌入之间的点积注意力权重。这种使用输出嵌入作为卷积核的简单设计允许网络将来自transformer的自适应全局信息集成到解码特征的局部信息中。R和b被一起使用以获得最终的深度图。

        Hybrid regression:距离-注意力映射R通过1×1卷积层获得N个通道,然后进行Softmax激活。我们将N个Softmax得分pk,k=1...N解释为根据bin宽度向量b计算的N个深度bin中心c(b):={c(b1),c(b2),…,c(bN)}上的概率。bin宽度向量为:

        最后,在每个像素处,根据该像素处的Softmax分数和深度bin中心c(b)的线性组合计算最终深度值\widetilde{d},如下所示:

        与Fu等人相比,我们没有直接将深度预测为最有可能的bin的bin中心。这使我们能够在没有离散化伪影的情况下预测平滑的深度图,如图5所示:

图5:深度间隔离散化引入的伪影演示。我们的混合回归产生更平滑的深度图。

3.4. 损失函数

        Pixel-wise depth loss:们使用了Eigen等人引入的比例不变损失(SI)的缩放版本:

其中g_i = log \widetilde{d_i} - log d_i,GT深度d_i和 T表示具有有效GT值的像素的数量。我们在所有实验中使用λ=0.85和α=10。

        Bin-center density loss: 该损失项鼓励bin中心的分布遵循GT中深度值的分布。我们希望鼓励bin中心接近GT深度值,反之亦然。我们将bin中心的集合表示为c(b),将GT图像中所有深度值的集合表示为由X,并使用双向切角损失作为正则化子:

        最终,总的损失为:

         我们为所有实验设置了β=0.1。我们对不同的损失函数进行了实验,包括RMSE损失,以及[1]提出的组合SSIM加L1损失。然而,我们能够通过我们提出的损失获得最佳结果。我们在消融研究中对不同的损失函数及其性能进行了比较。

4、实验结果

5、结论

        我们引入了一个新的架构块,称为AdaBinsfor,用于从单个RGB图像进行深度估计。AdaBins在NYU和KITTI这两个最受欢迎的数据集上,相比之前的SOTA取得了决定性的提升。在未来的工作中,我们希望研究高分辨率信息的全局处理是否也能提高其他任务的性能,如分割、法线估计和多幅图像的3D重建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/110291.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cocos tilemap的setTileGIDAt方法不实时更新

需要取消勾选 Enable Culling。同时代码添加:markForUpdateRenderData函数。 floor.setTileGIDAt(102427,newP.x,newP.y,0); //中心 floor.markForUpdateRenderData(); 具体问题参考官网说明: Cocos Creator 3.2 手册 - 项目设置

将数据文件,控制文件,日志文件分别放在不同的目录下,且数据库正常启动

一、定位数据文件、控制文件、日志文件的位置 注意:后序需要用到这些文件的位置,可以在查询完毕之后先截图保存 1.以管理员身份登录数据库 sqlplus / as sysdba2.查找数据文件位置 SELECT name FROM v$datafile;3.查找控制文件位置 SELECT name FROM …

Python算法练习 10.30

leetcode 841 钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个房间,你可能会在里面找…

使用ControlNet生成视频(Pose2Pose)

目录 ControlNet 介绍 ControlNet 14种模型分别是用来做什么的 ControlNet 运行环境搭建 用到的相关模型地址 ControlNet 介绍 ControlNet 是一种用于控制扩散模型的神经网络结构,可以通过添加额外的条件来实现对图像生成的控制。它通过将神经网络块的权重复制到…

LeetCode 2742.给墙壁刷油漆

思路 dp(u,count)为当前再考虑下标为1-u的墙面&#xff0c;并且还有count免费工次的最小代价 主要是递归边界的选择&#xff1a; u1<count return 0; if(u-1&&count<0)return 0x3f3f3f3f; if(u-1&&count0)retrun 0; 这三个可以合并成 if(u<count) …

C文件操作

目录 1. 什么是文件 2. 为什么要有文件 3. 文件名 4. 文件类型 5. 文件指针 6. 文件的打开和关闭 7. 文件的顺序读写 7.1. fgetc 7.2. fputc 7.3. fgets 7.4. fputs 7.5. fscanf 7.6. fprintf 7.8. sscanf 7.9. sprintf 7.9. fread 7.10. fwrite 8. 文件的随…

drawio特性

drawio的特性 drawio是领先的基于Web技术的草图和图表功能功能的应用。 保证数据的安全 集成了各种不同的平台&#xff0c;和提供了在线的免费编辑器&#xff0c;可以使用app.diagrams.net来方案&#xff0c;drawio本身不会存储用户的数据。 随着互联网时代的发展&#xff0…

【Java笔试强训】Day7(WY22 Fibonacci数列、CM46 合法括号序列判断)

Fibonacci数列 链接&#xff1a;Fibonacci数列 题目&#xff1a; Fibonacci数列是这样定义的&#xff1a; F[0] 0 F[1] 1 for each i ≥ 2: F[i] F[i-1] F[i-2] 因此&#xff0c;Fibonacci数列就形如&#xff1a;0, 1, 1, 2, 3, 5, 8, 13, …&#xff0c;在Fibonacci数列…

Ant Design Vue

官网 vue2 全局引入 项目为vue2时(安装指定版本) npm i --save ant-design-vue1.7.2main.js引入 import Antd from ant-design-vue; import ant-design-vue/dist/antd.css; Vue.use(Antd);局部引入 npm install ant-design-vue --save第一步&#xff1a;在src内创建一个资…

oracle (8)Managing Tablespace Data File

Managing Tablespace & Data File &#xff08;维护表空间和数据文件&#xff09; 目标&#xff1a; 定义表空间和数据文件的用途创建表空间管理表空间学会使用甲骨文托管文件(OMF) 创建和管理表空间&#xff08;不是重点&#xff09;获取表空间信息 一、基础知识 1、表…

故障诊断模型 | Maltab实现BiLSTM双向长短期记忆神经网络故障诊断

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现BiLSTM双向长短期记忆神经网络故障诊断 模型描述 利用各种检查和测试方法,发现系统和设备是否存在故障的过程是故障检测;而进一步确定故障所在大致部位的过程是故障定位。故障…

网络安全(黑客)—小白自学路线

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

新恶意软件使用 MSIX 软件包来感染 Windows

人们发现&#xff0c;一种新的网络攻击活动正在使用 MSIX&#xff08;一种 Windows 应用程序打包格式&#xff09;来感染 Windows PC&#xff0c;并通过将隐秘的恶意软件加载程序放入受害者的 PC 中来逃避检测。 Elastic Security Labs 的研究人员发现&#xff0c;开发人员通常…

【Linux】centos安装配置及远程连接工具的使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

使用electron创建桌面应用及常见打包错误解决

一、基本要求 在使用Electron进行开发之前&#xff0c;您需要安装 Node.js。 要检查 Node.js 是否正确安装&#xff0c;请在您的终端输入以下命令&#xff1a; node -v npm -v这两个命令应输出了 Node.js 和 npm 的版本信息。 二、创建应用 1、首先创建一个文件夹 mkdir …

数据结构:算法(特性,时间复杂度,空间复杂度)

目录 1.算法的概念2.算法的特性1.有穷性2.确定性3.可行性4.输入5.输出 3.好算法的特质1.正确性2.可读性3.健壮性4.高效率与低存储需求 4.算法的时间复杂度1.事后统计的问题2.复杂度表示的计算1.加法规则2.乘法规则3.常见函数数量级比较 5.算法的空间复杂度1.程序的内存需求2.例…

[架构之路-246/创业之路-77]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 客户关系管理系统CRM

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 客户关系管理系统CRM 1.1.1 什么是客户关系管理系统 1.1.2 CRM总体架构 1.1.3 什么类型的企业需要CRM 1.1.4 创业公司在什么阶段需要CRM 1.1.5 研发型创业公司什么时候需要CRM 1.1.6 C…

Django 社区志愿者管理系统

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统&#xff0c;主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…

Hudi系列文章7-RFC24 Flink 写入流程优化

文章目录 前言问题背景瓶颈与解决方案瓶颈一解决方法工作流程&#xff1a;精准一次语义容灾CoorinatorCheckpoint如何配合使用StreamWriteOperatorCoordinator CheckpointedFunctionStreamWriteFunctionInstant 提前生成问题 瓶颈二问题解决方案BucketAssignerBucketWriter 重点…

各传输介质详细知识点

一.百兆网传输介质 快速以太网(802.3u) 100Base-T2 电缆&#xff1a;2对3类UTP 最大段长&#xff1a;100m 特性阻抗&#xff1a;100 100Base-T4 电缆&#xff1a;4对3类UTP 最大段长&#xff1a;100m 特点&#xff1a;8B/6T&#xff0c;NRZ编码 特性阻抗&#xff1a;1…