swin transformer 是微软亚研院胡瀚老师与2021年提出,发表在ICCV上并获得best paper 和马尔奖。是基于transformer的backbone网络,屠榜各大视觉任务。
论文链接:https://arxiv.org/abs/2103.14030
代码链接:https://github.com/microsoft/Swin-Transformer
本文介绍了一种称为 Swin Transformer 的新视觉 Transformer,它可以作为计算机视觉的通用backbone。将 Transformer 从语言适应到视觉方面的挑战来自两个领域之间的差异,例如视觉实体的规模差异很大,以及与文本中的单词相比,图像中像素的高分辨率。为了解决这些差异,我们提出了一种 hierarchical Transformer,其表示是用 Shifted windows计算的。移位窗口方案通过将self-attention计算限制在不重叠的局部窗口(local windows)同时还允许跨窗口(cross-window)连接来提高效率。这种分层架构具有在各种尺度上建模的灵活性,并且相对于图像大小具有线性计算复杂性。 Swin Transformer 的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K 上的 87.3 top-1 accuracy)和密集预测任务,例如目标检测(COCO test dev 上的 58.7 box AP 和 51.1 mask AP)和语义分割(ADE20K val 上为 53.5 mIoU)。其性能在 COCO 上以 +2.7 box AP 和 +2.6 mask AP 以及在 ADE20K 上 +3.2 mIoU 大幅度超越了之前的最新技术,展示了基于 Transformer 的模型作为视觉backbone的潜力。shifted window方法也证明对全 MLP 架构有益。代码和模型可在 https://github.com/microsoft/Swin-Transformer 上公开获得。
计算机视觉建模长期以来一直由卷积神经网络 (CNN) 主导。 从 AlexNet [39] 及其在 ImageNet 图像分类挑战中的革命性表现开始,CNN 架构通过更大的规模 [30, 76]、更广泛的连接 [34] 和更复杂的卷积形式 [70, 18, 84]。 随着 CNN 作为各种视觉任务的backbone网络,这些架构的进步导致了性能改进,从而广泛提升了整个领域。
另一方面,自然语言处理 (NLP) 中网络架构的演变采取了不同的路径,如今流行的架构是 Transformer [64]。 Transformer 专为序列建模和转导任务而设计,以其对数据中的长期依赖关系建模的关注而著称。 它在语言领域的巨大成功促使研究人员研究其对计算机视觉的适应性,最近它在某些任务上展示了有希望的结果,特别是图像分类 [20] 和联合视觉语言建模 [47]。
在本文中,我们寻求扩展 Transformer 的适用性,使其可以作为计算机视觉的通用backbone,就像 NLP 和 CNN 在视觉中所做的那样。我们观察到,将其在语言领域的高性能转移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。这些差异之一涉及scale。与作为语言转换器中处理基本元素的单词tokens不同,视觉元素在scale上可能会有很大差异,这个问题在目标检测等任务中受到关注 [42, 53, 54]。在现有的基于 Transformer 的模型中 [64, 20],tokens都是固定scale的,这种特性不适合这些视觉应用。另一个区别是与文本段落中的单词相比,图像中像素的分辨率要高得多。存在许多视觉任务,例如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的 Transformer 来说是难以处理的,因为其self-attention的计算复杂度与图像大小成二次方。为了克服这些问题,我们提出了一种通用的 Transformer backbone,称为 Swin Transformer,它构建分层特征图并且对图像大小具有线性计算复杂度。如图 1(a) 所示,Swin Transformer 通过从小尺寸的patches(灰色轮廓)开始并逐渐合并更深的 Transformer 层中的相邻patches来构建分层表示。通过这些分层特征图,Swin Transformer 模型可以方便地利用先进的技术进行密集预测,例如特征金字塔网络 (FPN) [42] 或 U-Net [51]。线性计算复杂度是通过在分割图像的非重叠窗口中局部计算self-attention来实现的(以红色标出)。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。这些优点使 Swin Transformer 适合作为各种视觉任务的通用backbone,与之前基于 Transformer 的架构 [20] 形成对比,后者产生单一分辨率的特征图并具有二次复杂性。
图 1. (a) 提出的 Swin Transformer 通过合并更深层的图像patches(以灰色显示)构建分层特征图,并且由于仅在每个局部窗口内计算self-attention,因此对输入图像大小具有线性计算复杂度(如图所示) 红色的)。 因此,它可以作为图像分类和密集识别任务的通用backbone。 (b) 相比之下,以前的视觉transform [20] 产生单个低分辨率的特征图,并且由于全局self-attention的计算而对输入图像大小具有二次计算复杂度。
Swin Transformer 的一个关键设计元素是它在连续自注意力层之间的窗口分区的移动(shift),如图 2 所示。移动的窗口(shifted windows)桥接前一层的窗口,提供它们之间的连接,显着增强建模能力(见表 4)。 这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁(query patches)共享相同的key set,这有助于硬件中的内存访问。 相比之下,早期的基于滑动窗口的自注意力方法 [33, 50] 由于不同query pixel的不同key set而在通用硬件上受到低延迟的影响。 我们的实验表明,所提出的shifted window方法的延迟比sliding window方法低得多,但建模能力相似(见表 5 和表 6)。 shifted window方法也证明对全 MLP 架构有益 [61]。
图 2. 在提出的 Swin Transformer 架构中计算自注意力的shifted window方法的说明。 在第 l 层(左),采用规则的窗口划分方案,在每个窗口内计算self-attention。 在下一层 l + 1(右),窗口分区被移动(shifted),产生新的窗口。 新窗口中的自注意力计算跨越了第 l 层中先前窗口的边界,提供了它们之间的连接。、
所提出的 Swin Transformer 在图像分类、目标检测和语义分割的识别任务上取得了强大的性能。 它在三个任务上以相似的延迟显着优于 ViT / DeiT [20, 63] 和 ResNe(X)t 模型 [30, 70]。 它在 COCO test dev集上的 58.7 box AP 和 51.1 mask AP 以 +2.7 box AP(没有外部数据的copy-past [26])和 +2.6 mask AP(DetectoRS [ 46])超过先前的SOTA结果。 在 ADE20K 语义分割上,它在 val 集上获得了 53.5 mIoU,比之前的最先进技术(SETR [81])提高了 +3.2 mIoU。 它还在 ImageNet-1K 图像分类上实现了 87.3% 的 top-1 准确率。
我们相信,跨计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,并且可以更深入地共享来自两个领域的建模知识。 我们希望 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 及其变体仍然是计算机视觉应用的主要backbone架构,但我们强调了类似 Transformer 的架构在视觉和语言之间统一建模方面的强大潜力。我们的工作在几个基本的视觉识别任务上取得了强劲的表现,我们希望它有助于建模转变。
基于self-attention的backbone架构:同样受到 NLP 领域self-attention层和 Transformer 架构成功的启发,一些作品采用自self-attention层来替换流行的 ResNet [33,50,80] 中的部分或全部空间卷积层。 在这些工作中,self-attention是在每个像素的局部窗口内计算的,以加快优化 [33],并且它们实现了比对应的 ResNet 架构稍好一些的accuracy / FLOPs 权衡。 然而,它们昂贵的内存访问导致它们的实际延迟(latency)明显大于卷积网络 [33]。 我们建议不使用滑动窗口(sliding windows),而是在连续层之间移动窗口(shift windows),这允许在通用硬件中更有效地实现。
self-attention / transformer 补充CNNs:另一项工作是使用self-attention层或 Transformer 来增强标准的 CNN 架构。 self-attention层可以通过提供编码远程依赖或异构交互的能力来补充backbone [67, 7, 3, 71, 23, 74, 55] 或头部网络 [32, 27]。 最近,Transformer 中的encoder-decoder设计已应用于目标检测和实例分割任务 [8, 13, 85, 56]。 我们的工作探索了 Transformers 对基本视觉特征提取的适应性,并且是对这些工作的补充。
基于transformer的视觉backbone:与我们的工作最相关的是 Vision Transformer (ViT) [20] 及其后续 [63, 72, 15, 28, 66]。 ViT 的开创性工作直接将 Transformer 架构应用于不重叠的中等大小图像patches上进行图像分类。与卷积网络相比,它在图像分类方面实现了令人印象深刻的速度-准确度权衡。虽然 ViT 需要大规模训练数据集(即 JFT-300M)才能表现良好,但 DeiT [63] 引入了几种训练策略,允许 ViT 使用较小的 ImageNet-1K 数据集也有效。 ViT 在图像分类上的结果令人鼓舞,但其架构不适合用作密集视觉任务或输入图像分辨率高时的通用backbone网络,因为它的低分辨率特征图和复杂度与图像大小的二次方成正比。有一些作品通过直接上采样或反卷积将 ViT 模型应用于目标检测和语义分割的密集视觉任务,但性能相对较低 [2, 81]。与我们的工作同时进行的是一些修改 ViT 架构 [72, 15, 28] 以获得更好的图像分类。根据经验,我们发现我们的 Swin Transformer 架构可以在这些图像分类方法中实现最佳速度精度权衡,尽管我们的工作侧重于通用性能而不是专门针对分类。另一项并发工作 [66] 探索了在 Transformer 上构建多分辨率特征图的类似思路。它的复杂性仍然是图像大小的二次方,而我们的复杂性是线性的并且也在局部操作,这已被证明有利于对视觉信号中的高相关性进行建模 [36,25,41]。我们的方法既高效又有效,在 COCO 目标检测和 ADE20K 语义分割上都达到了最先进的准确性。
图 3 展示了 Swin Transformer 架构的概述,其中展示了tiny版本 (SwinT)。 它首先通过patch spliting模块(如 ViT)将输入的 RGB 图像拆分为不重叠的patches。 每个patch都被视为一个“token”,其特征被设置为原始像素 RGB 值的串联。 在我们的实现中,我们使用 4 × 4 的patch大小,因此每个patch的特征维度是 4 × 4 × 3 = 48。linear embeddings层应用于这个原始值特征以将其投影到任意维度( 记为 C)。
图 3. (a) Swin Transformer (Swin-T) 的架构; (b) 两个连续的 Swin Transformer Blocks(用方程(3)表示的符号)。 W-MSA 和 SW-MSA 是分别具有规则和shifted windowing配置的多multi-head self attention模块。
在这些patch tokens上应用了几个具有修改self-attention计算的 Transformer blocks(Swin Transformer blocks)。 Transformer blocks保持tokens的数量(H/4 × W/4),与linear embedding一起被称为“stage 1”。
为了产生分层表示,随着网络变得更深,通过patch合并层来减少tokens的数量。第一个patch合并层连接每组 2 × 2 相邻patches的特征,并在 4C 维连接特征上应用线性层。这将tokens数量减少了 2×2 = 4 的倍数(分辨率的 2× 下采样),并且输出维度设置为 2C。之后应用 Swin Transformer 块进行特征转换,分辨率保持在 H/8 × W/8 。patch合并和特征转换的第一个块表示为“Stage 2”。该过程重复两次,分别为“Stage 3”和“Stage 4”输出分辨率分别为 H/16 × W/16 和 H/32 × W/32 。这些stages共同产生一个分层表示,具有与典型卷积网络相同的特征图分辨率,例如 VGG [52] 和 ResNet [30]。因此,所提出的架构可以方便地替换现有方法中用于各种视觉任务的backbone网络。
Swin transform block:Swin Transformer 是通过将 Transformer block中的标准multi-head self-attention (MSA) 模块替换为基于shifted windows的模块(在第 3.2 节中描述)而构建的,其他层保持不变。 如图 3(b) 所示,Swin Transformer 模块由一个基于shifted window的 MSA 模块组成,后跟一个 2 层 MLP,其间具有 GELU 非线性。 在每个 MSA 模块和每个 MLP 之前应用一个 LayerNorm (LN) 层,在每个模块之后应用一个残差连接。
标准的 Transformer 架构 [64] 及其对图像分类的适应 [20] 都进行全局self-attention,其中计算了token与所有其他tokens之间的关系。 全局计算会导致与tokens数量相关的二次复杂性,使其不适用于许多需要大量tokens进行密集预测或表示高分辨率图像的视觉问题。
非重叠窗口中的self-attention:为了有效建模,我们建议在局部窗口内计算self-attention。 窗口被布置为以不重叠的方式均匀地划分图像。 假设每个窗口包含 M × M 个patches,全局 MSA 模块和基于 h × w patches图像的窗口的计算复杂度为 :
其中前者是patch数目 hw 的二次方,当 M 固定时(默认设置为 7)后者是线性的。 全局self-attention计算对于大型硬件来说通常是负担不起的,而基于窗口的self-attention是可扩展的。
连续块中的shifted window分区:基于窗口的self-attention模块缺乏跨窗口(across windows)的连接,这限制了其建模能力。 为了在保持非重叠窗口的高效计算的同时引入跨窗口连接,我们提出了一种移位窗口(shifted window)分区方法,该方法在连续的 Swin Transformer 块中的两个分区配置之间交替。
如图 2 所示,第一个模块使用从左上角像素开始的常规窗口分区策略,将 8 × 8 特征图均匀地划分为大小为 4 × 4 (M = 4) 的 2 × 2 窗口。 然后,下一个模块采用从前一层的窗口配置偏移的窗口配置,通过将窗口从规则分区的窗口中移动 () 个像素。
使用移位窗口分区(shifted window partioning)方法,连续的 Swin Transformer 块计算为:
其中 和 分别表示block l 的 (S)WMSA 模块和 MLP 模块的输出特征; W-MSA 和 SW-MSA 分别表示使用基于multi-head self-attention的常规窗口和移位(shifted)窗口分区配置。
移位窗口分区方法在前一层中引入了相邻非重叠窗口之间的连接,并被发现在图像分类、目标检测和语义分割中是有效的,如表 4 所示。
我们对 ImageNet-1K 图像分类 [19]、COCO 目标检测 [43] 和 ADE20K 语义分割 [83] 进行了实验。 在下文中,我们首先将所提出的 Swin Transformer 架构与之前在三个任务上的最新技术进行比较。 然后,我们说明 Swin Transformer 的重要设计元素。
settings:对于图像分类,我们在 ImageNet-1K [19] 上对提出的 Swin Transformer 进行了基准测试,其中包含来自 1,000 个类别的 1.28M 训练图像和 50K 验证图像。 报告了单个crop的 top-1 准确度。 我们考虑两种训练设置:
常规ImageNet-1K训练: 此设置主要遵循 [63]。 我们使用一个 AdamW [37] 优化器使用余弦衰减学习率调度器和 20 个 epochs 的线性warmup进行 300 个 epochs。 batch size为 1024,初始学习率为 0.001,权重衰减为 0.05。 我们在训练中包含了 [63] 的大部分增强和正则化策略,除了重复增强 [31] 和 EMA [45],它们不会提高性能。 请注意,这与[63]相反,其中重复增强对于稳定 ViT 训练至关重要。
在ImageNet-22K 上进行预训练并在ImageNet-1K 上进行fine-tuning。 我们还在更大的 ImageNet-22K 数据集上进行了预训练,该数据集包含 1420 万张图像和 22K 类。 我们使用带有 5 个epoch线性warmup的线性衰减学习率调度器对 90 个epoch使用 AdamW 优化器。 batch size为 4096,初始学习率为 0.001,权重衰减为 0.01。 在 ImageNet-1K 微调中,我们以 1024 的batch size、10-5 的恒定学习率和 10-8 的权重衰减训练模型 30 个epoch。
常规ImageNet-1K 训练结果:表 1(a) 展示了使用常规 ImageNet-1K 训练与其他backbone的比较,包括基于 Transformer 和基于 ConvNet 的backbone。
与之前最先进的基于 Transformer 的架构(即 DeiT [63])相比,Swin Transformers 明显优于具有相似复杂性的对应 DeiT 架构:Swin-T (81.3%) 比 DeiT-S (79.8%) + 1.5% ) 使用 输入,Swin-B (83.3%/84.5%) 使用 输入,分别超过 DeiT-B (81.8% / 83.1%) +1.5% /1.4%。
与最先进的 ConvNets,即 RegNet [48] 和 EfficientNet [58] 相比,Swin Transformer 实现了稍微更好的速度-精度权衡。 请注意,虽然 RegNet [48] 和 EfficientNet [58] 是通过彻底的架构搜索获得的,但所提出的 Swin Transformer 是从标准 Transformer 改编而来的,并且具有进一步改进的强大潜力。
ImageNet-22k 预训练结果:我们还在 ImageNet-22K 上预训练了更大容量的 Swin-B 和 Swin-L。 在 ImageNet-1K 图像分类上微调的结果如表 1(b) 所示。 对于 Swin-B,ImageNet-22K 预训练比从头开始训练 ImageNet-1K 带来了 1.8%∼1.9% 的收益。 与之前 ImageNet-22K 预训练的最佳结果相比,我们的模型实现了明显更好的速度-准确度权衡:Swin-B 获得了 86.4% 的 top-1 准确度,比具有相似推理吞吐量的 ViT 高 2.4% (84.7 对 85.9 张图像/秒)和略低的 FLOP(47.0G 对 55.4G)。 较大的 Swin-L 模型实现了 87.3% 的 top-1 准确率,比 Swin-B 模型高 0.9%。
表 1. ImageNet-1K分类不同backbone的比较。 吞吐量是使用GitHub存储库[68]和V100 GPU来测量的,following[63]。
settings: 目标检测和实例分割实验在 COCO 2017 上进行,其中包含 118K 训练、5K 验证和 20K test-dev图像。 使用验证集进行消融研究,并在 test-dev 上报告系统级比较。 对于消融研究,我们考虑了四种典型的目标检测框架:Cascade Mask R-CNN [29, 6]、ATSS [79]、RepPoints v2 [12] 和 mmdetection [10] 中的Sparse RCNN [56]。 为了在这四个框架中,我们使用相同的设置:多尺度训练 [8, 56](调整输入大小,使短边在 480 到 800 之间,而长边最多为 1333)、AdamW [44] 优化器(初始 学习率为 0.0001,权重衰减为 0.05,batch size为 16),以及 3x scheduler(36 个epochs)。 对于系统级比较,我们采用改进的 HTC [9](表示为 HTC++)和 instaboost [22]、更强的多尺度训练 [7]、6x scheduler(72 epochs)、soft-NMS [5] 和 ImageNet -22K 预训练模型作为初始化。
我们将 Swin Transformer 与标准 ConvNets(即 ResNe(X)t)和之前的 Transformer 网络(例如 DeiT进行比较。 比较是通过在其他设置不变的情况下仅更改backbone来进行的。 请注意,虽然 Swin Transformer 和 ResNe(X)t 由于其分层特征图可直接适用于上述所有框架,但 DeiT 仅生成单一分辨率的特征图,不能直接应用。 为了公平比较,我们按照 [81] 使用反卷积层为 DeiT 构建分层特征图。
和ResNe(X)t比较:表 2(a) 列出了 Swin-T 和 ResNet-50 在四个目标检测框架上的结果。 与 ResNet-50 相比,我们的 Swin-T 架构带来了一致的 +3.4∼4.2 box AP 增益,模型尺寸、FLOPs 和latency略大。
表 2(b) 比较了使用 Cascade Mask RCNN 在不同模型容量下的 Swin Transformer 和 ResNe(X)t。 Swin Transformer 实现了 51.9 box AP 和 45.0 mask AP 的高检测精度,与具有相似模型大小、FLOPs 和latency的 ResNeXt101-64x4d 相比,显着提高了 +3.6 box AP 和 +3.3 mask AP。 在使用改进的 HTC 框架获得 52.3 box AP 和 46.0 mask AP 的更高基线上,Swin Transformer 的收益也很高,为 +4.1 box AP 和 +3.1 mask AP(见表 2(c))。 关于推理速度,虽然 ResNe(X)t 是由高度优化的 Cudnn 函数构建的,但我们的架构是通过内置的 PyTorch 函数实现的,这些函数并非都经过优化。 彻底的内核优化超出了本文的范围。
和DeiT比较:DeiT-S 使用 Cascade Mask R-CNN 框架的性能如表 2(b) 所示。 Swin-T 的结果比 DeiT-S 高 +2.5 box AP 和 +2.3 mask AP,具有相似的模型大小(86M vs. 80M)和显着更高的推理速度(15.3 FPS vs. 10.4 FPS)。 DeiT 较低的推理速度主要是由于其对输入图像大小的二次复杂度。
和先前SOTA相比:表 2(c) 将我们的最佳结果与之前最先进模型的结果进行了比较。 我们的最佳模型在 COCO test-dev 上实现了 58.7 box AP 和 51.1 mask AP,超过了之前的最佳结果 +2.7 box AP(没有外部数据的copy-past [26])和 +2.6 mask AP(DetectoRS [46])。
表 2. COCO 目标检测和实例分割的结果。 y 表示使用额外的decovolution层来生成分层特征图。 * 表示多尺度测试。
settings:ADE20K [83] 是一个广泛使用的语义分割数据集,涵盖了广泛的 150 个语义类别。 它总共有 25K 张图像,其中 20K 用于训练,2K 用于验证,另外 3K 用于测试。 我们利用 mmseg [16] 中的 UperNet [69] 作为其高效的基础框架。 附录中提供了更多详细信息。
结果:表 3 列出了不同方法/backbone pairs的 mIoU、模型大小(#param)、FLOP 和 FPS。 从这些结果可以看出,在计算成本相似的情况下,Swin-S 比 DeiT-S 高 +5.3 mIoU(49.3 vs. 44.0)。 它也比 ResNet-101 高 +4.4 mIoU,比 ResNeSt-101 [78] 高 +2.4 mIoU。 我们使用 ImageNet-22K 预训练的 Swin-L 模型在 val 集上实现了 53.5 mIoU,超过了之前的最佳模型 +3.2 mIoU(SETR [81] 的 50.3 mIoU,具有更大的模型尺寸)。
表3: ADE20K val 和测试集上的语义分割结果。 y 表示额外的decovolution层用于生成分层特征图。 z 表示模型是在 ImageNet-22K 上预训练的。
在本节中,我们使用 ImageNet-1K 图像分类、COCO 目标检测上的 Cascade Mask R-CNN 和 ADE20K 语义分割上的 UperNet 消除了所提出的 Swin Transformer 中的重要设计元素。
shifted windows: 表 4 报告了对三个任务的shifted window方法的消融。在 ImageNet-1K 上,具有shifted window分区的 Swin-T 在每个阶段的性能优于基于单个窗口分区的对应物在ImageNet-1K上 +1.1% 的top-1 accuracy,在 COCO 上+ 2.8 box AP/+2.2 mask AP,以及 ADE20K 上的 +2.8 mIoU。 结果表明使用shifted window在前面层中的窗口之间建立连接的有效性。 shifted window的延迟开销也很小,如表 5 所示。
表4:使用 Swin-T 架构在三个基准上对shifted window方法和不同position embedding方法的消融研究。 w/o shift:所有self-attention模块都采用规则的窗口分区,without shifting; abs. pos.:ViT的绝对position embedding项; rel. pos.:带有附加相对位置偏差项的默认设置(参见等式(4)); app.: 方程中的第一个缩放点积项。 (4).
相对位置偏置:表 4 显示了不同位置embedding方法的比较。 +1.3/+1.5 box AP 和 +1.1/+1.3 mask AP,在 ADE20K 上产生 +2.3/+2.9 mIoU 与那些没有位置编码和绝对位置embedding的相比,具有相对位置偏置的 Swin-T 在 ImageNet-1K 上产生 +1.2%/+0.8% top-1 accuracy,在 COCO 上产生 ,分别表明相对位置偏置的有效性。 另请注意,虽然包含绝对位置embedding提高了图像分类精度(+0.4%),但它会损害目标检测和语义分割(COCO 上的 -0.2 box/mask AP ,ADE20K 上的为 -0.6 mIoU)。
虽然最近的 ViT/DeiT 模型放弃了图像分类中的平移不变性(translation invariance),尽管它长期以来一直被证明对视觉建模至关重要,但我们发现鼓励某些平移不变性的归纳偏差(inductive bias)对于通用视觉建模仍然是可取的,特别是对于目标检测和语义分割的密集预测任务。
不同的self-attention方法:表 5 比较了不同self-attention计算方法和实现的实际速度。我们的循环实现比 naive padding 的硬件效率更高,尤其是对于更深的stages。 总体而言,它分别为 Swin-T、Swin-S 和 Swin-B 带来了 13%、18% 和 18% 的加速。
表 5. V100 GPU 上不同self attention计算方法和实现的实际速度。
基于所提出的移位窗口(shifted window)方法构建的self-attention模块比在 naive/kernel 实现中的滑动窗口(sliding windows)效率的四个网络阶段分别高 40.8×/2.5×、20.2×/2.5×、9.3×/2.1× 和 7.6×/1.8× 。 总体而言,构建在shifted window上的 Swin Transformer 架构分别比构建在sliding windows上的 Swin-T、Swin-S 和 Swin-B 变体快 4.1/1.5、4.0/1.5、3.6/1.5 倍。 表 6 比较了它们在三个任务上的准确性,表明它们在视觉建模方面的准确性相似。
与作为最快的 Transformer 架构之一的 Performer [14] 相比(参见 [60]),所提出的基于移位窗口的自注意力计算和整体 Swin Transformer 架构稍快(参见表 5),同时与使用 Swin-T 在 ImageNet-1K 上的 Performer 相比,实现了 +2.3% 的top-1 accuracy(见表 6)。
表6:在三个benchmarks上使用不同方法进行self attention计算的 Swin Transformer 的准确性。