在这里插入图片描述

摘要

我们介绍了密集视觉变压器,这是一种利用视觉变压器代替卷积网络作为密集预测任务骨干的架构。我们将来自视觉转换器各个阶段的令牌组装成各种分辨率的图像表示,并使用卷积解码器逐步将它们组合成全分辨率预测。变压器骨干以恒定和相对较高的分辨率处理表征,并且在每个阶段都具有全局接受场。

与全卷积网络相比,这些属性允许密集视觉转换器提供更细粒度和更全局一致的预测。我们的实验表明,这种架构在密集预测任务上产生了实质性的改进,特别是当有大量的训练数据可用时。对于单目深度估计,我们观察到与最先进的全卷积网络相比,相对性能提高了28%。当应用于语义分割时,密集视觉变压器以49.02%的mIoU在ADE20K上创下了新的技术水平。我们进一步展示了该架构可以在更小的数据集(如NYUv2、KITTI和Pascal Context)上进行微调,在这些数据集上它也设置了新的技术状态。

介绍

几乎所有现有的密集预测架构都是基于卷积网络的[6,31,34,42,49,50,53]。密集预测架构的设计通常遵循一种模式,即逻辑上将网络分为编码器和解码器。编码器通常基于图像分类网络(也称为骨干网络),该网络在大型语料库(如ImageNet)上进行预训练[9]。解码器聚合来自编码器的特征,并将它们转换为最终的密集预测。密集预测的架构研究往往集中在解码器及其聚合策略上[6,7,50,53]。然而,人们普遍认为,骨干网架构的选择对整个模型的能力有很大的影响,因为在编码器中丢失的任何信息都不可能在解码器中恢复

卷积主干对输入图像逐步下采样,提取多尺度特征。下采样可以逐步增加接受域,将低级特征分组为抽象的高级特征,同时确保网络的内存和计算需求保持可处理性。然而,下采样有明显的缺点,在密集预测任务中特别突出:特征分辨率和粒度在模型的较深阶段丢失,因此很难在解码器中恢复。虽然特征分辨率和粒度对于某些任务(如图像分类)可能无关紧要,但它们对于密集预测至关重要,在密集预测中,理想情况下架构应该能够以或接近输入图像的分辨率来解析特征

人们提出了各种技术来减轻特征粒度的损失。这些方法包括在更高的输入分辨率下进行训练(如果计算预算允许的话),扩展卷积[49]以在不下采样的情况下快速增加接受域,适当放置从编码器的多个阶段到解码器的跳过连接[31],或者最近通过在整个网络中并行连接多分辨率表示[42]。虽然这些技术可以显著提高预测质量,但网络仍然受到其基本构建块:卷积的瓶颈。卷积和非线性构成了图像分析网络的基本计算单元。根据定义,卷积是具有有限接受域的线性算子。有限的接受域和单个卷积的有限表达能力需要将序列堆叠到非常深的架构中,以获得足够广泛的上下文和足够高的表示能力。然而,这需要生成许多中间表示,这些中间表示需要大量的内存。为了将内存消耗保持在现有计算机体系结构可行的水平上,对中间表示进行降采样是必要的。

在这项工作中,我们介绍了密集预测变压器(DPT)DPT是基于编码器-解码器设计的密集预测体系结构,该设计利用变压器作为编码器的基本计算构建块。具体来说,我们使用最近提出的视觉转换器(vision transformer, ViT)[11]作为主干架构。我们将由ViT提供的词袋表示重新组合成各种分辨率的类图像特征表示,并使用卷积解码器逐步将特征表示组合成最终的密集预测。与全卷积网络不同,视觉变换主干在计算初始图像嵌入后放弃明确的下采样操作,并在所有处理阶段保持恒定维数的表示。此外,它在每个阶段都有一个全球性的接受野。我们表明,这些属性对于密集预测任务特别有利,因为它们自然会导致细粒度和全局一致的预测。

我们进行了单目深度估计和语义分割的实验。对于具有大规模训练数据的通用单目深度估计任务[30],与性能最好的全卷积网络相比,DPT在该任务上的性能提高了28%以上。该架构还可以微调到小型单目深度预测数据集,如NYUv2[35]和KITTI[15],它也设置了新的艺术状态。我们通过语义分割实验进一步证明了DPT的强大性能。对于这项任务,DPT在具有挑战性的ADE20K[54]和Pascal Context[26]数据集上设置了新的技术状态。我们的定性结果表明,与卷积网络相比,改进可归因于更细粒度和更全局一致的预测

相关工作

全卷积网络[33,34]是密集预测的原型架构。多年来,这个基本模式的许多变体已经被提出,然而,所有现有的架构都采用卷积和子采样作为其基本元素,以便学习可以利用适当大上下文的多尺度表示。一些研究提出在不同阶段池化的表征逐步上采样[1,23,27,31],而其他研究则使用扩展卷积[6,7,49]或在多个尺度上并行多尺度特征聚合[53]来恢复细粒度预测,同时确保足够大的上下文。最近的架构在整个网络中维持高分辨率表示和多个低分辨率表示[37,42]。

