摘要
本文提出了一种新的视觉转换器,称为Swin Transformer,它可以作为计算机视觉的通用主干。在将Transformer从语言适应到视觉方面的挑战源于这两个领域之间的差异,例如视觉实体的规模差异很大,以及图像中的像素与文本中的文字相比分辨率较高。为了解决这些差异,我们提出了一种分层转换器,其表示是通过移位窗口来计算的。移位窗口方案通过将自我注意计算限制在非重叠的局部窗口,同时还允许跨窗口连接,从而带来了更高的效率。这种分层结构具有在不同尺度上建模的灵活性,并且具有关于图像大小的线性计算复杂性。Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K的TOP-1准确率为87.3)和密集预测任务,例如目标检测(COCO Testdev上的58.7box AP和51.1 MASK AP)和语义分割(ADE20K Val上的53.5mIoU)。它的性能大大超过了之前最先进的产品,COCO上的+2.7box AP和+2.6 MASK AP,以及ADE20K上的+3.2Miou,显示了基于Transformer的模型作为视觉主干的潜力。分层设计和移位窗口方法也被证明对全MLP架构是有益的。代码和模型可在以下网址公开获取 https://github.com/microsoft/Swin-Transformer.
1.引言
长期以来,计算机视觉中的建模一直由卷积神经网络(CNN)主导。从AlexNet[39]及其在ImageNet图像分类挑战中的革命性表现开始,通过更大的规模[30,76],更广泛的连接[34],以及更复杂的卷积形式[70,18,84]CNN的架构已经演变成越来越强大。由于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]。线性计算复杂性是通过在分割图像的非重叠窗口内局部计算自我注意来实现的(红色轮廓)。每个窗口中的patch数量是固定的,因此复杂度与图像大小成线性关系。这些优点使Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构[20],后者生成单一分辨率的特征地图,并且具有二次复杂性。
图1。(a)提出的Swin Transformer通过在更深的层中合并图像块(以灰色显示)来构建分层特征图,并且由于仅在每个局部窗口(以红色显示)内进行自我注意计算,因此对于输入图像大小具有线性计算复杂性。因此,它可以作为图像分类和密集识别任务的通用主干。
(b)相比之下,以前的视觉转换器[20]产生单一低分辨率的特征地图,并且由于全局自注意计算,对于输入图像大小具有二次计算复杂性。
Swin Transformer的一个关键设计元素是它在连续的自我关注层之间移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(参见表4)。该策略在实际延迟方面也是有效的:一个窗口内的所有查询补丁共享相同的密钥集,这便于硬件中的内存访问。相反,较早的基于滑动窗口的自我注意方法[33,50]由于不同查询像素的不同键集而在一般硬件上受到低延迟的影响。我们的实验表明移动窗口方法比滑动窗口方法有更低的延时,然而在建模能力方面是相似的(参见表5和6)。移位窗口方法也被证明对全MLP体系结构有益[61]。
图2.在建议的Swin Transformer架构中计算自我注意的移位窗口方法的图示。在l层(左),采用规则的窗口划分方案,并在每个窗口内计算自我关注。在下一层l+1(右)中,窗口分区被移位,从而产生新窗口。新窗口中的自我注意计算跨越了层l中先前窗口的边界,提供了它们之间的连接。
本文提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务中取得了较好的性能。它的性能显著优于Vit/Deit[20,63]和ResNe(X)t模型[30,70],而在三个任务上的延迟相似。它在COCO测试开发集上的58.7box AP和51.1mask AP超过了之前最先进的结果+2.7box AP(复制-粘贴[26]无外部数据)和+2.6mask AP(DetectiRS[46])。在ADE20K语义切分上,它在Val集合上获得了53.5Mou,比之前的最先进水平(SETR[81])提高了+3.2Mou。在ImageNet-1K图像分类上达到了87.3%的TOP-1正确率。
我们认为,跨计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,并且两个领域的建模知识可以更深入地共享。我们希望,Swin Transformer在各种视觉问题上的强劲表现可以在社区中推动这种信念的加深,并鼓励对视觉和语言信号进行统一建模。
2.相关工作
CNN及其变种。CNN作为整个计算机视觉的标准网络模型。虽然CNN已经存在了几十年[40],但直到AlexNet的引入[39],CNN才起飞并成为主流。从那时起,人们提出了更深入、更有效的卷积神经结构来进一步推动计算机视觉中的深度学习浪潮,例如VGG[52]、GoogLeNet[57]、ResNet[30]、DenseNet[34]、HRNet [65], and EfficientNet [58]。除了这些结构上的进步之外,还在改进单个卷积层方面做了大量工作,例如深度卷积[70]和可变形卷积[18,84]。虽然CNN及其变体仍然是计算机视觉应用程序的主要骨干架构,但我们强调了变形金刚类架构在视觉和语言之间统一建模方面的强大潜力。我们的工作在几个基本的视觉识别任务上取得了很好的表现,我们希望这将有助于模型的转变。
基于自我注意的主干体系结构。同样受到自我关注层和变形金刚架构在自然语言处理领域的成功的启发,一些作品使用自我关注层来取代流行的ResNet中的部分或全部空间卷积层[33,50,80]。在这些工作中,自我关注是在每个像素的局部窗口内计算的,以加快优化[33],并且它们实现了比对应的ResNet体系结构略好的精度/浮点折衷。然而,它们昂贵的存储器访问导致它们的实际等待时间明显大于卷积网络的延迟[33]。我们不使用滑动窗口,而是在连续的层之间移动窗口,这允许在通用硬件上更有效地实现。
自我注意/Transformers完善CNN。另一项工作是用自我关注层或变形金刚来增强标准的CNN架构。自我关注层可以通过提供对远程依赖或异类交互进行编码的能力来补充骨干网络[67、7、3、71、23、74、55]或头部网络[32、27]。最近,Transformer中的编解码器设计已被应用于目标检测和实例分割任务[8,13,85,56]。我们的工作探索了变形金刚对基本视觉特征提取的适应,是对这些工作的补充。
基于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.方法
3.1 整体架构
图3显示了Swin Transformer体系结构的概述,其中演示了微型版本(Swint)。它首先通过patch分割模块(如VIT)将输入的RGB图像分割成不重叠的面片。每个patch都被视为一个“token”,其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用了4×4的块大小,因此每个块的特征维度为4×4×3=48。将线性嵌入层应用于该原始值特征以将其投影到任意维度(表示为C)。
图3.(a)Swin Transformer的架构(Swin-T);(b)两个连续的Swin Transformer块(用公式3表示)。W-MSA和SW-MSA分别是具有规则和移位窗口配置的多头自我注意模块。
在这些patch tokens上应用了几个带有修改的自我注意计算的变形器块(Swin Transformer块)。变换器块保持令牌的数量(H/4×W/4),与线性嵌入一起被称为阶段1。
为了产生分层表示,随着网络的深入,通过patch合并层来减少token的数量。第一层将每组2×2相邻patch的特征拼接在一起,并在4C维拼接的特征上应用一个线性层。这将token数减少2×2=4的倍数(分辨率的2倍下采样),并且输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持在H/8×W/8。这个第一块的patch合并和特征变换被表示为“阶段2”。该过程重复两次,分别为输出分辨率为16/H×W/16和32/H×W/32的“阶段3”和“阶段4”。这些阶段共同产生分层表示,具有与典型卷积网络相同的特征映射分辨率,例如VGG[52]和ResNet[30]。因此,该体系结构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。
Swin Transformer块。Swin Transformer是通过将变压器模块中的标准多头自我注意(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述)来构建的,而其他层保持不变。如图3(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块和一个中间带有Gelu非线性的两层MLP组成。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并且在每个模块之后应用剩余连接。
3.2 基于移位窗口的自我注意
标准的变压器体系结构[64]及其用于图像分类的适配[20]都进行全局自我注意,其中计算token和所有其他token之间的关系。全局计算导致了关于令牌数量的二次复杂性,使得它不适合于许多需要大量token集来进行密集预测或表示高分辨率图像的视觉问题。
非重叠窗口中的自我注意。为了有效地建模,我们建议在局部窗口内计算自我注意。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M个patch,在一张包含h×w个patch的图像上全局MSA模块和一个窗口的计算复杂度分别为:
其中,前者与patch数量HW二次,后者在M固定时为线性(默认情况下设置为7)。全局自我注意计算对于较大的硬件来说通常是负担不起的,而基于窗口的自我注意是可伸缩的。
连续块中的移位窗口划分。基于窗口的自我注意模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,我们提出了一种移位窗口划分方法,该方法在连续的Swin Transformer块中的两个划分配置之间交替。
如图2所示,第一个模块使用从左上角像素开始的规则窗口划分策略,将8×8特征图均匀划分为大小为4×4(M=4)的2×2个窗口。然后,下一个模块通过将窗口从规则划分的窗口移位(M/2,M/2)个像素来采用从前一层的窗口移位的窗口配置。
利用移位窗口分区方法,连续的Swin Transformer块被计算为
其中,z^l和zl分别表示块l的(S)WMSA模块和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],在计算相似性时包括每个头部的相对位置偏差B∈RM2×M2:
其中Q;K;V∈RM2×d是查询、键和值矩阵;d是查询/键维度,M2是窗口中的patch数量。由于每个轴上的相对位置在[−M+1;M−1]范围内,我们将一个较小的偏差矩阵B^∈R(2M−1)×(2M−1)参数化,B中的值取自B^。
我们观察到,与没有这个偏置项或使用绝对位置嵌入的同类相比,有了显著的改进,如表4所示。此外,如[20]中那样,在输入中添加绝对位置嵌入会略微降低性能,因此我们的实现中没有采用它。
在预训练中学习的相对位置偏差还可以用于通过双三次内插[20,63]来初始化用于微调的模型,该模型具有不同的窗口大小。
3.3 体系结构变体
我们构建了名为Swin-B的基本模型,其模型大小和计算复杂性与ViTB/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是第一级中的隐藏层的通道号。表1列出了用于ImageNet图像分类的模型变量的模型大小、理论计算复杂性(Flop)和吞吐量。
4.实验
我们在ImageNet-1K图像分类[19]、COCO目标检测[43]和ADE20K语义分割[83]上进行了实验。在下文中,我们首先在三个任务上将建议的Swin Transformer架构与以前的最先进架构进行比较。然后,我们对Swin Transformer的重要设计元素进行了消融实验。
4.1 基于ImageNet-1K的图像分类
4.2 基于CoCo的目标检测
4.3. 基于ADE20K的语义切分
4.4 消融实验
5.结论
本文介绍了一种新的视觉转换器Swin Transformer,它产生了一种分层的特征表示并且具有关于输入图像大小的线性计算复杂性。Swin Transformer在CoCo目标检测和ADE20K语义分割方面实现了最先进的性能,大大超过了以往最好的方法。我们希望,Swin Transformer在各种视觉问题上的强劲表现将鼓励对视觉和语言信号进行统一建模。
作为Swin Transformer的一个关键元素,基于移位窗口的自我注意被证明在解决视觉问题上是有效和高效的,我们期待着研究它在自然语言处理中的应用。