Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译

下载论文

代码

摘要

     本篇论文呈现了一个新的vision 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验证集上取得了mIoU 53.5 )。在COCO上,它的性能大幅超越了以前最好的模型, 在box AP 上增加2.7个点 和 mask AP增加2.6个点,在ADE20K增加 3.2的mIoU。表明基于Transformer的模型作为视觉骨干网络的潜力。分层架构和移动窗口方法也证明了对所有MLP架构是有益的。代码和模型是公开在https://github.com/microsoft/Swin-Transformer。

1、引言

     在计算机视觉领域,在很长的一段时间内,卷积神经网络 (CNNs)都是占据主导地位。从AlexNet开始和它在ImageNet图片分类上的革命性表现。CNN架构通过更大的规模、更广泛的连接和更复杂的卷积形式,已经变得非常强大。随着CNNs作为大量视觉任务的的骨干网络,这些架构的进步使得性能有所提升从而广泛的提升了整个领域。
     另一方面,在自然语言处理 (NLP)方面的网络架构的进化已经出现了不同的道路,现在流行的架构已经由Transformer取代。Transformer是为序列模型和转换任务而设计的,它因在模型中使用注意力而能关注到数据中的长期依赖关系而著称。它在语言领域的巨大成功使得研究者想让它应用在视觉领域。在视觉领域的某些任务上已经取得了有希望的结果。特别是图片分类和多模态。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第1张图片
Figure 1 (a) Swin Transformer通过合并更深层的图像块(灰色表示)来构建分层的特征图,它的计算复杂度和输入图片大小呈线性关系,因为自注意力只在局部窗口(红色表示)中计算,它因此能作为图片分类和密集识别任务的通用骨干网络。(b) 最为对比,以前的 vision Transformers产生单个的低分辨率特征图,并且由于是全局自注意力计算,所以计算复杂度与输入图片的大小呈平方关系。

     在本篇论文中,我们寻找Transformer的拓展应用,以至于它能作为计算机视觉中的通用骨干网络,就像Transformer在NLP中和CNNs在视觉领域中的一样。我们观察到,将语言领域的高性能迁移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。其中一个差异是尺度。不像词tokens作为语言Transformers处理中的基本元素。视觉元素在规模上可以非常大,这是一个在目标检测等任务中已经受到关注的问题。在已存在的基于Transformer的模型当中,tokens都是固定尺度的,这一性质不符合视觉应用。另一个不同是,与词在文本段落中相比图片拥有非常高的分辨率(非常大的像素)。这些已存在的很多视觉任务像语义分割要求在像素级别的密集预测,这在高分辨率图片上可能让Transformer难以应对,因为它的自注意力的计算复杂度是图片大小的平方倍。为了克服这个问题,我们提出了一个通用的 Transformer骨架,叫做 Swin Transformer,Swin Transformer构造了分层的特征图,计算复杂度和图片大小呈线性关系。正如Figure 1(a)中所述, Swin Transformer通过开始的小尺度的图像块并逐渐的在更深的Transformer层中合并相邻的图像块来构造一个分层的表征。通过这些分层特征图,Swin Transformer模型可以方便地利用高级技术进行密集预测像特征金字塔网络 (FPN)和 U-Net。通过在无重叠的窗口上计算局部自注意力能够达到线性计算复杂度,这个无重叠窗口是图片的一部分(轮廓是红色的)。每个窗口的图像块个数是固定的。而且复杂度随着图片大小呈线性关系。这些优点让Swin Transformer适合作为很多视觉任务的通用骨干网络。和以前的基于Transformer的架构对比,以前的产生单一像素的特征图和复杂性呈平方关系。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第2张图片
