《Swin Transformer Hierarchical Vision Transformer using Shifted Windows》翻译

发布于 2022-11-30  358 次阅读


摘要

本文提出了一个新的vision Transformer模型,称为Swin Transformer,它可以作为计算机视觉的一个通用骨干。将Transformer从自然语言处理运用到视觉的挑战来自于两个领域的差异,比如视觉实体的尺度变化很大,以及与文本中的字相比,图像中的像素分辨率很高。为了解决这些差异,我们提出了一个层次化的Transformer,其表示方法是用移位窗口计算的。移位窗口方案通过将自我注意的计算限制在不重叠的局部窗口,同时也允许跨窗口连接,从而带来更大的效率。这种分层结构可以灵活地在各种尺度上建模,并且相对于图像大小具有线性计算复杂性。Swin Transformer的这些特质使其与广泛的视觉任务兼容,包括图像分类(在ImageNet-1K上的87.3 top-1 accuracy)和密集预测任务,如物体检测(在COCO testdev上的58.7 box AP和 mask AP)和语义分割(在ADE20K val上的53.5 mIoU)。它的性能超过了以前的最先进水平,在COCO上为 box APmask,在ADE20K上为+3.2 mIoU,证明了基于Transformer的模型作为视觉骨干网络的潜力。分层设计和移位窗口的方法也被证明对所有MLP架构有益。代码和模型可在https://github.com/microsoft/Swin-Transformer 公开获取。

引言

长期以来,计算机视觉中的建模工作一直由卷积神经网络(CNN)主导。从AlexNet[39]及其在ImageNet图像分类挑战中的革命性表现开始,CNN架构通过更大的规模[30, 76]、更广泛的连接[34]和更复杂的卷积形式[70, 18, 84],已经发展得越来越强大。随着CNN成为各种视觉任务的骨干网络,这些架构上的进步导致了性能的提高,广泛地提升了整个领域。

另一方面,自然语言处理(NLP)中的网络架构的演变走了一条不同的道路,今天流行的架构反而是Transformer[64]。Transformer是为序列建模和转换任务而设计的,其显著特点是使用注意力来模拟数据中的长距离依赖关系。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近它在某些任务上表现出了有希望的结果,特别是图像分类[20]和视觉-语言联合建模[47]。

image-20221129204912698

在本文中,我们试图扩大Transformer的适用性,使其能够作为计算机视觉的通用骨干,就像它对NLP和CNN对视觉的作用一样。我们观察到,将其在语言领域的高性能转移到视觉领域的重大挑战可以用这两种模式之间的差异来解释。这些差异之一涉及规模。与作为语言Transformer处理的基本元素的单词token不同,视觉元素在尺度上可以有很大的变化,这个问题在物体检测等任务中受到关注[42, 53, 54]。在现有的基于Transformer的模型中,token都是固定比例的,这一特性不适合这些视觉应用。另一个区别是,与文本段落中的字相比,图像中的像素分辨率要高得多。有许多视觉任务,如语义分割,需要在像素层面进行密集的预测,而这对于高分辨率图像上的Transformer来说是难以实现的,因为其自注意力机制的计算复杂性与图像大小成二次方比例。为了克服这些问题,我们提出了一个通用的Transformer主干,称为Swin Transformer,它可以构建分层的特征图,并对图像大小具有线性的计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的patch(以灰色勾勒)开始,逐步合并更深层的Transformer中的相邻patch,构建了一个层次化的表示。有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)[42]或U-Net[51]。线性计算的复杂性是通过在分割图像的非重叠窗口内局部计算自注意来实现的(以红色勾勒)。每个窗口中的patch数量是固定的,因此复杂性与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用骨干,与之前基于Transformer的架构[20]形成对比,后者产生单一分辨率的特征图,并具有二次复杂性。

image-20221129205732074

Swin Transformer的一个关键设计元素是它在连续的自注意层之间的窗口分区的转移,如图2所示。移位后的窗口为前一层的窗口架起了桥梁,提供了它们之间的连接,大大增强了建模能力(见表4)。这种策略在现实世界的延迟方面也是高效的:一个窗口内的所有query patch共享相同的key集合,这有利于硬件的内存访问。相比之下,早期的基于滑动窗口的自注意方法由于不同的query像素有不同的key集合,在一般的硬件上有低延迟的问题。我们的实验表明,所提出的移位窗方法比滑动窗方法的延迟要低得多,但在建模能力上却很相似(见表5和表6)。事实证明,移位窗口法也有利于所有MLP架构[61]。

