论文精读:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Abstract

        本文提出了一种新的vision Transformer,称为Swin Transformer,它能够作为计算机视觉的通用骨干网络。从语言到视觉的挑战来自于这两个领域之间的差异,比如视觉实体规模的变化很大,以及图像中像素比文本中单词的高分辨率。为了解决这些差异,我们提出了一个分层Transformer,其表示是由Shifted windows计算的。Shifted windows方案将自注意计算限制在非重叠的局部窗口上,同时允许跨窗口连接,从而提高了更高的效率。这种层次结构具有在不同尺度上建模的灵活性,并且对图像大小具有线性的计算复杂度。 Swin Transformer的这些品质使其兼容广泛的视觉任务,包括图像分类(87.3top-1 ImageNet-1K)和密集的预测任务,如目标检测(58.7box AP和51.1mask AP可测试开发)和语义分割(53.5mIoU 在ADE20K验证集)。它的性能大大超过了之前的先进技术,即COCO上的+2.7boxAP和+2.6mask AP,以及ADE20K上的+3.2mIoU,展示了基于Transformer的模型作为视觉骨干的潜力。分层设计和Shifted windows方法也被证明对全MLP架构是有益的。这些代码和模型可以在https://github.com/microsoft/Swin-Transformer.

1. Introduction  

        计算机视觉中的建模长期以来一直由卷积神经网络(CNNs)所主导。从AlexNet[39]和它在ImageNet图像分类挑战上的革命性性能开始,CNN架构通过更大规模的[30,76]、更广泛的连接[34]和更复杂的卷积[70,18,84]形式变得越来越强大。随着cnn作为各种视觉任务的骨干网络,这些架构上的进步导致了性能的改进,并广泛地提升了整个领域。

        另一方面,自然语言处理(NLP)中网络体系结构的发展采取了不同的道路,今天流行的体系结构是Transformer。为序列建模和转导任务而设计,Transformer以其对数据中的长期依赖进行建模而闻名。它在语言领域的巨大成功使研究人员研究了其对计算机视觉的适应性,最近它在某些任务上显示出了有希望的结果,特别是图像分类[20]和联合视觉语言建模[47]。 

         

        在本文中,我们试图扩大Transformer的适用性,使它可以作为计算机视觉的通用主干,就像它在NLP和cnn在视觉中所做的那样。我们观察到,将其在语言领域的高性能转移到视觉领域的重大挑战可以用两种模式之间的差异来解释。其中一个差异涉及到规模。与在语言Transformer中作为处理的基本元素的单词标记不同,视觉元素在尺度上可以有很大的变化,这是一个在对象检测[42,53,54]等任务中引起注意的问题。在现有的基于Transformer的模型[64,20]中tokens都是固定规模的,不适合这些视觉应用。另一个区别是图像中像素的分辨率比文本中的文字要高得多。存在许多视觉任务,如语义分割,需要在像素级进行密集预测,这对于高分辨率图像上的Transformer是难以处理的,因为其自注意力的计算复杂度与图像大小是二次的。为了克服这些问题,我们提出了一种通用的Transformer主干,称为SwinTransformer它构造层次特征映射,并对图像大小具有线性计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的patch(灰色轮廓)开始,并在更深的Transformer层中逐渐合并相邻的patch来构建一个层次表示。有了这些层次的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)[42]或U-Net[51]。线性计算复杂度是通过在对图像进行分割的窗口(用红色表示)的非重叠窗口内局部计算自注意力来实现的。每个窗口中的patch数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用骨干,而以前基于Transformer的架构[20],它产生单一分辨率的特征图,具有二次复杂度。

        Swin Transformer的一个关键设计元素是它在连续的自注意层之间的窗口分区的位移,如图2所示。移动后的窗口连接了前一层的窗口,提供了它们之间的连接,显著提高了建模能力(见表4)。这种策略对于现实世界的延迟也很有效:窗口内的所有query patches共享相同的key set,这有助于硬件中的内存访问。相比之下,早期基于滑动窗口的自注意方法[33,50]由于不同query像素2的keys不同,在一般硬件上存在较低的延迟。我们的实验表明,所提出的移位窗口方法比滑动窗口方法的延迟要低得多,但在建模能力上却很相似(见表5和表6)。shifted window方法也证明对所有MLP架构[61]都是有益的

        

       该Swin Transformer在图像分类、目标检测和语义分割等识别任务上取得了较好的性能。它在三个任务上显著优于ViT/DeiT[20,63]和ResNe(X)t模型[30,70],并且在三个任务上具有相似的延迟期。它在COCO测试集上的58.7 boxAP和51.1 maskAP超过了之前由+2.7 boxAP(没有外部数据的Copy-paste[26])和+2.6maskAP(DetectoRS[46])得到的最先进的结果。在ADE20K语义分割上,它在val集上获得了53.5 mIoU,比之前的+(SETR[81])改进了3.2mIoU。它在ImageNet-1K图像分类上也达到了87.3%的top-1位精度。 

         我们相信,跨计算机视觉和自然语言处理的统一架构可以有利于这两个领域,因为它将促进视觉和文本信号的联合建模,而来自这两个领域的建模知识可以更深入地共享。我们希望Swin Transformer在各种视觉问题上的出色表现能够在社区中加深这种信念,并鼓励视觉和语言信号的统一建模。