Figure 2 在Swin Transformer架构中计算自注意力的移动窗口方法的一个说明。在 l \mathit l l 层(左)采用常规窗口划分方案,在每个窗口中计算自注意力。在下一层: l + 1 \mathit l+1 l+1层(右),移动分割窗口,结果放在新的窗口中。新窗口中的自注意计算横跨 l \mathit l l 中以前窗口的边界,让这些窗口连接起来。

    Swin Transformer的一个关键设计是它在连续自注意力层之间窗口移动分割。正如 Figure 2中说明的那样。移动窗口跨过前一层的窗口,让他们连接起来这能极大的增强模型的能力(看 Table 4)。这种策略对于真实世界的延迟也是有效的:所有的query图像块在同一个窗口内共享同一组 key,这有助于硬件中的内存访问。相反,在早期由于不同的query图像使用不同的 key组所以基于自注意力方法的滑动窗口在普通的硬件上有低延迟。我们的实验表明:移动窗口方法比滑动窗口方法拥有更低的延迟,在模型能力上也类似(看Tables 5 和 6)。移动窗口方法也已经被证明了它对所有的MLP架构的模型有益。
    Swin Transformer在图片分类,物体检测,语义分割识别任务中达到了很强的性能。在上述三个任务中在相同的延迟下Swin Transformer远胜ViT / DeiT和ResNe(X)t模型。它在 COCO test-dev数据集上的58.7 box AP 和 51.1 mask AP超过了以前最好的结果,在box AP上比以前高了2.7,mask AP上比以前高了2.6。在 ADE20K数据集上的语义分割,在验证集上获得了 53.5 mIoU ,比以前最好的高了3.2mIoU 。在ImageNet-1K图片分类上的top-1精度达也到了87.3%。
    Swin Transformer是一个能让计算机视觉和自然语言处理这两个领域都受益的统一架构,因为它将有助于视觉和文本信号的联合建模,并且来自这两个领域的模型知识可以更深入地共享。我们希望Swin Transformer在各种视觉问题上的出色表现能够加深人们的这种信念,并鼓励对视觉和语言信号进行统一建模。

2、相关工作

CNN和变体 CNN作为标准的网络模型贯穿整个视觉领域。尽管CNN已经存在几十年了,知道AlexNet出现 CNN才开始变成主流。从那以后,更深更高效的卷积神经网络架构进一步推动了在视觉领域中进行深度学习的浪潮,例如:VGG [52], GoogleNet [57], ResNet [30], DenseNet [34],HRNet [65], 和 EfficientNet [58]。除了这些高级架构,在改进各个卷积层方面也做了大量工作如:深度卷积和可变卷积。尽管CNN和它的变种在计算机视觉应用方面仍然主流的骨干网络架构。我们想强调的是基于 Transformer架构来处理视觉和语言任务的统一模型具有很大的潜力。我们在几个基础的视觉识别任务上的工作,达到了很强的性能,我们希望这将有助于模式的转变。
基于自注意力的骨干网络架构 受到自注意力层和Transformer架构在自然语言处理领域成功运用的启发。一些工作用自注意力层取代ResNet的一些或者全部的空间卷积层。在这些工作当中,自注意力的计算是在每个图像的局部窗口中以达到加速优化的目的,他们比同等的基于ResNet架构在精度和浮点计算量的权衡上稍好。然而其昂贵的内存访问导致其实际延迟明显大于卷积网络的延迟。我们的滑动窗口则相反,我们提出了移动窗口,它允许在通用硬件上能更高效地实现。
自注意力/Transformers使CNNs更完美 另一个工作是用自注意力层和Transformers来增强标准的 CNN架构。自注意力层可以通过提供对远距离依赖关系或异构交互进行编码的能力来补充主干或头部网络。更多最近的基于编码器解码器的Transformer已经应用到了物体检测,和实例分割任务。我们的工作探索了Transformers对于基本视觉特征提取的适应性,并且是对这些工作的补充。
基于Transformer的视觉骨干网络 和我们的工作最相近的是Vision Transformer (ViT)和它的后续变种。具有开创性工作的ViT直接将Transformer架构应用于非重叠的中型图像块,以进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度-精度权衡。然而 ViT要求在大规模训练数据集(例如: JFT-300M)上才能有好的表现,DeiT介绍了几种训练策略,这些策略允许ViT也可以使用较小的ImageNet-1K数据集来进行有效地训练。 ViT在图片分类上的结果是鼓舞人心的。但是它的架构在密集型视觉任务或者当输入图片图像非常高时是不适合作为通用骨干网络的,因为它适应于低图像特征图,并且复杂度随着图片大小呈平方关系。有少量工作通过直接使用上采样或者反卷积把ViT模型应用到物体检测或者语义分割等密集型视觉任务中,但是性能却相对较低。与我们的工作同时进行的有一些人修改了ViT架构【72、15、28】,以实现更好的图像分类。根据经验我们发现我们的Swin Transformer在图片分类上在这些所有的方法中,达到了最好的速度精度权衡,尽管我们的工作聚焦在了通用性能而不是针对分类任务。另一个与此同时的工作是做了和我们具有相同思想的工作,在Transformer上构建多图像特征图。它的复杂度仍然和图片的大小呈平方关系,而我们的复杂性是线性的,并且在局部操作,这种局部操作在视觉信号的高相关性建模中被证明是有益的。我们的方法既高效又有效,在 COCO的目标检测和ADE20K的语义分割上达到了最好的精度。

