Swin Transformer: Hierarchical Vision Transformer using Shifted Windows解读

2 minute read

Published:

论文、代码和ppt地址:swin transformer

ABSTRACT

本文提出了一种新的视觉Transformer,名为Swin Transformer,它能够作为计算机视觉的通用骨干网络。将Transformer从语言领域适配到视觉领域面临诸多挑战,这些挑战源于两个领域之间的差异,例如与文本中的单词相比,视觉实体的尺度变化很大,且图像中的像素分辨率很高。为了解决这些差异,我们提出了一种分层Transformer,其表征是通过移位窗口来计算的。移位窗口方案通过将自注意力计算限制在非重叠的局部窗口内,提高了效率,同时也允许跨窗口连接。这种分层架构能够灵活地对不同尺度进行建模,并且相对于图像尺寸具有线性计算复杂度。Swin Transformer的这些特性使其能与众多视觉任务相兼容,包括图像分类(在ImageNet-1K上达到87.3的最高准确率)以及诸如目标检测(在COCO测试开发集上达到58.7的边界框平均精度和51.1的掩码平均精度)和语义分割(在ADE20K验证集上达到53.5的平均交并比)等密集预测任务。它的性能在COCO数据集上比之前的最先进水平大幅领先,边界框平均精度高出2.7,掩码平均精度高出2.6;在ADE20K数据集上平均交并比高出3.2,这彰显了基于Transformer的模型作为视觉骨干网络的潜力。分层设计和移位窗口方法对全多层感知机架构也证明是有益的。相关代码和模型可在https://github.com/microsoft/Swin-Transformer公开获取。

1 介绍

长期以来,计算机视觉领域的建模一直由卷积神经网络(CNN)主导。从AlexNet [39]及其在ImageNet图像分类挑战赛上取得的革命性成果开始,CNN架构通过扩大规模[30, 76]、增加连接数量[34]以及采用更复杂的卷积形式[70, 18, 84]而不断发展,变得愈发强大。由于CNN充当了各类视觉任务的骨干网络,这些架构上的进步使得性能得以提升,从而广泛推动了整个领域的发展。

另一方面,自然语言处理(NLP)领域网络架构的演变走了一条不同的道路,如今流行的架构是Transformer [64]。Transformer专为序列建模和转换任务而设计,因其利用注意力机制对数据中的长距离依赖关系进行建模而备受瞩目。它在语言领域取得的巨大成功促使研究人员探究将其应用于计算机视觉领域,近期它在某些任务上,特别是图像分类[20]以及视觉 - 语言联合建模[47]方面已展现出了颇具前景的成果。

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

Swin Transformer的一个关键设计元素是在连续的自注意力层之间对窗口划分进行移位,如图2所示。移位窗口连接了前一层的窗口,在它们之间建立起联系,这极大地增强了建模能力(见表4)。就实际延迟而言,这一策略也是高效的:窗口内的所有查询图像块共享同一组键(The query and key are projection vectors in a self-attention layer.),这有助于硬件中的内存访问。相比之下,早期基于滑动窗口的自注意力方法[33, 50]由于不同查询像素有不同的键集,在通用硬件上存在延迟较高的问题。我们的实验表明,所提出的移位窗口方法比滑动窗口方法延迟低得多,但在建模能力上相近(见表5和表6)。移位窗口方法对全多层感知机架构[61]也证明是有益的。

所提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务上取得了出色的性能。在这三项任务上,它在相似的延迟情况下,显著优于ViT / DeiT [20, 63]和ResNe(X)t模型[30, 70]。它在COCO测试开发集上的58.7边界框平均精度和51.1掩码平均精度,相较于之前的最佳结果(无外部数据的Copy-paste [26]和DetectoRS [46]),分别高出 +2.7边界框平均精度和 +2.6掩码平均精度。在ADE20K语义分割任务中,它在验证集上获得了53.5平均交并比,相较于之前的最佳水平(SETR [81])提高了 +3.2平均交并比。它还在ImageNet-1K图像分类任务中达到了87.3%的最高准确率。

我们认为,计算机视觉和自然语言处理领域的统一架构将使这两个领域都受益,因为它有助于对视觉和文本信号进行联合建模,并且两个领域的建模知识能够更深入地共享。我们希望Swin Transformer在各种视觉问题上的出色表现能够让这一理念在学界更加深入人心,并鼓励对视觉和语言信号进行统一建模。