2. Related Work         

        CNN and variants cnn作为整个计算机视觉的标准网络模型。虽然CNN已经存在了几十年,但直到AlexNet[39]的引入,CNN才成为主流。从那时起,更深层次、更有效的卷积神经结构被提出来进一步推动计算机视觉中的深度学习浪潮,如VGG[52]、GoogleNet[57]、ResNet[30]、DenseNet[34]、HRNet[65]和EffificientNet[58]。除了这些架构上的进步之外,还有许多改进个体卷积层的工作,如深度卷积[70]和可变形卷积[18,84]。虽然CNN及其变体仍然是计算机视觉应用程序的主要主干架构,但我们强调了类似变压器的架构在视觉和语言之间的统一建模方面的强大潜力。我们的工作在几个基本的视觉识别任务上取得了强大的表现,我们希望它将有助于建模的转变。 

        Self-attention based backbone architectures  同样受到自注意层和transformer架构在自然语言处理领域的成功的启发,一些作品采用自注意层来取代流行的ResNet[33,50,80]中的部分或全部空间卷积层。在这些工作中,自注意力在每个像素的局部窗口内计算,以加快优化[33],它们比对应的ResNet架构获得了略微更好的精度/FLOPs权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络[33]。我们建议使用滑动窗口,我们建议在连续层之间移动窗口,这允许在一般硬件中更有效地实现。 

        Self-attention/Transformers to complement CNNs  另一项工作是用自我注意层或Transformers来增强标准的CNN架构。自注意层可以通过提供编码远程依赖或异构交互的能力来补充主干[67,7,3,71,23,74,55]或头部网络[32,27]。近年来,Transformers中的编解码器设计已被应用于目标检测和实例分割任务[8,13,85,56]。我们的工作探索了Transformers的基本视觉特征提取,是这些作品的补充。

        Transformer based vision backbones    与我们的工作最相关的是Vision Transformer (ViT)及其后续的[63,72,15,28,66]。ViT的开创性工作直接将Transformer架构应用于不重叠的中型图像patch上进行图像分类。与卷积网络相比,它在图像分类上取得了令人印象深刻的速度-精度权衡。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT[63]引入了几种训练策略,使ViT也能够有效地使用较小的ImageNet-1K数据集。生活在图像分类的结果是令人鼓舞的,但其架构不适合作为通用骨干网络密集视觉任务或输入图像分辨率高,由于其低分辨率的特征地图和图像大小的二次增加复杂性。目前已有一些研究将ViT模型通过直接上采样或反卷积应用于目标检测和语义分割的密集视觉任务,但[2,81]性能相对较低。与我们的工作同时,有一些修改了ViT架构[72,15,28],以更好的图像分类。根据经验,我们发现我们的Swin Transformer 架构在这些关于图像分类的方法中实现了最佳的速度精度权衡,尽管我们的工作集中于通用性能,而不是特别的分类。另一个同时进行的工作,[66]探索了类似的思路,在Transformer 上构建多分辨率的特征地图。它的复杂度仍然是图像大小的二次型,而我们的复杂性是线性的,并且也在局部工作,这已被证明有利于建模视觉信号[36,25,41]的高相关性。我们的方法既高效又有效,在COCO目标检测和ADE20K语义分割上都实现了最先进的准确性。

