本文提出一种新的视觉Transformer----Swin Transformer,它可以成为计算机视觉的通用主干。从语言到视觉采用Transformer的挑战来自于这两个领域之间的差异,比如视觉实体的规模变化很大,以及图像中像素比文本中单词的高分辨率。为解决这些差异,我们提出了一个分层Transformer,其表示是由移动窗口计算的。移动的窗口方案将自注意力计算限制在非重叠的局部窗口上,同时允许跨窗口连接,从而提高了效率。这种层次结构具有在不同尺度上建模的灵活性,并且对图像大小具有线性的计算复杂度。Swin Transformer的品质使其兼容广泛的视觉任务,包括图像分类(在ImageNet-1K上top-1的准确率87.3%)和密集的预测任务,如目标检测(在COCO test-dev上58.7 box AP和51.1 mask AP)和语义分割(在ADE20K val上53.5mIoU)。它的性能大大超过了之前的先进技术,在COCO上+2.7 box AP和+2.6 mask AP,在ADE20K上+3.2mIoU,显示了基于Transformer的模型作为视觉主干的潜力。分层设计和移动窗口也被证明对MLP架构是有益的。
随着CNNs的发展,架构已经发展的更大规模、更广泛的连接、以及更复杂的卷积形式。Transformer为序列建模和转导任务而设计,以其对数据中的长期依赖进行建模而闻名。
本文中,我们试图扩大Transformer的适用性,使其可以作为计算机视觉的通用主干。将其在语言领域的高性能转移到视觉领域的重大挑战可以用两种模态之间的差异来解释:其一是规模的差异,与在语言Transformer中作为处理的基本元素的单词标记不同,视觉元素在规模上可以有很大的变化,这是一个在对象检测等任务中引起注意的问题。在现有的基于Transformer模型中,标记都是固定尺寸的,不适合这些视觉应用。另一个差异是图像中的像素分辨率比文本中的文字要高得多。存在很多视觉任务中,如语义分割需要像素级进行密集预测,这对于高分辨率图像上的Transformer是难以处理的,因为其自注意力的计算复杂度与图像大小是二次的。为克服这些问题,我们提出了一种通用的Transformer主干--Swin Transformer,构造层次特征图,并对图像大小具有线性计算复杂度。如图1所示,Swin Transformer从小的补丁开始,在更深的Transformer层中逐步合并相邻的补丁,构建一个层次表示。有这些层次的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算自注意力来实现的。每个窗口的补丁数是固定的,因此复杂度与图像大小成线性关系。这些优点使Swin Transformer适合作为各种视觉任务的通用主干,而以前基于Transforemr的架构,它产生单一分辨率的特征图,具有二次复杂度。
Swin Transformer的一个关键设计元素是它在连续的自注意力层之间有窗口分区的偏移,如图2所示。移动后的窗口连接了前一层的窗口,提供了它们之间的连接,显著提高了建模能力(表4)。这种策略对于现实世界的延迟也很有效:窗口中的所有查询补丁共享相同的key集,这有助于硬件中的内存访问。相反,早期基于滑动窗口的自注意力方法由于不同查询像素的key集不同,在一般硬件上存在较低的延迟。我们的实验表明,所提出的移动窗口方法比滑动窗口方法有更低的延迟,但在建模能力上是类似的(表5和表6)。移动窗口方法也被证明对all-MLP架构是有效的。
提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务上取得了较好的性能,它在三个任务上显著优于ViT/DeiT和ResNe(X)t模型,并且在三个任务具有相似的延迟。
我们相信,跨计算机视觉和自然语言处理的统一架构可以有利于这两个领域,因为它可以促进视觉和文本信号的联合建模,而来自这两个领域的建模知识可以更深入地共享。我们希望Swin Transformer在各种视觉问题上的出色表现能够在社区中加深这种信念,并鼓励视觉和语言信号的统一建模。
CNN和变体 从AlexNet引入起,CNN成为计算机视觉的主流,从那时起,更深、更有效的卷积神经结构被提出来进一步推动计算机视觉中的深度学习,如VGG、GoogleNet、ResNet、DenseNet、HRNet、EfficientNet。还有很多改进个体卷积层的工作,如深度卷积和可变形卷积。我们强调了类似Transformer结构在视觉和语言之间的统一建模方面的巨大潜力。
基于自注意力的主干结构 受到自注意力层和Transformer架构在NLP领域的启发,一些采用自注意力来取代流行的ResNet中的部分或全部空间卷积层。这些工作中,自注意力是在每个像素的局部窗口内计算的,以加快优化,且比对应的ResNet架构获得了略微更好的精度/FLOPs权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络[33]。我们建议使用滑动窗口,我们建议在连续层之间移动窗口,这允许在一般硬件中更有效地实现。
自注意力/Transformers来补充CNNs 自注意力层可以通过编码远程依赖或异构交互的能力来补充主干或头部网络。近年来,Transformer中的编码-解码器设计已被应用于目标检测和实例分割任务。我们的工作探索了改编Transformer的基本视觉特征提取。
基于视觉主干的Transformer 以前的工作ViT直接将Transformer架构应用于不重叠的中型图像补丁上进行图像分类。与卷积网络相比,它在图像分类上取得了令人印象深刻的速度-精度权衡。然而,ViT需要大规模的训练数据集(如JFT-300M)才能表现良好,DeiT引入几种训练策略,使ViT也能够有效地使用较小的ImageNet-1K数据集。ViT在图像分类上的结果是令人鼓舞的,但其架构不适合作为在密集视觉任务的通用主干网络,或输入图像分辨率高时,由于其低分辨率的特征图和图像大小二次增加复杂度。目前已有一些研究将ViT模型通过直接上采样或反卷积应用于目标检测和语义分割的密集视觉任务,但[2,81]性能相对较低。与我们的工作同时,有一些修改了ViT架构[72,15,28],以更好的图像分类。根据实验,我们发现我们的Swin Transformer架构在这些图像分类方法中实现了最佳的速度-精度权衡,尽管我们的工作集中于通用性能,而不是特别的分类。另一个同时进行的工作是,[66]探索了一个类似的思路,即在Transformer上构建多分辨率的特征图。它的复杂度仍然是图像大小的二次型,而我们的复杂性是线性的,并且也在局部工作,这已被证明有利于建模视觉信号[36,25,41]的高相关性。我们的方法既高效又有效,在COCO目标检测和ADE20K语义分割上都实现了最先进的准确性。
如图3,论述了小版本,首先通过一个补丁分割模块(如ViT)将一个输入的RGB图像分割成不重叠的补丁,每个补丁被视为一个标记,其特征被设置为原始像素RGB值的连接。在我们的实现中,我们使用4×4的补丁大小,因此每个补丁的特征维度是4×4×3=48。在这个原始值特征上应用一个线性嵌入层,将其投射到一个任意维度(记为C)。
在这些补丁标记上应用几个具有改进的自注意力计算的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块由一个基于移位窗口的MSA模块组成,然后是一个中间具有GELU非线性的2层MLP。在每个MSA模块和每个MLP之前应用一个LayerNorm(LN)层,在每个模块之后应用一个残差连接。
标准的Transformer结构及其对图像分类的适应都采用全局自注意力,计算一个标记和所有其它标记之间的关系。全局计算导致了关于标记数量的二次复杂度,这使它不适合很多需要大量标记来进行密集预测或表示高分辨率图像的视觉问题。
在非重叠窗口中的自注意力 为有效建模,我们提出在局部窗口内计算自注意力。这些窗口被安排成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M补丁,一个全局MSA模块和一个基于h×w补丁图像的窗口的计算复杂度为:
其中,前者与补丁数hw之间为二次型,当M固定(默认设置为7)时,后者为线性型。全局自注意力计算对于一个大的hw通常是不可承受的,而基于窗口的自注意是可扩展的。
连续块中的移动窗口分区 基于窗口的自注意力块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,我们提出一种移动窗口划分方法,在连续的Swin Transformer块中的两种划分配置交替进行。
如图2所示,第一个模块使用规则的窗口划分策略,从左上角的像素开始,8×8特征图均匀地划分为2×2窗口,大小为4×4(M=4)。然后,下一个模块采用一种从前一层的窗口中,通过从规律划分的窗口中替换窗口(bM2c,bM2c)个像素。
采用移动窗口划分方法,连续的Swin Transformer块计算为:
其中,zˆl和zl分别表示块l的(S)W-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],在计算相似度中对每个头包含一个相对位置偏差B∈RM2×M2:
其中,Q、K、V∈RM2×d为query、key和value矩阵;d为query/key维度,M2为窗口中的补丁数。由于沿每个轴的相对位置在范围内[−M+1,M−1],我们参数化了一个较小的偏置矩阵ˆB∈R(2M−1)×(2M−1),B中的值取自Bˆ。
我们观察到,与没有这个偏差项或使用绝对位置嵌入的同行相比,有显著的改进,如表4所示。在[20]中进一步添加绝对位置嵌入会略微降低性能,因此在我们的实现中没有采用它。
在预训练中学习到的相对位置偏差也可以通过双立方插值[20,63]来初始化一个具有不同窗口大小的微调模型。
我们建立我们的基本模型--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为第一阶段隐藏层的信道数。表1列出了用于ImageNet图像分类的模型大小、理论计算复杂度(FLOPs)和模型变量的吞吐量。
我们对ImageNet-1K图像分类[19]、COCO目标检测[43]和ADE20K语义分割[83]进行了实验。我们首先将提出的Swin变压器架构与之前的三个技术进行比较。然后,我们消除了Swin Transformer的重要设计元素。
ImageNet-1K包含来自1000个类的1.28M训练图像和50K验证图像。我们考虑了两种训练设置:1)常规ImageNet-1K训练,我们在训练中包括了大多[63]的增强和正则化策略,除了重复的增强和EMA,它们并没有提高性能。而重复增强对稳定ViT的训练至关重要。2)在ImageNet-22K上预训练在ImageNet-1K上微调。
常规ImageNet-1K训练的结果 表1a中,与之前最新基于Transformer的架构相比,即DeiT相比,Swin Transformer明显超过了具有类似的复杂度的模型:使用224^2输入Swin-T为+1.5%(79.8%),Swin-B+使用224^2/384^2输入为+1.5%/1.4%(81.8%/83.1%)。与先进的卷积网络相比,即RegNet和EfficientNet相比,Swin Transformer实现了更好的速度-精度权衡。需要注意的是,虽然RegNet[48]和EfficientNet[58]是通过彻底的架构搜索获得的,但所提出的Swin Transformer是由标准Transformer改编而来的,具有很强的进一步改进潜力。
ImageNet-22K预训练的结果 如表1b,对于Swin-B,ImageNet-22K预训练比ImageNet-1K预训练带来1.8%的∼收益1.9%。与之前ImageNet-22K预训练的最佳结果相比,我们的模型实现了显著更好的速度-精度权衡:Swin-B获得了86.4%的top-1精度,比类似的推理吞吐量(84.7/85.9vs.图像/秒),略低的FLOPs(47.0G/55.4G)高2.4%。较大的Swin-L模型达到87.3%的前1精度,+比Swin-B模型高0.9%。
在消融研究中,我们考虑了四种典型的目标检测框架:Cascade Mask R-CNN、ATSS、RepPoints v2、和Sparse RCNN。
与ResNe(X)t的比较 表2(a)列出了Swin-T和ResNet-50在四个目标检测框架上的结果。与ResNet-50相比,我们的Swin-T结构带来了+3.4∼4.2box AP收益,模型大小、流量和延迟略大。表2(b)比较了Swin Transformer和ResNe(X)t在使用Cascade Mask RCNN的不同模型能力,Swin Transformer实现了51.9 box AP和45.0掩模AP的高检测精度,+3.6box AP和+3.3掩模AP显著高于ResNeXt101-64x4d,具有相似的模型大小、流量和延迟。在使用改进的HTC框架的52.3的box AP和46.0的掩模AP的更高基线上,+4.1的盒AP的增益也很高,+3.1的掩模AP(见表2(c))。关于推理速度,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的架构是用内置的PyTorch函数实现的,这些函数并不是都经过了很好的优化。一个彻底的核优化超出了本文的范围。
与DeiT的比较 使用级联掩码R-CNN框架的DeiT-S的性能如表2(b).所示。Swin-T的结果是+2.5boxAP和+2.3掩模AP高于DeiT-S,模型大小相似(86Mvs.80M),且显著高于推理速度(15.3FPSvs.10.4FPS)。DeiT的推理速度较低,主要是由于它对输入图像大小的二次复杂度。
与之前最新结果的比较 表2(c)将我们的最佳结果与以前最先进的模型进行了比较。我们的最佳模型在COCO测试开发上达到了58.7box AP和51.1掩码AP,超过了之前+2.7box AP(没有外部数据的复制粘贴[26])和+2.6掩码AP(检测器[46])的最佳结果。
表3列了不同方法/主干对的mIoU、模型大小、FLOPs和FPS。从这些结果可以看出,Swin-S的+比DeiT-S高5.3mIoU(49.3比44.0.)。+4.4mIoU高于ResNet-101,+2.4mIoU高于ResNeSt-101[78]。我们使用ImageNet-22K预训练的Swin-L模型在val集上达到53.5mIoU,超过了之前+3.2mIoU的最佳模型(SETR[81]的50.3mIoU,具有更大的模型尺寸)。
移动窗口 表4报告了在这三个任务上的移动窗口方法的消融情况。移位窗口划分的Swin-T在每个阶段比单个窗口划分上的性能在ImageNet-1K上的+为1.1%,COCO上的+2.8盒AP/+2.2掩码AP和ADE20K上的+2.8mIoU。结果表明,使用移动的窗口在前几层的窗口之间建立连接是有效的。通过移位窗口产生的延迟开销也很小,如表5所示。
相对位置偏差 表4显示了不同位置嵌入方法的比较。具有相对位置偏差的Swin-T在ImageNet-1K上产生+1.2%/+0.8%前1的精度,在COCO上+1.3/+1.5盒AP和+1.1/+1.3掩模AP,和在ADE20K上+2.3/+2.9mIoU分别相对于没有位置编码和绝对位置嵌入的那些,表明相对位置偏置的有效性。还需要注意的是,虽然包含绝对位置嵌入提高了图像分类精度(+0.4%),但它损害了目标检测和语义分割(COCO的-0.2box/maskAP和ADE20K的-0.6mIoU)。
虽然最近的ViT/DeiT模型放弃翻译不变性在图像分类,尽管它长期以来一直被证明是至关重要的视觉建模,我们发现归纳偏见,鼓励某些翻译不变性仍然适合通用视觉建模,特别是预测任务密集的目标检测和语义分割。
不同的自注意力方法 表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变压器架构分别比建立在Swin-T、Swin-S和Swin-B上的变体快4.1/1.5、4.0/1.5、3.6/1.5倍。表6比较了它们在三个任务上的准确性,表明它们在视觉建模中的准确性相似。
与Preformer[14]相比,这是最快的变压器架构之一(见[60]),提出了基于移动窗口的自我注意计算和整体双变压器架构略快(见表5),同时实现+2.3%的顶级精度相比表演者ImaneNet-1k使用Swin-T(见表6)。
本文提出Swin Transformer,一种新的视觉Transformer产生了一个层次化特征表示,对于输入图像的大小具有线性的计算复杂度。Swin Transformer在COCO目标检测和ADE20K语义分割上实现了最新的表现,显著超过以往的最佳方法。我们希望Swin Transformer在之前视觉问题上的强大性能将会鼓励视觉和语言信号的统一建模。
作为Swin Transformer的一种关键元素,基于移动窗口的自注意力对视觉问题是有效的,我们期待研究其在自然语言处理中的应用。