3、方法

3.1、总体架构

Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第3张图片
Figure 3 (a)一个Swin Transformer (Swin-T)架构。(b)两个连续的 Swin Transformer 块(公式3中的符号表示)。W-MSA 和 SW-MSA分别是带有归一化和移动窗口配置的多头自注意力模型。

     Figure 3是Swin Transformer架构的一个总揽图,这个图说明了Swin-T非常小。它通过一个图像块分割模型将输入的RGB图片分割成非重叠的图像块,这一点和ViT一样。每一个图像块作为一个‘token’而且由连接在一起的行图像的RGB值作为它的特征。在我们的实现当中,我们用4x4的图像块大小因此每个图像块的特征维度为4x4x3=48。用一个线性嵌入层将这个行-值特征投射到任何维度(用C表示)。
    用修改过的自注意力计算的几个Transformer块 (Swin Transformer 块)作用在这些图像块tokens上。Transformer块保持 tokens的个数为 ( H 4 × W 4 ) (\frac{H}{4}\times\frac{W}{4}) (4H×4W)。包含线性嵌入层作为“Stage 1”。
    为了形成分层特征,随着网络的深入,tokens的数量是由图像块合并层减少的。第一个图像块合并层连接每个组的2x2相邻图像块的特征。在4C维上应用一个线性层来连接特征。通过多个2×2 = 4(2倍的下采样率)图像块来减少tokens的数量。输出维度设置成2C,Swin Transformer块是被用作特征变换,分辨率保持在 ( H 8 × W 8 ) (\frac{H}{8}\times\frac{W}{8}) (8H×8W)。这个第一个图像块合并和特征变化的块被命名为 “Stage 2”,这Stage 2的程序被重复两次分别叫做“Stage 3” 和 “Stage 4”,输出的分辨率分别是 ( H 16 × W 16 ) (\frac{H}{16}\times\frac{W}{16}) (16H×16W) ( H 32 × W 32 ) (\frac{H}{32}\times\frac{W}{32}) (32H×32W)。这些阶段共同产生与典型卷积网络相似的特征映射分辨率的分层表征,例如:VGG 和 ResNet。因此,我们所提的架构能很方便的取代已存在的针对很多视觉任务的骨干网络。
Swin Transformer块 Swin Transformer是基于移动窗口(在3.2部分介绍)并且保持其他层不变的模型构建的,用来取代Transformer块中的标准的多头自注意力(MSA)。一个 Swin Transformer块是由基于多头自注意力(MSA)的移动窗口模型组成的。紧接着让GELU非线性激活函数放在一个 2层的 MLP中间。在每个MSA模块和每个 MLP之前使用归一化层(LN),每个模块都是用一个残差连接。