3. Method        

3.1. Overall Architecture         

        图3显示了Swin  架构的概述,它说明了一个小版本(SwinT)。它首先通过一个patch分割模块将一个输入的RGB图像分割成不重叠的补丁,比如ViT。每个patch都被视为一个“token”,其特性被设置为原始像素RGB值的连接。在我们的实现中,我们使用了4×4的patch大小,因此每个patch的特征维度是4×4×3=48。在这个原始值特征上应用一个线性embeding层,将其投射到一个任意维度(记为C)。 

        在这些patch tokens上应用了几个具有改进的自注意计算的变压器块(Swin Transformer块)。Transformer块保持了tokens的数量(H/4×W/4),并与线性embeding一起被称为“阶段1”。

         为了生成层次表示,随着网络的深入,patch合并层就减少了标记的数量。第一个patch合并层将每一组2×2个相邻patch的特征连接起来,并在4c维连接的特征上应用一个线性层。这将token的数量减少了2×2=4的倍数(2×分辨率的降采样),输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持在H/8×W/8。这个patch合并和特征转换的第一个块被表示为“阶段2”。该过程重复两次,如“阶段3”和“阶段4”,输出分辨率分别为H/16×W/16和H/32×W/32。这些阶段共同产生了一个与典型的卷积网络具有相同的特征图分辨率的层次表示,例如,VGG[52]和ResNet[30]。因此,所提出的架构可以方便地取代现有方法中的各种视觉任务。

                 Swin Transformer block  Swin Transformer是通过将Transformer块中的标准多头自注意(MSA)模块替换为基于移动窗口的模块(见第3.2节),其他层保持不变。如图3(b)所示,一个SwinTransformer块由一个基于移位窗口的MSA模块组成,然后是一个中间具有GELU非线性的2层MLP。在每个MSA模块和每个MLP之前应用一个LayerNorm(LN)层,在每个模块之后应用一个残差连接。

3.2. Shifted Window based Self-Attention         

        标准的Transformer 体系结构[64]及其对图像分类[20]的适应都进行全局自关注,其中一个token和所有其他token之间的关系被计算。全局计算导致了关于标记数量的二次复杂度,这使得它不适合许多需要大量标记来进行密集预测或表示高分辨率图像的视觉问题。 

         Self-attention in non-overlapped windows  为了有效地建模,我们建议在局部窗口内计算自注意。这些窗口被安排成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M patch,则一个全局MSA模块和一个基于h×w patchs图像的窗口的计算复杂度为

        其中,前者与patches数hw之间为二次型,当M固定(默认设置为7)时,后者为线性型。全局自注意计算对于一个大的hw通常是不可承受的,而基于窗口的自注意计算是可扩展的。 

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

        如图2所示,第一个模块使用规则的窗口划分策略,从左上角的像素开始,8×8特征映射均匀地划分为2个窗口,大小为4×4(M=4)。然后,下一个模块采用一个窗口配置,从前一层的窗口中,替换窗口像素。采用移位窗口划分方法,连续的Swin Transformer计算为 :

        

        其中,\hat z^{l}z^{l}分别表示(S)的WMSA模块和MLP模块的输出特征;W-MSA和SW-MSA分别表示基于规则的窗口分区配置和移位的多头自注意力。 移位窗口划分方法在上一层中引入了相邻的非重叠窗口之间的连接,在图像分类、目标检测和语义分割等方面都是有效的,如表4所示。

         Effificient batch computation for shifted confifiguration  移位窗口分区的一个问题是,它将导致更多的窗口,从移位配置中的,并且一些窗口将小于M×M。一个简单的解决方案是将较小的窗口填充到M×M的大小,并在计算注意力时屏蔽填充的值。当常规分区中的窗口数量很小时,例如2×2,使用这个简单的解决方案增加的计算量相当大(2×2→3×3,是原来的2.25倍)。在这里,我们提出了一种更有效的批处理计算方法,即向左上角的方向循环移动,如图4所示。在此转移之后,批处理窗口可能由几个在特征图中不相邻的子窗口组成,因此使用mask机制将自注意计算限制在每个子窗口内。通过循环位移,批处理窗口的数量保持在与常规窗口划分的数量相同,因此也是有效的。这种方法的低延迟如表5所示。

        Relative position bias 在计算自我注意时,我们遵循[49,1,32,33],在计算相似度中对每个头部包含一个相对位置偏差 

        

        其中,query, key矩阵和value矩阵;d为query/key维度,M2为窗口中的patch数。由于沿每个轴的相对位置在范围内[−M+1,M−1],我们参数化了一个较小的偏置矩阵,B中的值取自Bˆ。 

        我们观察到,与没有这个偏差项或使用绝对位置embeding的同行相比,有显著的改进,如表4所示。在[20]中进一步添加绝对位置embeding会略微降低性能,因此在我们的实现中没有采用它。 

         在预训练中学习到的相对位置偏差也可以通过双立方插值[20,63]来初始化一个具有不同窗口大小的微调模型。

