总结
问题背景:
- Transformer在自然语言处理领域取得了巨大的成功,但在视觉领域的应用面临挑战,主要因为视觉实体的规模差异大,且图像的高分辨率使得传统全局自注意力计算复杂度过高。
- 现有的视觉Transformer架构通常只能生成低分辨率特征图,并且计算复杂度随着图像尺寸成二次增长,限制了它们在高分辨率图像上的应用。
Swin Transformer架构:
- 分层结构:Swin Transformer通过分层的方式生成特征图,从小尺寸的图像补丁开始,逐层合并相邻补丁,最终得到多分辨率的特征图。这种分层结构使其更适合用于各种计算机视觉任务,包括图像分类、目标检测和语义分割。
- 移位窗口自我注意:为解决传统自我注意在高分辨率图像中的计算效率问题,Swin Transformer提出了基于不重叠窗口的自我注意机制,每个窗口内的计算复杂度是线性的。为了增强模型的表达能力,提出了移位窗口的方法,使得连续的窗口可以连接,从而更有效地建模图像中的全局关系。
相对于vit的改进:
分层特征表示:
- ViT:使用固定大小的图像补丁(如16x16像素)作为输入标记,然后在整个图像范围内执行全局自注意力操作。这导致生成的特征图通常是低分辨率的,限制了其在密集预测任务(如对象检测、语义分割)中的表现。
- Swin Transformer:引入了分层特征表示结构。它从小尺寸的图像补丁开始,在网络的不同阶段逐层合并相邻的补丁,从而生成多分辨率的特征图。这种分层结构与典型的卷积神经网络(CNN)类似,使其更适用于各种视觉任务,如对象检测和语义分割。
基于移位窗口的自我注意:
- ViT:使用全局自注意力机制,这种方法的计算复杂度随着图像大小的平方增长,因此在处理高分辨率图像时计算成本非常高。
- Swin Transformer:采用了局部窗口内的自我注意机制,将自我注意力的计算限制在不重叠的局部窗口内,从而将计算复杂度降低为线性增长。为了克服局部窗口限制跨窗口连接的问题,Swin Transformer引入了移位窗口机制,在连续的Transformer层之间移动窗口分区,以建立跨窗口的联系,增强模型的表达能力。
计算复杂度的优化:
- ViT:由于使用全局自注意力机制,ViT的计算复杂度是二次的,随着图像分辨率的增加而快速增长。
- Swin Transformer:通过限制自注意力计算在局部窗口内进行,并使用移位窗口技术,使得计算复杂度与图像分辨率线性相关。这使得Swin Transformer在处理高分辨率图像时更为高效。
Abstract
本文提出了一种新的视觉转换器Swin Transformer,它可以作为计算机视觉的通用主干。将 Transformer 从语言适应视觉的挑战源于两个域之间的差异,例如视觉实体的规模变化很大,以及与文本中的单词相比,图像中像素的高分辨率。为了解决这些差异,我们提出了一个分层 Transformer,其表示是使用 Shifted 窗口计算的。移位窗口方案通过将自注意力计算限制在不重叠的局部窗口上,同时允许跨窗口连接,从而带来了更高的效率。这种分层架构可以灵活地在不同的尺度上建模,并且具有相对于图像大小的线性计算复杂度。Swin Transformer 的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K 上的 87.3 top-1 准确率)和密集预测任务,例如对象检测(COCO testdev 上的 58.7 box AP 和 51.1 mask AP)和语义分割(ADE20K val 上的 53.5 mIoU)。它的性能大大超过了之前的最新技术,COCO上的+2.7boxAP和+2.6maskAP,ADE20K上的+3.2 mIoU,展示了基于transformer的模型作为视觉骨干的潜力。分层设计和移位窗口方法也被证明有利于全 MLP 架构。代码和模型可在 https://github. com/microsoft/Swin-Transformer.
图1。(A)所提出的Swin Transformer通过在更深的层中合并图像块(以灰色显示)来构建分层特征映射,并且由于仅在每个局部窗口(以红色显示)内计算自我注意,因此输入图像大小具有线性计算复杂性。因此,它可以作为图像分类和密集识别任务的通用主干。(b) 相比之下,以前的视觉转换器 [20] 生成单个低分辨率的特征图,并且由于全局自注意力的计算,输入图像大小具有二次计算复杂度。
1. Introduction
计算机视觉中的建模长期以来一直由卷积神经网络 (CNN) 主导。从AlexNet[39]及其在ImageNet图像分类挑战上的革命性表现开始,CNN架构通过更大的规模[30,76]、更广泛的连接[34]和更复杂的卷积形式发展变得越来越强大[70,18,84]。随着 CNN 作为各种视觉任务的骨干网络,这些架构进步导致性能改进广泛提升整个领域。
另一方面,自然语言处理 (NLP) 中网络架构的演变采取了不同的路径,今天流行的架构是 Transformer [64]。为序列建模和转导任务设计,Transformer 因其使用注意力来模拟数据中的长期依赖关系而著称。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近在某些任务上展示了有希望的结果,特别是图像分类[20]和联合视觉语言建模[47]。
在本文中,我们试图扩展 Transformer 的适用性,使其可以作为计算机视觉的通用主干,就像 NLP 和 CNN 在视觉中所做的那样。我们观察到,将语言领域的高性能转移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。这些差异之一涉及规模。与作为语言转换器中处理的基本元素的词标记不同,视觉元素的规模可能会有很大差异,这个问题在对象检测等任务中受到关注[42,53,54]。在现有的基于 Transformer 的模型 [64, 20] 中,令牌都是固定规模的,这一特性不适合这些视觉应用。另一个区别是与文本段落中的单词相比,图像中像素的分辨率要高得多。存在许多视觉任务,例如语义分割,需要在像素级进行密集预测,这对于高分辨率图像上的 Transformer 来说是难以处理的,因为它的自我注意的计算复杂度与图像大小成二次方。为了克服这些问题,我们提出了一种通用的 Transformer 主干,称为 Swin Transformer,它构建了分层特征图,并且对图像大小具有线性计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的补丁(灰色轮廓)开始并逐渐合并更深的Transformer层中的相邻补丁来构建分层表示。通过这些分层特征图,Swin Transformer 模型可以方便地利用高级技术进行密集预测,例如特征金字塔网络 (FPN) [42] 或 U-Net [51]。线性计算复杂度是通过在分割图像的非重叠窗口内局部计算自注意力来实现的(用红色表示)。每个窗口中的补丁数量是固定的,因此复杂度与图像大小成线性关系。这些优点使 Swin Transformer 适合作为各种视觉任务的通用主干,与之前基于 Transformer 的架构 [20] 相比,该架构生成单个分辨率的特征图并具有二次复杂度。
Swin Transformer的一个关键设计元素是它在连续的自我注意层之间移动窗口分区,如图2所示。移位窗口桥接前一层的窗口,在它们之间提供连接,显著增强建模能力(见表4)。这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁共享相同的key set,这有助于硬件中的内存访问。相比之下,早期的基于滑动窗口的自我注意方法[33,50]由于不同查询像素的键集不同,在一般硬件上存在低延迟2。我们的实验表明,所提出的移位窗口方法的延迟比滑动窗口方法低得多,但在建模能力上是相似的(见表5和表6)。移位窗口方法也被证明有利于全 MLP 架构 [61]。
所提出的 Swin Transformer 在图像分类、目标检测和语义分割的识别任务上取得了强大的性能。它在三个任务上显着优于 ViT / DeiT [20, 63] 和 ResNe(X)t 模型 [30, 70],延迟相似。在COCO测试开发集上,它的58.7盒AP和51.1 mask AP超过了之前最先进的结果+2.7 box AP(没有外部数据的复制粘贴[26])和+2.6maskAP(DetectoRS[46])。在 ADE20K 语义分割上,它在 val 集上获得了 53.5 mIoU,比之前的最新技术(SETR [81])提高了 +3.2 mIoU。它还在 ImageNet-1K 图像分类上实现了 87.3% 的 top-1 准确率。
图2。在提出的Swin Transformer架构中计算自注意力的移位窗口方法的说明。在第1层(左),采用规则的窗口划分方案,并在每个窗口内计算自关注。在下一层1 + 1(右)中,窗口分区被移动,产生新的窗口。新窗口中的自关注计算在层上跨越了先前窗口的边界,提供了它们之间的连接。
我们相信,跨计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将有助于视觉和文本信号的联合建模,并且来自两个领域的建模知识可以更深入地共享。我们希望 Swin Transformer 在各种视觉问题上的强大性能可以在社区中更深入地推动这种信念,并鼓励视觉和语言信号的统一建模。
2. Related Work
CNN及其变体在整个计算机视觉中都是标准的网络模型。虽然CNN已经存在了几十年[40],但直到AlexNet的引入[39],CNN才起飞并成为主流。此后,人们提出了更深入、更有效的卷积神经架构,进一步推动了计算机视觉领域的深度学习浪潮,如VGG[52]、GoogleNet[57]、ResNet[30]、DenseNet[34]、HRNet[65]和EfficientNet[58]。除了这些架构上的进步,在改进单个卷积层方面也有很多工作,比如深度卷积[70]和可变形卷积[18,84]。虽然CNN及其变体仍然是计算机视觉应用的主要骨干架构,但我们强调了类似transformer的架构在视觉和语言之间统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了很好的表现,我们希望它将有助于建模的转变。
Self-attention based backbone architectures 同样受到自注意层和Transformer架构在NLP领域成功的启发,一些作品使用自注意层来取代流行的ResNet中的部分或全部空间卷积层[33,50,80]。在这些工作中,自关注是在每个像素的局部窗口内计算的,以加快优化[33],并且它们比对应的ResNet架构实现了略好的精度/FLOPs权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络[33]。我们建议在连续层之间移动窗口,而不是使用滑动窗口,这允许在一般硬件中更有效地实现。
Self-attention/Transformers to complement CNNs 另一项工作是使用自注意力层或 Transformer 来增强标准 CNN 架构。自注意力层可以通过提供编码远距离依赖或异构交互的能力来补充主干 [67, 7, 3, 71, 23, 74, 55] 或头部网络 [32, 27]。最近,Transformer 中的编码器-解码器设计已应用于对象检测和实例分割任务 [8, 13, 85, 56]。我们的工作探索了 Transformer 对基本视觉特征提取的适应性,并对这些工作是互补的。
Transformer based vision backbones 与我们的工作最相关的是Vision Transformer (ViT)[20]及其后续研究[63,72,15,28,66]。ViT的开创性工作是直接将Transformer架构应用于非重叠的中等大小图像块上进行图像分类。与卷积网络相比,它在图像分类方面实现了令人印象深刻的速度和精度权衡。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT[63]引入了几种训练策略,使ViT在使用较小的ImageNet-1K数据集时也能有效。ViT在图像分类方面的结果令人鼓舞,但由于其低分辨率特征映射和复杂度随图像大小的二次增长,其结构不适合作为密集视觉任务或高分辨率输入图像的通用骨干网络。有一些工作将ViT模型应用于直接上采样或反卷积的密集视觉任务,如对象检测和语义分割,但性能相对较低[2,81]。与我们的工作同时进行的是修改ViT架构[72,15,28],以更好地进行图像分类。根据经验,我们发现我们的Swin Transformer架构在这些图像分类方法中实现了最佳的速度精度权衡,即使我们的工作侧重于通用性能而不是专门用于分类。另一项同时进行的工作[66]探索了在变形金刚上构建多分辨率特征图的类似思路。它的复杂性仍然是图像大小的二次元,而我们的复杂性是线性的,也在局部运行,这已被证明有利于建模视觉信号的高相关性[36,25,41]。我们的方法既高效又有效,在COCO目标检测和ADE20K语义分割上都达到了最先进的精度。
3. Method
3.1. Overall Architecture
图3给出了Swin Transformer体系结构的概述,其中演示了小型版本(SwinT)。它首先通过像ViT一样的补丁分割模块将输入的RGB图像分割成不重叠的补丁。每个补丁被视为一个“标记”,其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用4 × 4的patch大小,因此每个patch的特征维数为4 × 4 × 3 = 48。在此原始值特征上应用线性嵌入层,将其投影到任意维度(记为C)。
对这些补丁令牌应用了几个具有修改自注意力计算(Swin Transformer 块)的 Transformer 块。Transformer 块维护令牌的数量 (H/4 × W/4 ),以及线性嵌入称为“阶段 1”。
为了生成分层表示,随着网络的深入,补丁合并层减少了令牌的数量。第一个补丁合并层连接每组 2 × 2 个相邻补丁的特征,并在 4C 维连接特征上应用线性层。这将令牌的数量减少了 2 × 2 = 4 的倍数(分辨率的 2 倍下采样),输出维度设置为 2C。之后应用 Swin Transformer 块进行特征变换,分辨率保持在 H/8 × W/8。补丁合并和特征变换的第一个块表示为“阶段 2”。该过程重复两次,分别为“阶段 3”和“阶段 4”,输出分辨率为 H/16 × W/16 和 H/32 × W/32。这些阶段共同产生分层表示,具有与典型卷积网络相同的特征图分辨率,例如 VGG [52] 和 ResNet [30]。因此,所提出的架构可以方便地替代现有方法中的骨干网络来完成各种视觉任务。
Swin Transformer block Swin Transformer 是通过将 Transformer 块中的标准多头自注意力 (MSA) 模块替换为基于移位窗口(在第 3.2 节中描述)的模块来构建的,其他层保持不变。如图 3(b) 所示,Swin Transformer 块由一个基于移位窗口的 MSA 模块组成,然后是一个中间具有 GELU 非线性的 2 层 MLP。在每个 MSA 模块和每个 MLP 之前应用 LayerNorm (LN) 层,并在每个模块之后应用残差连接。
3.2. Shifted Window based Self-Attention
标准的 Transformer 架构 [64] 及其对图像分类 [20] 的适应都进行了全局自注意力,其中计算令牌与所有其他令牌之间的关系。全局计算导致令牌数量的二次复杂度,这使得它不适合许多需要大量令牌进行密集预测或表示高分辨率图像的视觉问题。
Self-attention in non-overlapped windows 为了有效地建模,我们建议在局部窗口内计算自注意力。窗口被安排以不重叠的方式均匀地划分图像。假设每个窗口包含M × M个补丁,基于h × w补丁图像的全局MSA模块和窗口的计算复杂度为
其中前者是补丁数hw的二次方,后者在M固定时是线性的(默认设置为7)。全局自注意力计算对于大型 hw 通常是负担不起的,而基于窗口的自注意力是可扩展的。
Shifted window partitioning in successive blocks 基于窗口的自我注意模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口的有效计算的同时引入跨窗口连接,我们提出了一种移位窗口分区方法,该方法在连续 Swin Transformer 块中的两种分区配置之间交替。
如图 2 所示,第一个模块使用从左上角像素开始的常规窗口分区策略,8 × 8 特征图被均匀地划分为大小为 4 × 4 的 2 × 2 窗口(M = 4)。然后,下一个模块采用从前一层的窗口配置,通过将窗口从规则分区的窗口替换为 (M/2 , M/2) 像素。使用移位窗口分区方法,连续的 Swin Transformer 块计算为
其中 ^zl 和 zl 分别表示块 l 的 (S)WMSA 模块和 MLP 模块的输出特征; W-MSA 和 SW-MSA 分别表示使用常规和移位窗口分区配置的基于窗口的多头自注意力。
移位窗口分区方法引入了前一层的相邻非重叠窗口之间的连接,发现在图像分类、目标检测和语义分割方面是有效的,如表4所示。
图 4. 移位窗口分区中自注意力的有效批量计算方法的图示。
Efficient batch computation for shifted configuration 移位窗口分区的一个问题是,它将导致更多的窗口,从 h/M× w /M到移位配置中 ( h/M + 1) ×(dw/M e+1),其中一些窗口将小于 M × M。一个简单的解决方案是将较小的窗口填充到 M × M 的大小,并在计算注意力时屏蔽填充值。当常规分区中的窗口数量很少时,例如 2 × 2,使用这种朴素解决方案的计算增加相当大(2 × 2 → 3 × 3,大 2.25 倍)。在这里,我们提出了一种更有效的批处理计算方法,通过循环向左上角方向移动,如图4所示。在此移位之后,批处理窗口可以由特征图中不相邻的几个子窗口组成,因此采用屏蔽机制将自注意计算限制在每个子窗口内。通过循环移位,批处理窗口的数量与常规窗口分区的数量相同,因此也是有效的。这种方法的低延迟如表 5 所示。
Relative position bias 在计算自注意力时,我们遵循 [49, 1, 32, 33],通过计算相似度中的每个头包含一个相对位置偏差 B ∈ R M^2 ×M^2:
其中 Q、K、V ∈ R M^2 ×d 是query, key and value matrices; d 是query/key维度,M^2 是窗口中的补丁数。由于沿每个轴的相对位置位于[−M + 1, M−1]的范围内,我们参数化了一个较小尺寸的偏置矩阵ˆB ∈ R (2M−1)×(2M−1),B中的值取自ˆB。
我们观察到在没有这个偏置项或使用绝对位置嵌入的对应物的显着改进,如表 4 所示。在 [20] 中进一步向输入添加绝对位置嵌入会略微降低性能,因此在我们的实现中并未采用它。预训练的学习相对位置偏差也可用于初始化模型,通过双三次插值使用不同的窗口大小进行微调 [20, 63]。
预训练的学习相对位置偏差也可用于初始化模型,通过双三次插值使用不同的窗口大小进行微调 [20, 63]。
3.3. Architecture Variants
我们构建了我们的基础模型,称为 Swin-B,具有类似于 ViT-B/DeiT-B 的模型大小和计算复杂度。我们还引入了 Swin-T、Swin-S 和 Swin-L,分别是模型大小和计算复杂度的 0.25 倍、0.5 倍和 2 倍版本。请注意,Swin-T 和 Swin-S 的复杂度分别与 ResNet-50 (DeiT-S) 和 ResNet-101 的复杂度相似。默认情况下,窗口大小设置为 M = 7。对于所有实验,每个头的查询维度为 d = 32,每个 MLP 的扩展层为 α = 4。这些模型变体的架构超参数是:
其中 C 是第一阶段隐藏层的通道数。ImageNet图像分类模型变体的模型大小、理论计算复杂度(FLOPs)和吞吐量如表1所示。
4. Experiments
Results 表 3 列出了不同方法/主干对的 mIoU、模型大小 (#param)、FLOPs 和 FPS。从结果中可以看出,Swin-S 比具有相似计算成本的 DeiT-S 高 +5.3 mIoU(49.3 vs. 44.0)。它还比 ResNet-101 高 +4.4 mIoU,比 ResNeSt-101 高 +2.4 mIoU [78]。我们的带有 ImageNet-22K 预训练的 Swin-L 模型在 val 集上达到了 53.5 mIoU,比之前的最佳模型高出 +3.2 mIoU(SETR [81] 为 50.3 mIoU,模型尺寸更大)。
4.4. Ablation Study
5. Conclusion
本文介绍了 Swin Transformer,这是一种新的视觉转换器,它产生分层特征表示,并且在输入图像大小方面具有线性计算复杂度。Swin Transformer 在 COCO 对象检测和 ADE20K 语义分割上实现了最先进的性能,大大超过了以前的最佳方法。我们希望 Swin Transformer 在各种视觉问题上的强大性能将鼓励视觉和语言信号的统一建模。
作为 Swin Transformer 的一个关键元素,基于移位窗口的自我注意在视觉问题上被证明是有效的和高效,我们也期待研究它在自然语言处理中的应用。