论文:https://arxiv.org/pdf/2205.08534.pdf

代码:https://github.com/czczup/vit-adapter

 

导读

与最近将视觉特定的归纳偏差引入Vision Transformer架构不同,ViT由于缺乏图像的先验信息,在密集预测任务上的性能较差。为了解决这个问题,本文提出了一种Vision Transformer适配器(ViT-Adapter),ViT-Adapter可以通过额外的架构引入归纳偏差来弥补ViT的缺陷并实现与视觉特定模型相当的性能。具体来说,ViT-Adapter中的Backbone是一个普通的Transformer,可以用多模态数据进行预训练。在对下游任务进行微调时,使用特定于模态的适配器将数据和任务的先验信息引入模型,使其适用于这些任务。作者验证了ViT-Adapter在多个下游任务上的有效性,包括目标检测、实例分割和语义分割。尤其,使用HTC++时,ViT-Adapter-L得到了60.1 和52.1 ,在COCO test-dev上,超过 Swin-L 1.4 和1.0 。对于语义分割,ViT-Adapter-L在ADE20K val上建立了一个新的mIoU 60.5%,比SwinV2-G高0.6%。

 

贡献

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

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

减少特性粒度损失的各种技术已经被提出。包括更高的输入分辨率(如果计算预算允许),膨胀卷积在不进行下采样的前提下快速增大感受野,从编码器的多个阶段适当放置跳跃连接到解码器,或者,最近,通过在网络中连接并行的多分辨率特征表示。虽然这些技术可以显著改进预测质量,但是网络的瓶颈仍是它们的基本构造块:卷积。卷积与非线性模块一起构成了图像分析网络的基本计算单元。卷积,根据定义,是有限制感受野的线性算子。单个卷积的有限的接受域和有限的表达能力需要序列叠加到非常深的架构中,以获得足够广泛的背景和足够高的表征能力。然而,这需要生产许多中间表征,消耗大量的内存。为了使内存消耗保持在现有计算机体系结构可行的水平上,降低中间表示的采样是必要的。

如图 1 所示,与之前对大规模图像数据集(例如ImageNet)进行预训练和对不同任务进行微调的范式相比,本文的范式更加灵活。在ViT-Adapter框架中,Backbone网络是一个通用模型(例如,ViT),可以使用多模态数据和任务进行预训练。当将其应用于下游任务时,视觉专用适配器将输入数据和任务的先验信息引入到通用Backbone网络之中,使模型适用于下游任务。通过这种方式,使用ViT作为Backbone,ViT-Adapter框架实现了与专为密集预测任务设计的Transformer Backbone(如Swin Transformer)相当甚至更好的性能。

 

方法

如图3所示,ViT-Adapter模型可以分为2部分。

  • 第1部分是Backbone(即 ViT):它由1个Patch Embedding和L个Transformer Encoder层组成(见图3(a))。
  • 第2部分是提出的ViT-Adapter:如图3(b)所示,它包含1个Spatial prior module,用于从输入图像中捕获空间特征,1个Spatial Feature injector,用于将空间先验注入到ViT中,以及1个多尺度特征提取器,用于从ViT中提取分层特征。

对于ViT,首先将输入图像输入Patch Embedding,将图像分成16×16个不重叠的Patch。在此之后,这些Patch被Flatten并投影到d维Embedding中。这里的特征分辨率降低到原始图像的1/16。最后,嵌入的Patch被和位置嵌入通过ViT的L编码器层。

对于ViT-Adapter,首先将输入图像输入到Spatial prior module中。将收集3种目标分辨率(即1/8、1/16和1/32)的d维空间特征。然后,这些特征映射被Flatten并连接起来,作为特征交互的输入。具体来说,给定交互时间N,将ViT的Transforer编码器均匀地分割成N个Blocks,每个Block包含L/N编码器层。对于第i个Block,首先通过Spatial Feature injector将空间先验注入到Block中,然后通过多尺度特征提取器从Block的输出中提取层次特征。经过N个特征交互后,获得了高质量的多尺度特征,然后将特征分割并reshape为3个目标分辨率1/8、1/16和1/32。最后,通过2×2的转置卷积对1/8尺度的特征图进行上采样,得到了1/4尺度的特征图。

通过这种方法,得到了一个与ResNet分辨率相似的特征金字塔,它可以用于各种密集的预测任务。

 

Spatial Prior Module

最近的工作表明具有重叠滑动窗口的卷积可以帮助Transforer更好地捕捉输入图像的局部连续性。受此启发,作者在ViT中引入了一个基于卷积的Spatial prior module,它通过一个stem和3个卷积将H×W输入图像下采样到不同的尺度。该模块旨在模拟与Patch Embedding平行的图像的局部空间上下文,以免改变ViT的原始架构。