3.3. Architecture Variants        

        我们建立了我们的基本模型,称为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。在所有实验中,每个head的query维度为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是第一阶段的隐藏层的通道数。表1列出了用于ImageNet图像分类的模型变量的模型大小、理论计算复杂度(FLOPs)和吞吐量。 

4. Experiments

        我们对ImageNet-1K图像分类[19]、COCO目标检测[43]和ADE20K语义分割[83]进行了实验。在下面,我们首先将提出的Swin Transformer架构与之前的三个技术进行比较。然后,我们消除了Swin Transformer的重要设计元素。

4.1. Image Classifification on ImageNet-1K 

        对于图像分类的设置,我们在ImageNet-1K[19]上对所提出的Swin Transformer进行了基准测试,它包含来自1000个类的1.28M训练图像和50K验证图像。报告了单一crop的最高精度。我们考虑了两种训练设置: 

  • 常规ImageNet-1K训练。这个设置主要遵循[63]的原则。我们使用一个AdamW[37]优化器为300个周期使用余弦衰减学习率调度器和20个周期的线性预热。使用的批处理大小为1024,初始学习率为0.001,权重衰减为0.05。我们在训练中包括了大多数[63]的增强和正则化策略,除了重复的增强[31]和EMA[45],它们并没有提高性能。请注意,这与[63]相反,在[63]中,重复增强对稳定ViT的训练至关重要。
  • ImageNet-22K的预训练和ImageNet-1K的微调。我们还在更大的ImageNet-22K数据集上进行了预训练,其中包含1420万张图像和22K类。我们使用了一个AdamW优化器为90个epochs,使用一个线性衰减学习率调度器与5个epoch的线性热身。使用的批量大小为4096,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K微调中,我们对模型训练为30个epoch,批大小为1024,恒定的学习速率为10−5,权重衰减为10−8。

        Results with regular ImageNet-1K training  表1(a)显示了与其他骨干的比较,包括基于transformer的和基于convnet的,使用常规的ImageNet-1K训练。 与之前最先进的基于transformer的架构,即DeiT[63]相比,Swin Transformer明显超过了类似的复杂架构:使用224**2输入的SwinT-T+1.5%(81.3%)(79.8%),使用224**2/384**2输入的Swin-B+1.5%/1.4%使用2242/3842输入(83.3%/84.5%)。

        与最先进的ConvNets,即RegNet[48]和EffificientNet[58]相比,Swin Transformer实现了一个稍微更好的速度-精度权衡。需要注意的是,虽然RegNet[48]和EffificientNet[58]是通过彻底的架构搜索获得的,但所提出的Swin Transformer是由标准transformer改编而来的,具有很强的进一步改进潜力。

         Results with ImageNet-22K pre-training  我们还在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精度,比类似的推理吞吐量(84.7/85.9vs.图像/秒),略低的FLOPs(47.0G/55.4G)高2.4%。较大的Swin-L模型达到87.3%的top-1精度,+比Swin-B模型高0.9%。

         