图1. (a)所提出的Swin Transformer通过在更深层合并图像块(以灰色显示)来构建分层特征图,并且由于自注意力仅在每个局部窗口(以红色显示)内进行计算,其相对于输入图像尺寸具有线性计算复杂度。因此,它能够作为图像分类和密集识别任务的通用骨干网络。 (b)相比之下,先前的视觉Transformer [20]生成的是单一低分辨率的特征图,而且由于自注意力是在全局范围内进行计算,其相对于输入图像尺寸具有二次计算复杂度。

图2. 在所提出的Swin Transformer架构中用于计算自注意力的移位窗口方法示意图。在第l层(左侧),采用常规的窗口划分方案,并且在每个窗口内计算自注意力。在下一层(即l + 1层,右侧),窗口划分发生移位,从而产生新的窗口。新窗口中的自注意力计算跨越了第l层中先前窗口的边界,在它们之间建立起了联系。

表4. 在三个基准测试集上,针对移位窗口方法以及不同位置嵌入方法,采用Swin-T架构所做的消融研究。无移位:所有自注意力模块均采用常规窗口划分方式,不进行移位;绝对位置:视觉Transformer(ViT)的绝对位置嵌入项;相对位置:带有额外相对位置偏差项(见公式(4))的默认设置;应用:公式(4)中的第一个缩放点积项。

2 相关工作

卷积神经网络(CNN)及其变体在整个计算机视觉领域充当着标准网络模型。尽管卷积神经网络已经存在了几十年[40],但直到AlexNet [39]问世,卷积神经网络才开始蓬勃发展并成为主流。从那时起,人们提出了更深层且更有效的卷积神经架构,以进一步推动计算机视觉领域的深度学习浪潮,例如VGG [52]、GoogleNet [57]、ResNet [30]、DenseNet [34]、HRNet [65]以及EfficientNet [58]。除了这些架构方面的进步,在改进单个卷积层方面也有大量工作,比如深度可分离卷积[70]和可变形卷积[18, 84]。尽管卷积神经网络及其变体仍然是计算机视觉应用的主要骨干架构,但我们强调类Transformer架构在视觉与语言统一建模方面的巨大潜力。我们的工作在几个基本的视觉识别任务上取得了出色的表现,我们希望这将有助于推动建模方式的转变。

基于自注意力的骨干架构:同样受到自然语言处理领域自注意力层和Transformer架构成功的启发,一些研究工作采用自注意力层来替换广受欢迎的ResNet中的部分或全部空间卷积层[33, 50, 80]。在这些工作中,自注意力是在每个像素的局部窗口内进行计算以加快优化过程[33],并且它们在准确率/浮点运算次数的权衡上比对应的ResNet架构略好。然而,它们昂贵的内存访问导致其实际延迟明显大于卷积网络[33]。我们提出在连续的层之间移动窗口,而非使用滑动窗口,这使得在通用硬件上能够实现更高效的实现方式。

用自注意力/Transformer补充CNN:另一类工作是用自注意力层或Transformer来扩充标准的CNN架构。自注意力层可以通过提供对远距离依赖关系或异构相互作用进行编码的能力,来对骨干网络[67, 7, 3, 71, 23, 74, 55]或头部网络[32, 27]进行补充。最近,Transformer中的编码器 - 解码器设计已被应用于目标检测和实例分割任务[8, 13, 85, 56]。我们的工作探索了Transformer在基本视觉特征提取方面的适配,并且与这些工作是互补的。

基于Transformer的视觉骨干网络:与我们的工作最相关的是视觉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]探索了类似的思路,即在Transformer上构建多分辨率特征图。其复杂度仍然与图像尺寸呈二次方关系,而我们的复杂度是线性的,并且也是在局部进行操作,这已被证明在对视觉信号中的高相关性进行建模方面是有益的[36, 25, 41]。我们的方法既高效又有效,在COCO目标检测和ADE20K语义分割任务上都达到了最先进的准确率。

3. 方法

3.1 整体架构