如图3(c)所示,采用了1个借鉴于ResNet的标准卷积stem,它由3个卷积层和一个最大池化层组成。接下来,使用一个步长为2的3×3卷积堆栈构成了该模块的其余部分,它使通道数量增加了一倍并减小了特征图的大小。

最后,在最后采用几个1×1卷积将特征映射投影到D维。通过这种方法,可以得到了1个特征金字塔,它包含了分辨率分别为1/8、1/16和1/32的D维特征图。最后,将这些特征映射Flatten+Concat到特征token 中,作为以后Feature Interaction的输入。

 

Feature Interaction

由于柱状结构,ViT中的特征图是单尺度和低分辨率的,与金字塔结构的Transformer相比,ViT对于密集预测任务的性能是次优的。为了缓解这个问题,作者提出了2个特征交互模块,在适配器和ViT之间传递特征映射。

具体来说,这2个模块分别是基于Cross-Attention的Spatial Feature Injector和Multi-Scale Feature Extractor。

如前面所述,将基于ViT的Transformer编码器划分为N个相等的Blocks,并分别在每个Block之前和之后应用所提出的2个算子。

 

1、Spatial Feature Injector

如图3(d)所示,该模块用于将空间先验注入ViT。具体来说,对于Transformer的第i个Block,将以输入特征Fivit作为query,空间特征Fisp作为key和value。使用Cross-Attention将空间特征注入到输入特征中,该过程通过数学表达式可以表示为:

其中归一化层为LayerNorm,注意层的注意力机制是可选的。这里为了降低计算代价,采用了一种具有线性复杂度的可变形注意力来实现注意力层。

此外,应用一个可学习的向量来平衡注意力层的输出和输入特征Fivi,它被初始化为0。这种初始化策略确保了Fivi的特征分布不会由于空间先验的注入而被大幅修改,从而更好地利用了预训练后的ViT权值。

 

2、Multi-Scale Feature Extractor

在将空间先验注入ViT后,通过Fivi的编码器层获得输出特征Fi+1vi。这样便可以交换ViT特征和空间特征的作用。也就是说,采用空间特征作Fisp为query,输出特征作为key和value。然后再次通过Cross-Attention来交互这2个特征,过程可以被定义为:

与Spatial Feature Injector一样,在这里使用可变形注意力来降低计算成本。此外,为了弥补固定大小位置嵌入的缺陷,在Cross-Attention之后引入卷积前馈网络(CFFN)。考虑到效率并将CFFN的比率设置为1/4。CFFN层通过带有0填充的深度卷积来增强特征的局部连续性,具体可以表示为:

其中,新的空间特征将被用作下一个Block中特征交互的输入。

 

Architecture Configurations

本文为4种不同的ViT变体构建了ViT-Adapter,包括ViT-T、ViT-S、ViT-B和ViT-L。对于这些模型,ViT-Adapter的参数数分别为2.5M、5.8M、14.0M和23.7M。每种配置的细节如表1所示。

 

实验

目标检测

表2将本文的方法与基于MaskR-CNN的代表性方法进行了比较。结果表明,结合我们的适配器,ViT可以在目标检测和实例分割任务方面实现显著的改进。

从表3中可以发现本文的ViT-Adapter达到了与特定设计的Transformer相当的精度。更重要的是,我们可以看到与在ViT的所有层中使用全局关注的基线相比,ViT-Adapter带来了2.8−3.4AP的增益。

 

实例分割

如表4所示,对于25个周期的时间表,我们的ViT-Adapter-B产生更高的APb(50.3vs.48.1),只有6M的额外参数。此外,当训练50个epoch时,我们的方法达到50.8APb,比没有我们的适配器的模型好0.7分。这些结果也表明,我们的适配器加速了收敛近两倍。

 

语义分割

在表5中,作者报告了单尺度和多尺度mIoU的语义分割结果。首先考虑语义FPN[39],它是一个简单而轻量级的分割框架,没有复杂的设计。在可比的模型规模下,本文的方法明显超过了以往的代表性方法。

 

可视化结果

用于目标检测和实例分割的特征映射的可视化。与配备了额外的转置卷积的ViT∗基线[43]相比,我们的ViT-适配器通过多个特征交互产生了细粒度的多尺度特征,从而提高了定位质量,减少了遗漏检测。

 

参考

https://mp.weixin.qq.com/s/UnSCqD2xj95e9EhavfE6cQ

https://blog.csdn.net/weixin_42821501/article/details/117226132

https://zhuanlan.zhihu.com/p/417442019

MPViT : Multi-Path Vision Transformer for Dense Prediction

https://zhuanlan.zhihu.com/p/478325208