3.2、基于自注意力的移动窗口

    标准的Transformer架构和它的图片分类的变种都使用了全局自注意力,这样一个token和其他所有tokens之间的关系都是需要计算的。全局计算导致了计算复杂度与各自的tokens数呈平方关系,这让它不适合做对要求具有很多 tokens的密集型预测或者高分辨率图片的很多的视觉任务。
在非重叠窗口内的自注意力 为了高效地建模,我们提出在局部窗口内计算自注意力。窗口的设置是用非重叠的方式均匀的分割图片。假设每个窗口包含 M × M个图像块。一个全局的MSA模块和一个基于 h × w个图像块的图片的窗口的计算复杂度分别是: Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C ( 1 ) \Omega(\mathrm{MSA}) = 4hwC^2+2(hw)^2C\quad\quad\quad\quad\quad\quad\quad(1) Ω(MSA)=4hwC2+2(hw)2C(1) Ω ( W M S A ) = 4 h w C 2 + 2 M 2 h w C ( 2 ) \Omega(\mathrm{WMSA})= 4hwC^2+2M^2hwC\quad\quad\quad\quad(2) Ω(WMSA)=4hwC2+2M2hwC(2)其中前者和图像块数hw呈平方关系,后者当M是固定时呈线性关系(M默认设置为7)。对于一个大的hw全局自注意力计算通常是承受不起的,然而基于自注意力的窗口是可扩展的。
在连续的块中移动窗口 基于窗口的自注意力模块缺少跨窗口的连接这限制了它的模型能力。为了引入跨窗口连接同时保持对非重叠窗口的高效计算,我们提出了一个移动窗口分割方法,它能在连续的 Swin Transformer块中交替的使用两个分割配置。
    正如Figure 2所述,第一个模型用了一个规则的窗口分割策略,这个策略从左上的像素开始,8x8的特征图用4x4(M=4)窗口大小将其均匀分割成2 × 2。然后,下个模块采用从前一层移动的窗口配置,通过用规则分割窗口来取代现在的窗口的 ( ⌊ M 2 ⌋ , ⌊ M 2 ⌋ ) (\lfloor \frac{M}{2} \rfloor,\lfloor \frac{M}{2} \rfloor) (2M,2M)。在移动窗口分割方法下,连续的 Swin Transformer块计算方法如下: z ^ l = W M S A ( L N ( z l − 1 ) ) + z l − 1 , \quad\quad \hat z^l =\mathrm{WMSA}(\mathrm {LN(\mathrm z^{\mathscr l-1})})+\mathrm z^{l-1}, z^l=WMSA(LN(zl1))+zl1, z l = M L P ( L N ( z ^ l ) ) + z ^ l , z^l=\mathrm{MLP(LN(\hat z^\mathscr l))}+\hat z^\mathscr l, zl=MLP(LN(z^l))+z^l, z ^ l + 1 = S W M S A ( L N ( z l ) ) + z l , \quad\quad \hat z^{l+1} = \mathrm{SWMSA(LN(z^l))}+z^l, z^l+1=SWMSA(LN(zl))+zl, z l + 1 = M L P ( L N ( z ^ l + 1 ) ) + z ^ l + 1 , ( 3 ) \quad\quad\quad\quad\quad\quad z^{l+1} = \mathrm{MLP(LN(\hat z^{\mathscr l+1}))}+\hat z^{\mathscr l+1},\quad\quad\quad(3) zl+1=MLP(LN(z^l+1))+z^l+1,(3)其中, z ^ l \hat z^l z^l z l z^l zl分别表示 l l l块的 (S)W-MSA模块和 MLP模块的输出特征;W-MSA 和 SW-MSA分别表示使用规则的基于多头自注意力的窗口和移动窗口分割配置。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第4张图片