图3展示了Swin Transformer架构的概览,图示为其微型版本(Swin-T)。它首先通过一个图像块分割模块(与视觉Transformer(ViT)类似)将输入的RGB图像分割成非重叠的图像块。每个图像块都被视作一个“词元”,其特征被设定为原始像素RGB值的拼接形式。在我们的实现中,使用的图像块大小为4×4,因此每个图像块的特征维度为4×4×3 = 48。在此原始值特征上应用一个线性嵌入层,将其投影到任意维度(记为C)。

图3. (a)Swin Transformer(Swin-T)的架构;(b)两个连续的Swin Transformer模块(符号表示见公式(3))。W-MSA和SW-MSA分别是采用常规窗口划分配置和移位窗口划分配置的多头自注意力模块。

几个带有改进的自注意力计算方式的Transformer模块(Swin 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模块:Swin Transformer是通过将Transformer模块中的标准多头自注意力(MSA)模块替换为基于移位窗口的模块(在3.2节中描述)构建而成的,其他层保持不变。如图3(b)所示,一个Swin Transformer模块由一个基于移位窗口的多头自注意力模块,以及其后带有GELU非线性激活函数的两层多层感知机(MLP)组成。在每个多头自注意力模块和每个多层感知机之前都会应用层归一化(LayerNorm,LN)层,并且在每个模块之后都会应用残差连接。

3.2. 基于移位窗口的自注意力

标准的Transformer架构[64]及其针对图像分类的适配版本[20]都会进行全局自注意力计算,也就是计算一个词元与所有其他词元之间的关系。这种全局计算相对于词元数量会导致二次方的复杂度,这使得它不适用于许多需要大量词元来进行密集预测或表示高分辨率图像的视觉问题。

非重叠窗口中的自注意力:为了高效建模,我们提议在局部窗口内计算自注意力。这些窗口以非重叠的方式均匀划分图像。假设每个窗口包含M×M个图像块,对于一个有h×w个图像块的图像,全局多头自注意力(MSA)模块和基于窗口的多头自注意力(W-MSA)模块的计算复杂度分别如下:

其中前者与图像块数量hw呈二次方关系,而当M固定时(默认设为7),后者呈线性关系。对于较大的hw值,全局自注意力计算通常是难以承受的,而基于窗口的自注意力则具有可扩展性。

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

如图2所示,第一个模块使用常规的窗口划分策略,从左上角像素开始,将8×8的特征图均匀划分为2×2个大小为4×4(M = 4)的窗口。然后,下一个模块采用一种相对于前一层窗口有偏移的窗口配置,将窗口从常规划分的窗口位置偏移(⌊M/2⌋,⌊M/2⌋)个像素。 采用移位窗口划分方法,连续的Swin Transformer模块按如下方式计算:

其中ˆzl和zl分别表示第l个模块中(基于窗口的多头自注意力(W-MSA)模块和基于移位窗口的多头自注意力(SW-MSA)模块)以及多层感知机(MLP)模块的输出特征;W-MSA和SW-MSA分别表示采用常规窗口划分配置和移位窗口划分配置的基于窗口的多头自注意力。 移位窗口划分方法在前一层相邻的非重叠窗口之间引入了连接,并且如表4所示,它在图像分类、目标检测以及语义分割任务中被证明是有效的。

移位配置的高效批量计算

移位窗口划分存在一个问题,那就是它会导致窗口数量增多,在移位配置下,窗口数量会从⌈h/M⌉×⌈w/M⌉变为(⌈h/M⌉ + 1)×(⌈w/M⌉ + 1),而且部分窗口的尺寸会小于M×M。一种简单的解决办法是将较小的窗口填充至M×M大小,并在计算注意力时将填充的值屏蔽掉。当常规划分下的窗口数量较少时,例如2×2,采用这种简单方法会使计算量显著增加(从2×2变为3×3,计算量变为原来的2.25倍)。

在此,我们提出一种更高效的通过向左上角循环移位的批量计算方法,如图4所示。经过这种移位后,一个批量窗口可能由特征图中几个不相邻的子窗口组成,因此采用一种屏蔽机制来将自注意力计算限制在每个子窗口内。通过循环移位,批量窗口的数量与常规窗口划分时的数量保持一致,所以这种方法也是高效的。该方法的低延迟特性在表5中有所展示。

相对位置偏差

在计算自注意力时,我们参照[49, 1, 32, 33]的做法,在计算相似度时给每个头都加入一个相对位置偏差: :

其中Q、K、V∈R^{M²×d}分别为查询、键和值矩阵;d为查询/键的维度,M²为一个窗口内图像块的数量。由于沿每个轴的相对位置处于[−M + 1, M − 1]这个区间内,我们对一个尺寸更小的偏差矩阵进行参数化,B中的值取自ˆB。

我们发现,与不使用这个偏差项或者使用绝对位置嵌入的方法相比,这种做法有显著的改进,如表4所示。进一步像[20]那样在输入中添加绝对位置嵌入会使性能稍有下降,因此在我们的实现中未采用这种做法。在预训练中学习到的相对位置偏差也可通过双三次插值[20, 63]用于初始化一个不同窗口尺寸的模型以进行微调。

3.3. 架构变体

我们构建了基础模型,名为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。这些模型变体的架构超参数如下:

• Swin - T:C = 96,层数 = {2, 2, 6, 2} • Swin - S:C = 96,层数 = {2, 2, 18, 2} • Swin - B:C = 128,层数 = {2, 2, 18, 2} • Swin - L:C = 198,层数 = {2, 2, 18, 2}

其中C是第一阶段隐藏层的通道数。这些模型变体在ImageNet图像分类任务中的模型大小、理论计算复杂度(浮点运算次数,FLOPs)以及吞吐量在表1中列出。

4 实验

我们在ImageNet-1K图像分类[19]、COCO目标检测[43]以及ADE20K语义分割[83]任务上进行了实验。接下来,我们首先将所提出的Swin Transformer架构与之前在这三项任务上的最先进技术进行比较。然后,我们对Swin Transformer的重要设计元素进行消融实验。

4.1. ImageNet-1K图像分类

设置:对于图像分类,我们在ImageNet-1K数据集[19]上对所提出的Swin Transformer进行基准测试,该数据集包含来自1000个类别的128万张训练图像和5万张验证图像。报告的是单张裁剪图像的最高准确率(top-1准确率)。我们考虑两种训练设置:

• 常规ImageNet-1K训练。该设置大多遵循[63]。我们使用AdamW [37]优化器,配合余弦衰减学习率调度器进行300个轮次的训练,并采用20个轮次的线性热身(linear warm-up)。使用的批量大小为1024,初始学习率为0.001,权重衰减为0.05。在训练中,我们纳入了[63]中的大多数数据增强和正则化策略,但不包括重复增强[31]和指数移动平均(EMA)[45],因为它们并不能提升性能。需要注意的是,这与[63]不同,在[63]中重复增强对于稳定视觉Transformer(ViT)的训练至关重要。

• 在ImageNet-22K上进行预训练,然后在ImageNet-1K上进行微调。我们也在更大的ImageNet-22K数据集上进行预训练,该数据集包含1420万张图像和22000个类别。我们使用AdamW优化器,配合线性衰减学习率调度器以及5个轮次的线性热身进行90个轮次的训练。使用的批量大小为4096,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K微调阶段,我们使用批量大小为1024、恒定学习率为10⁻⁵以及权重衰减为10⁻⁸对模型进行30个轮次的训练。

常规ImageNet-1K训练的结果:表1(a)展示了与其他骨干网络(包括基于Transformer的和基于卷积神经网络(ConvNet)的骨干网络)在常规ImageNet-1K训练下的比较结果。

与之前最先进的基于Transformer的架构(即DeiT [63])相比,Swin Transformer在复杂度相近的情况下明显优于对应的DeiT架构:在输入图像尺寸为224²时,Swin - T(81.3%)比DeiT - S(79.8%)高出1.5%;在输入图像尺寸为224²/384²时,Swin - B(83.3%/84.5%)比DeiT - B(81.8%/83.1%)分别高出1.5%/1.4%。 与最先进的卷积神经网络(即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%的最高准确率,相较于具有相似推理吞吐量(每秒84.7张图像对比每秒85.9张图像)且浮点运算次数(FLOPs)稍高(47.0G对比55.4G)的视觉Transformer(ViT)高出2.4%。更大的Swin - L模型达到了87.3%的最高准确率,比Swin - B模型高出0.9%。

4.2. COCO上的目标检测

设置:目标检测和实例分割实验是在COCO 2017数据集上进行的,该数据集包含11.8万张训练图像、5000张验证图像以及2万张测试开发集图像。我们使用验证集进行消融研究,并在测试开发集上报告系统级别的对比情况。对于消融研究,我们考虑了mmdetection [10]中的四个典型目标检测框架:级联掩码R-CNN [29, 6]、自适应训练样本选择(ATSS)[79]、RepPoints v2 [12]以及稀疏R-CNN [56]。对于这四个框架,我们采用相同的设置:多尺度训练[8, 56](将输入图像调整大小,使短边在480到800之间,长边最多为1333)、AdamW [44]优化器(初始学习率为0.0001,权重衰减为0.05,批量大小为16)以及3倍训练计划(36个轮次)。对于系统级别的对比,我们采用一种改进的混合任务级联(HTC)[9]方法(记为HTC++),它结合了实例增强(instaboost)[22]、更强的多尺度训练[7]、6倍训练计划(72个轮次)、软非极大值抑制(soft-NMS)[5],并以在ImageNet-22K上预训练的模型作为初始化。

我们将我们的Swin Transformer与标准的卷积神经网络(ConvNets),例如ResNe(X)t,以及之前的Transformer网络(如DeiT)进行比较。对比时仅改变骨干网络,其他设置保持不变。需要注意的是,由于Swin Transformer和ResNe(X)t具有分层特征图,它们可直接应用于上述所有框架,而DeiT只生成单一分辨率的特征图,不能直接应用。为了公平比较,我们参照[81]利用反卷积层为DeiT构建分层特征图。 与ResNe(X)t的比较:表2(a)列出了Swin - T和ResNet - 50在四个目标检测框架上的结果。我们的Swin - T架构相较于ResNet - 50在边界框平均精度(box AP)上持续带来了3.4 - 4.2的提升,不过其模型尺寸、浮点运算次数(FLOPs)和延迟稍大一些。

表2(b)使用级联掩码R-CNN比较了不同模型容量下的Swin Transformer和ResNe(X)t。Swin Transformer达到了51.9的边界框平均精度和45.0的掩码平均精度,相较于具有相似模型尺寸、浮点运算次数和延迟的ResNeXt101 - 64x4d,在边界框平均精度上提升了 +3.6,在掩码平均精度上提升了 +3.3。在使用改进的HTC框架且具有52.3的边界框平均精度和46.0的掩码平均精度这一更高基准的情况下,Swin Transformer带来的提升也很高,分别为 +4.1的边界框平均精度和 +3.1的掩码平均精度(见表2(c))。关于推理速度,虽然ResNe(X)t是通过高度优化的CuDNN函数构建的,但我们的架构是使用内置的PyTorch函数实现的,这些函数并非都经过了良好的优化。彻底的内核优化超出了本文的范围。

与DeiT的比较:使用级联掩码R-CNN框架时DeiT - S的性能如表2(b)所示。Swin - T的结果在边界框平均精度上比DeiT - S高出 +2.5,在掩码平均精度上高出 +2.3,且二者具有相似的模型尺寸(8600万参数对比8000万参数),同时Swin - T的推理速度明显更快(15.3帧每秒对比10.4帧每秒)。DeiT推理速度较低主要是由于其相对于输入图像尺寸具有二次方复杂度。

与之前最先进技术的比较:表2(c)将我们的最佳结果与之前最先进模型的结果进行了比较。我们的最佳模型在COCO测试开发集上达到了58.7的边界框平均精度和51.1的掩码平均精度,相较于之前的最佳结果,边界框平均精度超出了 +2.7(无外部数据的Copy - paste [26]方法),掩码平均精度超出了 +2.6(DetectoRS [46]方法)。

4.3. ADE20K上的语义分割

设置:ADE20K [83]是一个广泛使用的语义分割数据集,涵盖了150个广泛的语义类别。它总共有2.5万张图像,其中2万张用于训练,2000张用于验证,另外3000张用于测试。我们利用mmseg [16]中的UperNet [69]作为基础框架,因其效率较高。更多细节在附录中呈现。

结果:表3列出了不同方法/骨干网络组合的平均交并比(mIoU)、模型大小(参数数量)、浮点运算次数(FLOPs)以及每秒帧数(FPS)。从这些结果可以看出,在计算成本相似的情况下,Swin - S比DeiT - S的平均交并比高出5.3(49.3对比44.0)。它也比ResNet - 101的平均交并比高出4.4,比ResNeSt - 101 [78]高出2.4。我们经过ImageNet - 22K预训练的Swin - L模型在验证集上达到了53.5的平均交并比,相较于之前的最佳模型(SETR [81],其模型尺寸更大,平均交并比为50.3)超出了 +3.2的平均交并比。

4.4. 消融研究

在本节中,我们对所提出的Swin Transformer中的重要设计元素进行消融研究,使用ImageNet - 1K图像分类、COCO目标检测中的级联掩码R - CNN以及ADE20K语义分割中的UperNet进行实验。

移位窗口 表4展示了在这三项任务中对移位窗口方法进行消融实验的结果。在ImageNet - 1K上,采用移位窗口划分的Swin - T相较于在每个阶段都采用单一窗口划分的同类方法,在最高准确率(top - 1准确率)上高出1.1%;在COCO上,边界框平均精度(box AP)高出2.8,掩码平均精度(mask AP)高出2.2;在ADE20K上,平均交并比(mIoU)高出2.8。这些结果表明,使用移位窗口来建立前序层中窗口之间的连接是有效的。如表5所示,移位窗口带来的延迟开销也较小。

相对位置偏差 表4展示了不同位置嵌入方法的比较结果。与不使用位置编码和使用绝对位置嵌入的方法相比,带有相对位置偏差的Swin - T在ImageNet - 1K上的最高准确率分别高出1.2%/0.8%;在COCO上,边界框平均精度分别高出1.3/1.5,掩码平均精度分别高出1.1/1.3;在ADE20K上,平均交并比分别高出2.3/2.9,这表明了相对位置偏差的有效性。此外还需注意,虽然添加绝对位置嵌入可以提高图像分类准确率(+0.4%),但它会对目标检测和语义分割产生负面影响(在COCO上边界框/掩码平均精度降低0.2,在ADE20K上平均交并比降低0.6)。

尽管最近的ViT/DeiT模型在图像分类中放弃了平移不变性(尽管长期以来平移不变性一直被认为对视觉建模至关重要),但我们发现,对于通用视觉建模,特别是对于目标检测和语义分割这类密集预测任务,能够促进一定平移不变性的归纳偏置(inductive bias)仍然是更可取的。

不同的自注意力方法 表5比较了不同自注意力计算方法和实现方式的实际速度。我们的循环实现方式比简单填充在硬件效率上更高,特别是在更深的阶段。总体而言,它使Swin - T、Swin - S和Swin - B的速度分别提升了13%、18%和18%。

基于所提出的移位窗口方法构建的自注意力模块,在四个网络阶段,相比于采用简单/核心实现方式的滑动窗口,其效率分别提高了40.8×/2.5×、20.2×/2.5×、9.3×/2.1×和7.6×/1.8×。总体而言,基于移位窗口构建的Swin Transformer架构相比于基于滑动窗口构建的变体,对于Swin - T、Swin - S和Swin - B,其速度分别快4.1/1.5、4.0/1.5、3.6/1.5倍。表6比较了它们在这三项任务上的准确率,结果表明它们在视觉建模中的准确率相近。

与Performer [14](这是速度最快的Transformer架构之一,见[60])相比,所提出的基于移位窗口的自注意力计算和整个Swin Transformer架构速度稍快(见表5),并且在使用Swin - T时,与Performer相比,在ImageNet - 1K上的最高准确率高出2.3%(见表6)。

5. 结论

本文提出了Swin Transformer,这是一种新的视觉Transformer,它能生成分层特征表示,并且相对于输入图像尺寸具有线性计算复杂度。Swin Transformer在COCO目标检测和ADE20K语义分割任务上达到了最先进的性能,显著超越了之前的最佳方法。我们希望Swin Transformer在各种视觉问题上的出色表现能够推动视觉和语言信号的统一建模。

作为Swin Transformer的一个关键要素,基于移位窗口的自注意力机制在视觉问题上被证明是有效且高效的,我们也期待对其在自然语言处理中的应用进行研究。