4.2. Object Detection on COCO  

        Settings  在COCO2017上进行了对象检测和实例分割实验,其中包含118K训练、5K验证和20K测试开发图像。使用验证集进行了消融研究,并对测试开发报告了系统级比较。在消融研究中,我们考虑了四种典型的目标检测框架:Cascade Mask R-CNN [29,6]、ATSS[79]、RepPoints v2[12]和mmdetection[10]中的Sparse RCNN[56]。对于这四个框架,我们使用相同的设置:多尺度训练[8,56](调整输入,这样短的一面在480和800之间,而长的一面最多1333),AdamW优化器(初始学习率0.0001,权重衰减0.05,和批大小16),和3x时间表(36时代)。对于系统级的比较,我们采用改进的HTC[9](记为HTC++),包括初始[22]、更强的多尺度训练[7]、6x时间表(72个epoch)、soft-NMS[5]和ImageNet-22K预训练模型作为初始化。 

        我们将我们的Swin Transformer与标准的卷积网络进行比较,即ResNe(X)t,以及以前的Transformer网络,如DeiT。比较是通过只改变主干来进行的。请注意,虽然Swin Transformer和ResNe(X)t由于它们的层次特征图,直接适用于上述所有框架,但DeiT只产生单一的特征图分辨率,不能直接应用。为了公平的比较,我们遵循[81],使用反卷积层构建DeiT的层次特征图。 

         

        Comparison to ResNe(X)t  表2(a)列出了Swin-T和ResNet-50在四个目标检测框架上的结果。与ResNet-50相比,我们的Swin-T  带来了一致的+3.4∼4.2boxAP收益,模型大小、流量和延迟略大。 

         表2(b)使用Swin Transformer比较了不同模型容量下的Swin transformer和ResNe(X)t。transformer实现了51.9boxAP和45.0maskAP的高检测精度,+3.6boxAP和+3.3maskAP显著高于ResNeXt 101-64x4d,具有相似的模型大小、流量和延迟。在使用改进的HTC框架的52.3的boxAP和46.0的mask AP的更高baseline上,+4.1的boxAP的增益也很高,+3.1的mask AP(见表2(c))。关于推理速度,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的架构是用内置的PyTorch函数实现的,这些函数并不是都经过了很好的优化。一个彻底的核优化超出了本文的范围。

        Comparison to DeiT 使用Cascade Mask R-CNN框架的DeiT-S的性能如表2(b).所示Swin-T的结果是+2.5boxAP和+2.3mask P高于DeiT-S,模型大小相似(86M vs.80M),且显著高于推理速度(15.3FPSvs.10.4FPS)。DeiT的推理速度较低,主要是由于它对输入图像大小的二次复杂度。

        

 Comparison to previous state-of-the-art  表2(c)将我们的最佳结果与以前最先进的模型进行了比较。我们的最佳模型在COCO测试开发集上达到了58.7boxAP和51.1maskAP,超过了之前+2.7boxAP(没有外部数据的Copy-paste[26])和+2.6mask AP(检测器[46])的最佳结果。