Figure 4 在移动窗口分割中对于自注意力的一个高效批量计算方法的说明。

    移动窗口分割方法将上一层中的相邻的非重叠窗口连接起来,并且发现这种方法在图片分类,物体检测,语义分割中是有效的。如表4所示。
对移动配置的高效批量计算 移动窗口分割的一个问题是:它将产生很多个窗口。在移动配置中从 ⌈ h M ⌉ × ⌈ w M ⌉ \lceil \frac{h}{M} \rceil\times\lceil \frac{w}{M} \rceil Mh×Mw ( ⌈ h M ⌉ + 1 ) × ( ⌈ w M ⌉ + 1 ) , (\lceil \frac{h}{M} \rceil+1)\times(\lceil \frac{w}{M} \rceil+1), (Mh+1)×(Mw+1)一些窗口可能会比 M × M M\times M M×M还小。一个天真的解决方法是把较小的窗口填充到 M × M M\times M M×M大小,当计算注意力的时候屏蔽填充值。当在规则的分割中的窗口数较少时例如2x2。用这个天真的方法增加的计算量是相当可观的(2x2变成3x3将变大2.25倍)。在这里,我们提出了一个更有效的批量计算方法:沿着左上方向循环移动。如 Figure 4所述。移动之后,一个批量窗口由在特征图中不相连的几个子窗口组成,屏蔽机制是用来限制在每个子窗口中的自注意力计算。随着循环移动,批量窗口的数量保持和规则的窗口分割的数量一样。因此也是高效的。这种方法的低延迟在Table 5中展示。
相对位置偏置 在计算自注意力的时候,在计算相似性时我们按照 [49, 1, 32, 33]让每个头都包含一个相对位置偏置 B ∈ R M 2 × M 2 B\in\Bbb R^{M^2\times M^2} BRM2×M2 A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T / d + B ) V , ( 4 ) \mathrm {Attention}(Q,K,V)=\mathrm {SoftMax}(QK^T/\sqrt d+B)V,\quad\quad\quad\quad(4) Attention(Q,K,V)=SoftMax(QKT/d +B)V(4)其中 Q , K , V ∈ R M 2 × d Q,K,V\in\Bbb R^{M^2\times d} QKVRM2×d是query, key 和 value矩阵,d是query/key个维度, M 2 M^2 M2是在一个窗口中的图像块个数。因为沿着每个轴的相对位置分布在 [-M + 1, M - 1]之间,我们的参数一个更小的偏置矩阵 B ^ ∈ R ( 2 M − 1 ) × ( 2 M − 1 ) \hat B\in\Bbb R^{(2M-1)\times(2M-1)} B^R(2M1)×(2M1),B的值来自 B ^ \hat B B^。与没有用偏置的或者使用绝对位置嵌入的方法相比我们方法能观察到巨大性能的提升,如Table 4所述。进一步的添加绝对位置嵌入到输入中就像 [20]那样做使得性能略降。因此在我们的实现中没有采用这种方法。

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, layer numbers = {2, 2, 6, 2}
  • Swin-S: C = 96, layer numbers ={2, 2, 18, 2}
  • Swin-B: C = 128, layer numbers ={2, 2, 18, 2}
  • Swin-L: C = 192, layer numbers ={2, 2, 18, 2}
    其中C是第一阶段中的隐藏层的通道数。模型大小,理论上的计算复杂度 (FLOPs),模型变体在ImageNet图片分类上的吞吐量是被列在了Table 1。
    Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第5张图片
    Table 1 在 ImageNet-1K分类数据集上对比不同的骨架网络。吞吐量的测量是按照 [63],并使用 [68]的 GitHub仓库,和一个V100 的GPU。

4、实验

    我们在 ImageNet-1K图片分类, COCO物体检测, ADE20K语义分割上做了实验。接下来,我们首先在上述三个任务中对比我们的 Swin Transformer和以前最好的模型。然后,我们剖析了 Swin Transformer的重要设计元素。

4.1、在ImageNet-1K上进行图片分类