所提出的Swin Transformer 在图像分类、物体检测和语义分割等识别任务上取得了强大的性能。它在这三个任务上的表现明显优于ViT/DeiT[20, 63]和ResNe(X)t模型[30, 70],延迟相近。在COCO测试开发集上,其的box AP和的mask AP超过了之前最先进的结果,即 的box AP(无外部数据的复制粘贴[26])和的mask AP(DetectoRS[46])。在ADE20K语义分割上,它在值集上获得了,比之前的最先进水平(SETR[81])提高了 mIoU。它在ImageNet-1K图像分类上也取得了的最高准确率。

我们相信,一个横跨计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,而且两个领域的建模知识可以更深入地共享。我们希望Swin Transformer在各种视觉问题上的强大表现能够推动这一信念在社区中的深入发展,并鼓励视觉和语言信号的统一建模。

相关工作

CNN及其变种 CNN作为整个计算机视觉的标准网络模型。虽然CNN已经存在了几十年[40],但直到AlexNet[39]的推出,CNN才开始发展并成为主流。此后,更深更有效的卷积神经架构被提出来,进一步推动了计算机视觉的深度学习浪潮,例如VGG[52]、GoogleNet[57]、ResNet[30]、DenseNet[34]、HRNet[65]和EfficientNet[58]。除了这些架构上的进步,在改进单个卷积层方面也有很多工作,如深度卷积[70]和可变形卷积[18, 84]。虽然CNN及其变种仍然是计算机视觉应用的主要骨干架构,但我们强调了类似Transformer的架构在视觉和语言之间统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了强大的性能,我们希望它能为建模的转变做出贡献。

基于自注意的骨干架构 同样受到自我注意层和Transformer架构在NLP领域的成功启发,一些工作采用自注意层来取代流行的ResNet中的部分或全部空间卷积层[33, 50, 80]。在这些工作中,自注意是在每个像素的局部窗口内计算的,以加快优化[33],它们实现了比对应的ResNet架构稍好的准确性/FLOPs权衡。然而,其昂贵的内存访问导致其实际延迟明显大于卷积网络[33]。我们建议不使用滑动窗口,而是在连续的层之间转移窗口,这样可以在一般的硬件中更有效地实现。