4.3. Semantic Segmentation on ADE20K

        Settings  ADE20K[83]是一个被广泛使用的语义分割数据集,涵盖了150个语义类别。它总共有25K张图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mmseg[16]中的UperNet[69]作为其高效的基础框架。更多的细节见附录。 

        Results  表3列出了不同方法/主干对的mIoU、模型大小(#param)、FLOPs和FPS。从这些结果可以看出,Swin-S的+比DeiT-S高5.3mIoU(49.3比44.0)。+4.4mIoU高于ResNet-101,+2.4mIoU高于ResNeSt-101[78]。我们使用ImineNet-22K预训练的Swin-L模型在val集上达到53.5 mIoU,超过了之前+3.2mIoU的最佳模型(SETR[81]的50.3mIoU,具有更大的模型尺寸)。

4.4. Ablation Study          

         在本节中,我们使用ImageNet-1K图像分类、COCO目标检测, Cascade Mask R-CNN和UperNet  ADE20K语义分割,消除了提出的Swin Transformer中的重要设计元素。

        Shifted windows  表4报告了在这三个任务上的移位窗口方法的消融情况。移位窗口划分的Swin-T在每个阶段比单个窗口划分上的性能在ImageNet-1K上的为+1.1%,COCO上的+2.8 boxAP/+2.2  maskAP和ADE20K上的+2.8mIoU。结果表明,使用移动的窗口在前几层的窗口之间建立连接是有效的。通过移位窗口产生的延迟开销也很小,如表5所示。 

         

        Relative position bias  表4显示了不同位置embeding方法的比较。那些没有位置编码和绝对位置embeding分别相比,Swin-T与相对位置偏差收益率+1.2%/+0.8%top-1精度在ImageNet-1K数据集上,+1.3/+1.5 boxAP  +1.1/+1.3 mask AP在COCO数据集上,和+2.3/+2.9 mIoU在ADE20K数据集上,还需要注意的是,虽然包含绝对位置embeding提高了图像分类精度(+0.4%),但它损害了目标检测和语义分割(COCO的-0.2box/maskAP和ADE20K的-0.6mIoU)。         

        虽然最近的ViT/DeiT模型放弃翻译不变性在图像分类,尽管它长期以来一直被证明是至关重要的视觉建模,我们发现归纳偏差,鼓励某些翻译不变性仍然适合通用视觉建模,特别是预测任务密集的目标检测和语义分割。 

        Different self-attention methods   表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]),提出了基于窗口的自我注意计算和整体双transformer架构略快(见表5),同时实现+2.3%的top-1精度相比Performer ImaneNet-1k使用Swin-T(见表6)。 

5. Conclusion         

        本文提出了一种新的视觉tranformer Swin tranformer,它可以产生一种分层的特征表示方法,并且对输入图像的大小具有线性的计算复杂度。Swin tranformer在COCO目标检测和ADE20K语义分割方面取得了最先进的性能,明显超过了以往的最佳方法。我们希望Swin  tranformer在各种视觉问题上的强大性能将鼓励视觉和语言信号的统一建模。 

        基于移动窗口的自注意作为Swin Transformer的一个关键元素,对视觉问题是有效的,并期待研究其在自然语言处理中的应用。 

A1. Detailed Architectures

         详细的体系结构规范如表7所示,其中假设所有体系结构的输入图像大小为224×224。“Concatn×n”表示一个patch个相邻特征的串联。此操作导致特征图的降采样率为n。“96-d”表示输出维数为96的线性层。赢sz.7×7”表示一个多头自注意模块,窗口大小为7×7。

A2. Detailed Experimental Settings  

A2.1. Image classifification on ImageNet-1K          

        图像分类是通过在最后一阶段的输出特征图上应用全局平均池化层,然后使用线性分类器来进行的。我们发现这种策略与使用ViT[20]和DeiT[63]中使用额外的类token一样准确。在评估中,报告了使用单一作物的top-1个准确性。 

        Regular ImageNet-1K training  训练设置主要遵循[63]的原则。对于所有的模型变体,我们采用默认的输入图像分辨率为224**2。对于其他分辨率,如384**2,我们对以224**2分辨率训练的模型进行微调,而不是从头开始训练,以减少GPU消耗。        

        当使用224**2输入从头开始训练时,我们使用一个300个周期的[37][37]优化器,使用20个线性热身的余弦衰减学习率调度器。使用的批大小为1024,初始学习率为0.001,权重衰减为0.05,以及最大范数为1的梯度裁剪。我们在训练中包括了大多数[63]的增强和正则化策略,包括随机增强[17]、Mixup[77]、Cutmix[75]、随机擦除[82]和随机深度[35],但没有重复增强[31]和指数移动平均(EMA)[45]。请注意,这与[63]相反,在[63]中,重复增强对稳定ViT的训练至关重要。对于较大的模型,采用越来越程度的随机深度增强,即Swin-T、Swin-S和Swin-B分别为0.2、0.3、0.5。 

        对于更大分辨率的输入进行微调,我们使用adamW[37]优化器为30个epochs,学习速率为10**−5,权重衰减为10**−8,以及与第一阶段相同的数据增强和正则化,除了将随机深度比设置为0.1 

        ImageNet-22K pre-training  我们还在更大的ImageNet-22K数据集上进行了预训练,其中包含1420万张图像和22K类。训练分为两个阶段进行。对于有224**2个输入的第一阶段,我们使用了一个针对90个epochs的AdamW优化器,使用了一个具有5个epochs线性热身的线性衰减学习率调度器。使用的批处理大小为4096,初始学习率为0.001,权重衰减为0.01。在使用224**2/384**2输入的ImageNet-1K微调的第二阶段,我们训练模型为30个epoch,批处理大小为1024,恒定的学习速率为10−5,权重衰减为10−8。 