设置 对于图片分类,我们以所提的Swin Transformer在 ImageNet-1K上为基准。 ImageNet-1K包含来自1000个类别的128万个训练图片,和5万张验证图片。top-1精度在一次裁切上已经报道过了,我们考虑两个训练设置。

  • 通常的ImageNet-1K训练,这个设置绝大部分是遵循 [63]。我们用了AdamW优化器进行了300轮训练并使用 cosine衰减学习率调度器,前20轮进行了预热。批量大小为1024,初始化学习率为 0.001,0.05的权重衰退。我们在训练的是时候用了 [63]中的绝大多数数据增强和正则化策略。除了与在 [31]中重复的数据增强操作和 [45]中的EMA,这些没有带来性能提升。注意这点和 [63]相反,在 [63]中重复的数据增强对ViT的稳定训练是至关重要的。
  • 在ImageNet-22K上预训练并且在ImageNet-1K微调。我们也在更大的ImageNet-22K数据集上进行预训练,ImageNet-22K数据集包含1420万图片和2.2万个类别。我们用了AdamW优化器进行90轮训练,用了一个线性学习率衰减调度算器,前五轮进行了预热训练。批量大小4096,初始化学习率为0.001,权重衰退为 0.01。在 ImageNet-1K上进行微调,我们训练模型用了30轮,批量大小为1024,一个固定学习率 1 0 − 5 10^{-5} 105,权重衰退为 1 0 − 8 10^{-8} 108

在常规的 ImageNet-1K上训练的结果 在Table 1(a)上展示了使用常规的ImageNet-1K上训练后的结果和其他骨干网络的对比,包括基于Transformer的,基于ConvNet。
    与以前基于Transformer的最好的架构比如DeiT对比, Swin Transformers在相同的复杂度下,大幅超越了 DeiT:使用 22 4 2 224^2 2242的输入 Swin-T (81.3%)比DeiT-S (79.8%)高了1.5%,使用 22 4 2 / 38 4 2 224^2/384^2 2242/3842的输入 Swin-B (83.3%/84.5%)比 DeiT-B (81.8%/83.1%)分别高了1.5%/1.4%。
    与目前最好的卷积网络比如:RegNet和 EfficientNet相比,Swin Transformer在速度和精度权衡上稍好。注意,尽管RegNet 和 EfficientNet是通过全架构搜索得到的,但是我们所提出的Swin Transformer是从标准Transformer中修改得到的。它拥有很大的进一步改进的潜力。
在 ImageNet-22K上预训练的结果 我们也在ImageNet-22K上预训练大容量的 Swin-B 和 Swin-L。在 ImageNet-1K图片分类上进行微调,如 Table 1(b)所述。对于Swin-B,在ImageNet-22K上从头开始预训练的结果要比在 ImageNet-1K上从头训练的结果高 1.8%∼1.9%。与以前在 ImageNet-22K最好的训练结果相比,我们的模型在速度和精度权衡上要好的多。Swin-B在相近的推理吞吐量(84.7
vs. 85.9 images/sec)和略低的FLOPs (47.0G vs.55.4G)下获得了 86.4%的 top-1精度,这比ViT高了 2.4%。更大的 Swin-L模型达到了 87.3% top-1精度,比 Swin-B模型高了 0.9%。

4.2、在CoCo上的物体检测