近年来,基于注意力的模型[2],特别是变形器[39]已经成为学习自然语言处理(NLP)强模型的首选架构[4,10,24]。变压器是基于自关注机制的集对集模型。Transformer模型在作为高容量架构实例化并在非常大的数据集上进行训练时特别成功。已经有一些研究将注意力机制应用于图像分析[3,28,29,41,52]。特别是,最近已经证明,在NLP中成功的基于令牌的变压器架构的直接应用可以在图像分类上产生具有竞争力的性能[11]。这项工作的一个关键观点是,就像NLP中的变压器模型一样,视觉变压器需要与足够数量的训练数据配对,以实现其潜力

结构

本节介绍密集视觉变压器。我们保留了整个编码器-解码器结构,该结构在过去已经成功地进行了密集预测。我们利用视觉转换器[11]作为主干,展示了该编码器产生的表示如何有效地转换为密集预测,并为该策略的成功提供了直觉。图1(左)显示了完整体系结构的概述。
在这里插入图片描述
Transformer encoder. 在高层次上,视觉转换器(ViT)[11]对图像的词袋表示进行操作[36]。图像补丁被单独嵌入到特征空间中,或者从图像中提取深度特征,扮演“词”的角色。

在接下来的工作中,我们将把嵌入的“单词”作为标记。变形器使用多头自注意(MHSA)的顺序块(sequence block of multi-head self-attention,简称MHSA)[39]来转换标记集,它们将标记相互关联以转换表示。

对于我们的应用程序来说,重要的是,转换器在所有计算过程中维护令牌的数量。由于令牌与图像补丁具有一对一的对应关系,这意味着ViT编码器在所有转换阶段保持初始嵌入的空间分辨率。此外,MHSA本质上是一种全局操作,因为每个令牌都可以参与并影响其他令牌。因此,变压器在初始嵌入后的每个阶段都有一个全局接受场。这与卷积网络形成鲜明对比,卷积网络随着特征通过连续卷积和下采样层而逐渐增加其接受场。

更具体地说,ViT通过处理所有不重叠的正方形补丁,从图像中提取一个补丁嵌入大小为p2像素的图像。这些小块被平化为矢量,并使用线性投影单独嵌入。另一种更具样本效率的ViT变体通过对图像应用ResNet50[16]提取嵌入,并使用结果特征映射的像素特征作为标记。由于变压器是集合到集合的函数,因此它们本质上不保留单个标记的空间位置信息。因此,图像嵌入与可学习的位置嵌入相连接,以将该信息添加到表示中。在NLP工作之后,ViT还添加了一个特殊的令牌,该令牌不以输入图像为基础,并作为用于分类的最终全局图像表示。我们把这个特殊的标记称为读出标记。
在这里插入图片描述
使用L个变压器层将输入令牌转换为L的新表示,其中L表示第L个变压器层的输出。Dosovitskiy等人[11]定义了这一基本蓝图的几种变体。我们在工作中使用了三种变体:viti -base,它使用基于补丁的嵌入程序,具有12个变压器层;viti - large,采用相同的嵌入程序,具有24层变压器,特征尺寸D更宽;viti - hybrid,它使用ResNet50来计算图像嵌入,然后是12个变压器层。对于所有的实验,我们使用斑块大小p = 16。我们建议感兴趣的读者参阅原始作品[11],以了解有关这些体系结构的更多细节。

viti - base和viti - large的嵌入程序分别将平整的斑块投影到维数D = 768和D = 1024。由于两个特征维度都大于输入patch中的像素数,这意味着如果对任务有利,嵌入过程可以学习保留信息。原则上,输入补丁的特征可以用像素级精度进行解析。类似地,ViT-Hybrid架构以输入分辨率的1 / 16提取特征,这是卷积主干通常使用的最低分辨率特征的两倍。

Convolutional decoder.我们的解码器以不同的分辨率将标记集合组装成类似图像的特征表示特征表示逐渐融合到最终的密集预测中。我们提出了一个简单的三阶段重组操作,从变压器编码器的任意层的输出令牌中恢复类似图像的表示:
在这里插入图片描述
其中,s表示恢复后的表示相对于输入图像的输出大小比,^D表示输出特征维数。
在这里插入图片描述
该操作主要负责适当地处理读出令牌。因为readout令牌对于密集预测任务没有明确的用途,但对于捕获和分发局信息仍然可能有用全,我们评估了这种映射的三种不同变体:
在这里插入图片描述
在这里插入图片描述
我们首先使用1 × 1卷积将输入表示投影到^D,然后当s≥p时使用(跨步)3 × 3卷积,或者当s < p时使用跨步3 × 3转置卷积,分别实现空间下采样和上采样操作

GitHub 加速计划 / tra / transformers
130.24 K
25.88 K
下载
huggingface/transformers: 是一个基于 Python 的自然语言处理库,它使用了 PostgreSQL 数据库存储数据。适合用于自然语言处理任务的开发和实现,特别是对于需要使用 Python 和 PostgreSQL 数据库的场景。特点是自然语言处理库、Python、PostgreSQL 数据库。
最近提交(Master分支:2 个月前 )
13493215 * remove v4.44 deprecations * PR comments * deprecations scheduled for v4.50 * hub version update * make fiuxp --------- Co-authored-by: Marc Sun <57196510+SunMarc@users.noreply.github.com> Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> 23 小时前
8d50fda6 * Remove FSDP wrapping from sub-models. * solve conflict trainer.py * make fixup * add unit test for fsdp_auto_wrap_policy when using auto_find_batch_size * put back extract_model_from_parallel * use transformers unwrap_model 23 小时前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