A2.2. Object detection on COCO         

        在消融研究中,我们考虑了四种典型的目标检测框架:Cascade Mask R-CNN [29,6]、ATSS[79]、RepPoints v2[12]和Sparse RCNN[56]。对于这四个框架,我们利用相同的设置:多尺度训练[8,56](调整输入,这样短的一面在480和800之间,而长的一面最多1333),AdamW[44]优化器(初始学习率0.0001,批大小16),和3x时间表(36epochs学习率衰减10×在27和33epochs)。 

        系统级比较,我们采用一个改进HTC[9](表示HTC++)初始[22],更强的多规模训练[7](调整输入,这样短的一面在400和1400之间,最多1600),6x时间表(72 epochs学习率衰减时代63和69的0.1倍),soft-NMS[5],一个额外的全局自我注意层附加在最后阶段的输出和ImageNet-22K预训练模型作为初始化。对于所有的Swin transformer模型,我们都采用了比值为0.2的随机深度。

         

A2.3. Semantic segmentation on ADE20K         

        ADE20K[83]是一个被广泛使用的语义分割数据集,涵盖了150个语义类别。它总共有25K张图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mm分割[16]中的UperNet[69]作为我们的基础框架,以实现其高效率。

        在训练中,我们使用了AdamW[44]优化器,初始学习速率为6×10**−5,权重衰减为0.01,使用线性学习速率衰减的调度器,以及1500次迭代的线性预热。模型在8个GPU上进行训练,每个GPU有2张图像,迭代160K。对于增强,我们在随机水平翻转、比例范围内[0.5,2.0]的随机重新缩放和随机光度失真中采用默认设置。所有Swin  Transformer模型均采用比值为0.2的随机深度。Swin-T,Swin-S在标准设置上进行训练,输入512×512。Swin-B和Swin-L表明,这两个模型在ImageNet-22K上进行了预训练,并以640×640的输入进行了训练。 

        在推理中,采用了一个多尺度测试,使用的分辨率为[0.5、0.75、1.0、1.25、1.25、1.5,1.75]×的训练。在报告测试分数时,训练图像和验证图像都用于训练,遵循常用的实践[71]。

A3. More Experiments 

A3.1. Image classifification with different input size 

        表8列出了从224**2到384**2的不同输入图像大小的Swin  Transformer的性能。一般来说,更大的输入分辨率会导致更好的top-1精度,但推理速度较慢。 

         

A3.2. Different Optimizers for ResNe(X)t on COCO 

        表9比较了ResNe(X)t骨干在COCO目标检测上的AdamW和SGD优化器。在此比较中使用了Cascade Mask R-CNN框架。虽然SGD被用作Cascade Mask R-CNN框架的默认优化器,但我们通常观察到用一个AdamW优化器来替换它可以提高精度,特别是对于更小的主干。因此,我们与提出的Swin  transformer架构相比,使用ResNe(X)t骨干的AdamW。 

 

A3.3. Swin MLP-Mixer

        我们将所提出的层次设计和移位窗口方法应用于MLP-Mixer架构[61],称为Swin-Mixer。表10显示了与原始的MLPMixer架构MLP-Mixer[61]和后续的方法ResMLP[61]相比,Swin-Mixer的性能。Swin-Mixer在使用略小的计算预算(10.4Gvs.12.7G)时的表现明显优于MLP-Mixer(81.3%vs.76.4%)。与ResMLP[62]相比,它还具有更好的速度精度权衡。这些结果表明,所提出的分层设计和移位窗口方法是可推广的。         

 

         

猜你喜欢

转载自blog.csdn.net/qq_52053775/article/details/126328501