设置 物体检测和实例分割是在 COCO 2017上做的。COCO 2017包含11.8万个训练样本,5千个验证图片,2万个测试图片。使用验证集进行消融研究,在测试数据集上做了一个系统级别的对比。对于消融实验,我们考虑用4个经典的目标检测框架: mmdetection中的 Cascade Mask R-CNN, ATSS, RepPoints v2, 和 Sparse RCNN。对于这四个框架,我们统一使用相同的设置:多尺度训练(将较短的边长度缩放在 480 和 800之间,同时较长的一边为1333),AdamW优化器( 0.0001的初始化学习率, 0.05的权重衰退,批量大小为16),3成的调度(36轮)。对于系统级别的比较,我们采用了一个改良的 HTC(命名为HTC++),具有 instaboost [22],更强的多尺度训练,6x的调度(72轮),soft-NMS,用ImageNet-22K预训练模型作为初始化。
    我们把我们的 Swin Transformer和标准的卷积网络例如:ResNe(X)t和以前的Transformer网络比如:DeiT做对比。比较是只改变骨架,其他参数不变。虽然Swin-Transformer和ResNe(X)t由于其分层特征图而直接适用于上述所有框架,但DeiT只生成单分辨率的特征图,不能直接应用。为了公平对比,我们按照 [81]使用反卷积层为DeiT构造分层特征图。

Table 2 在 COCO上的物体检测和实例分割的结果。 † \dagger 表示添加的反卷积层是用来生成分层的特征图的。 ∗ \ast 表示多尺度测试。

与 ResNe(X)t对比 Table 2(a)列出来了Swin-T和 ResNet-50在四个目标检测框架上的结果,我们的Swin-T在模型大小,FLOPs和延迟稍高的情况下,我们的box AP比 ResNet-50高了3.4∼4.2。
    Table 2(b)上展示了 Swin Transformer 和 ResNe(X)t使用 Cascade Mask R-CNN在不同的模型容量下的对比结果。 Swin Transformer达到了51.9 box AP 和 45.0 mask AP的高检测精度。在相同的模型大小,FLOPs和浮点计算量下,它比ResNeXt101-64x4d有显著的提升 +3.6 box AP and +3.3 mask AP。用一个改进的HTC框架在更高的52.3 box AP and 46.0 mask AP基准下, Swin Transformer带来的增益也是很高的,增加了4.1 box AP 和 3.1 mask AP(见Table 2©)。根据推理速度,尽管而ResNe(X)t是由高度优化的Cudnn函数构建的,我们的架构是由PyTorch实现的,并没有得到很好的优化。一个全局的核优化超出了本篇论文的范围。
与 DeiT对比 在Table 2(b)上展示了用 Cascade Mask R-CNN框架的DeiT-S的性能。Swin-T的结果比DeiT-S高2.5 box AP 和 2.3 mask AP,在相近的模型大小 (86M vs. 80M)和更高的推理速度下 (15.3 FPS vs. 10.4 FPS)。DeiT的推理速度较低的原因是复杂度和图片大小呈平方关系。
与 以前最好的模型对比 Table 2©显示的是与以前最好的模型进行的对比。我们的最好模型在 COCO test-dev上达到了58.7 box AP 和 51.1 mask AP,比以前最好的结果高了2.7 box AP和 2.6 mask AP。

4.3、在ADE20K上做语义分割

设置 ADE20K是被广泛用于做语义分割的数据集。涵盖150个语义类别。它总共包含2万5千个图片,2万个图片用来训练,2千个图片做验证,另外3千个图片做测试。我们利用mmseg中的SuperNet作为我们的基础框架,因为他们的高效性。更多细节看附录。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第6张图片
Table 3 语义分割在 ADE20K验证集和测试集上的结果。 † \dagger 表示添加的反卷积层是用来生成分层的特征图的。 ‡ \ddagger 表示模型在ImageNet-22K上预训练

结果 Table 3列出了不同方法/骨架对的mIoU,模型大小,FLOPs和 FPS。从这些结果中,可以看出来 Swin-S在相同的计算代价下比 DeiT-S高5.3 mIoU(49.3 vs. 44.0),比ResNet-101高4.4 mIoU,比ResNeSt-101高2.4 mIoU。我们的Swin-L模型在ImageNet-22K上预训练,在验证集上达到了53.5 mIoU,比之前最好的模型高3.2 mIoU(50.3 mIoU由SETR创造的,它拥有更大的模型大小)。