自注意/Transformers来补充CNN 另一个工作方向是用自注意层或变换器来增强标准CNN架构。自注意层可以补充骨干网[67, 7, 3, 71, 或头部网络,提供编码远距离依赖或异质互动的能力。最近,Transformer中的编码器-解码器设计已被应用于物体检测和实例分割任务。我们的工作探索了Transformers在基本视觉特征提取方面的适应性,是对这些工作的补充。

基于Transformers的视觉骨干 与我们的工作最相关的是Vision Transformer (ViT) [20]及其后续工作。ViT的开创性工作直接将Transformer架构应用于非重叠的中型图像patche上进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度-准确度权衡。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT[63]引入了一些训练策略,使ViT在使用较小的ImageNet-1 数据集时也能有效。ViT在图像分类上的结果是令人鼓舞的,但是它的结构不适合作为密集视觉任务或输入图像分辨率较高时的通用骨干网络,因为它的低分辨率特征图和复杂度随图像大小呈二次增长。有一些工作通过直接上采样或去卷积将ViT模型应用于物体检测和语义分割的密集视觉任务,但性能相对较低。与我们的工作同时进行的还有一些修改ViT结构的工作以获得更好的图像分类。根据经验,我们发现我们的Swin Transformer架构在这些方法中实现了图像分类的最佳速度-准确度权衡,尽管我们的工作侧重于通用性能而不是专门的分类。另一项同时进行的工作[66]探索了一个类似的思路,在Transformers上建立多分辨率的特征图。它的复杂度仍然是对图像大小的二次方,而我们的复杂度是线性的,而且还在局部操作,这被证明有利于对视觉信号中的高相关性进行建模。我们的方法既高效又有效,在COCO物体检测和ADE20K语义分割上都达到了最先进的精度。

方法

整体架构

image-20221129210641922

 

图3展示了Swin Transformer结构的概况,其中描述了微小版本(SwinT)。它首先通过一个patch分割模块将输入的RGB图像分割成不重叠的patch,就像ViT所做的一样。每个patch被视为一个 "token",其特征被设置为原始像素RGB值的连接。在我们的实现中,我们使用 大小的patch尺寸,因此每个patch的特征维度为。一个线性嵌入层应用于这个原始值的特征,将其投射到一个任意的维度(表示为)。

几个具有修改过的自注意计算的Transformer块(Swin Transformer块)被应用于这些patch token。Transformer块保持了token的数量,并与线性嵌入一起被称为 "阶段1"。

为了产生分层表征,随着网络的深入,通过patch merging层来减少token的数量。第一个patch merging层将每组 的相邻patch的特征连接起来,并在维的连接特征上应用一个线性层。这将token的数量减少了的倍数(的分辨率的下采样),输出维度被设置为。之后应用Swin Transformer块进行特征转换,分辨率保持为 。这第一个patch merging和特征转换块被称为 "阶段2"。该过程重复两次,分别为 "阶段3 "和 "阶段4",其输出分辨率为。这些阶段共同产生了一个层次化的表示。与典型的卷积网络,如VGG[52]和ResNet[30]的特征图分辨率相同。因此,所提出的架构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。

Swin Transformer块 Swin Transformer是通过将Transformer块中的标准多头自注意(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述),而其他层保持不变。如图3(b)所示,一个Swin Transformer模块包括一个基于移位窗的MSA模块,然后是一个两层的MLP,中间是GELU非线性变换。在每个MSA模块和每个MLP之前都有一个LayerNorm ( ) 层,每个模块之后都有一个残差连接。

基于移动窗口的自注意力

标准的Transformer架构[64]和它为图像分类所做的调整[20]都进行了全局的自注意力,其中一个token和所有其他token之间的关系被计算出来。全局计算会导致相对于token数量的二次复杂性,使得它不适合许多需要大量token集进行密集预测或表示高分辨率图像的视觉问题。

非重叠窗口中的自注意力 为了有效建模,我们建议在局部窗口中计算自注意。窗口的安排是以非重叠的方式均匀地划分图像。假设每个窗口包含 patche,全局MSA模块和基于窗口的MSA模块在一个 patch的图像上的计算复杂性为

其中前者对patch数是二次方的关系,而后者在固定时是线性的(默认设置为7)。全局性的自注意计算对于大的来说通常是负担不起的,而基于窗口的自注意是可扩展的。

在连续的区块中进行移位窗口划分 基于窗口的自我注意模块缺乏跨窗口的连接,这限制了其建模能力。为了引入跨窗口的连接,同时保持非重叠窗口的有效计算,我们提出了一种移位的窗口划分方法,在连续的Swin Transformer块中交替使用两种划分配置。

如图2所示,第一个模块采用常规的窗口划分策略,从左上角的像素开始,的特征图被均匀地划分为 的窗口,窗口大小为。然后,下一个模块采用与前一层不同的窗口配置,将窗口从规则分区的窗口中移出 像素。

用移动窗口分区的方法,连续的Swin Transformer被计算为

其中 分别表示(S)WMSA模块和MLP模块对块的输出特征。

移位窗口划分方法在上一层的相邻非重叠窗口之间引入了连接,并被发现在图像分类、物体检测和语义分割中是有效的,如表4所示。

用于移位配置的高效的批量计算 移位窗口分区的一个问题是,它将导致更多的窗口。从 在移位配置中。而有些窗口将小于。一个直接的解决方案是将较小的窗口填充到的大小,并在计算注意力时屏蔽掉填充的值。当常规分区中的窗口数量较少时,例如,这个直接的解决方案所增加的计算量是相当大的 ,是的两倍。在这里,我们提出了一种更有效的批量计算方法,即向左上角方向循环移动,如图4所示。在这种转变之后,一个分批计算的窗口可能由特征图中不相邻的几个子窗口组成,因此采用了一种掩蔽机制,将自注意的计算限制在每个子窗口内。通过循环移位,分批窗口的数量与常规窗口划分的数量相同,因此也很有效。这种方法的低延迟显示在表5中。

相对位置偏差 在计算自注意时,我们遵循,在计算相似性时,对每个头都包括一个相对位置偏差

其中是查询、键和值矩阵;是查询/键维度,是窗口中的patch数量。由于每个轴的相对位置在的范围内,我们将一个较小尺寸的偏置矩阵 参数化,的值取自

如表4所示,我们观察到,与没有这个偏置项或使用绝对位置嵌入的对应项相比,有明显的改进。此外,像[20]中那样将绝对位置嵌入到输入中会使性能略有下降,因此在我们的实现中没有采用它。

预训练中学习到的相对位置偏差也可用于初始化模型,通过双立方插值对不同窗口大小进行微调[20, 63]。

架构变种

我们建立了我们的基础模型,称为Swin-B,其模型大小和计算复杂性与ViTB/DeiT-B相似。我们还介绍了Swin-T、Swin-S和Swin-L,它们的模型大小和计算复杂性分别为 。请注意,Swin-T和Swin-S的复杂度分别与ResNet-50(DeiT-S)和ResNet-101相似。窗口大小默认设置为。每个头的查询维度为,每个MLP的扩展层为,用于所有实验。这些模型变体的结构超参数为:

  • Swin-T: , layer numbers
  • Swin-S: , layer numbers
  • Swin-B: , layer numbers
  • Swin-L: , layer numbers

其中是第一阶段隐藏层的通道数。表1中列出了用于ImageNet图像分类的模型大小、理论计算复杂度(FLOPs)和模型变体的吞吐量。

实验结果

 

 

 

 

 

 

 

 

结论


面向ACG编程