4.4、消融研究

    在这部分,我们对所提的Swin Transformer中的重要设计元素做消融实验,使用ImageNet-1K图片分类数据集, Cascade Mask R-CNN在 COCO上做物体检测,UperNet在ADE20K上做语义分割。

Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第7张图片
Table 4 移动窗口方法和不同位置嵌入方法在三个基准模型上的消融实验,使用的是 Swin-T架构。w/o shifting:所有的自注意力模块采用规则的窗口分割,没有移位。abs. pos:ViT中的绝对位置嵌入。rel. pos:默认设置,使用了一个相对位置偏置。app.:在等式4中的第一个比例点积。

移动窗口 在三个任务上的移动窗口方法的消融实验在 Table 4.。带有移动窗口分割的Swin-T在每个阶段都胜过了与之对应的单窗口分割模型。在 ImageNet-1K top-1精度高了1.1%,在CoCo上高了2.8 box AP/2.2 mask AP,在 ADE20K上高了2.8 mIoU。结果表明使用移动窗口让以前层中的窗口建立联系的高效性。头上的延迟通过使用移动窗口也变小了。如表5所示。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第8张图片
Table 5 在V100 GPU上的不同自注意力计算方法和实现的真实速度。

相对位置偏置 Table 4显示了不同位置嵌入方法的对比。Swin-T使用相对位置偏置比没有使用位置偏置或者使用绝对位置偏置的在ImageNet-1K上的 top-1精度高了1.2%/0.8%,在 COCO上高了1.3/1.5 box AP 和 1.1/1.3 mask AP,在 ADE20K上高了2.3/2.9 mIoU,表明了使用相对位置偏置的高效性。也说明了尽管绝对位置偏置提高了图片分类的精度但是它却让目标检测和语义分割降低了(在CoCo上降低0.2 box/mask AP,在ADE20K上降低0.6 mIoU)
    虽然最近的ViT/DeiT模型放弃了图像分类中的平移不变性,尽管平移不变性长期以来被证明对视觉建模至关重要,但是我们发现对于通用视觉建模来说某些平移不变性的归纳偏差仍然是可取的,尤其是对于目标检测和物体分割的密集型预测任务。
Swin Transformer翻译 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows翻译_第9张图片
Table 6 在三个基准数据集上用不同的方法进行自注意力的计算 Swin Transformer的精度。

不同的自注意力方法 在表五中显示不同自注意力计算方法和实现的真实速度的对比。我们的循环实现方法比填充方法在硬件上更高效。尤其是在更深的阶段。总的来说,在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, and Swin-B构建的滑动窗口变体分别快了4.1/1.5, 4.0/1.5, 3.6/1.5 倍。表6是三个任务上的精度对比。表明在视觉建模中他们的精度相似。
    与 Performer进行对比,Performer是基于Transformer架构的最快的模型中的一个。所提出的基于移动窗口的自注意计算和整体Swin-Transformer架构的速度稍快。使用 Swin-T在 ImageNet-1K数据集上比Performer高了2.3% 的top-1精度。

5、结论

    本篇论文介绍了 Swin Transformer,一个新的vision Transformer,它具有分层特征表示,与输入图片大小呈线性计算复杂度。 Swin Transformer在 COCO的目标检测和ADE20K的语义分割上达到了最好的性能。显著的超过了以前最好的模型。我们希望Swin Transformer在很多视觉问题中的很强的性能表现能推动视觉与语言联合建模的发展(多模态)。
    移动窗口作为Swin Transformer的关键元素,基于自注意力的移动窗口在视觉问题中已经展现出了它的有效性和高效性。我们也期待着将它用在自然语言处理中也一样的好。

感谢

    我们感谢微软的很多同事的帮助,尤其是 Li Dong 和 Furu Wei 的很有帮助的讨论。Bin Xiao, Lu Yuan 和 Lei Zhang在数据集上的帮助。

你可能感兴趣的:(学术论文,transformer,深度学习,人工智能)