Swin Transformer:Hierarchical Vision Transformer using Shifted Windows
本文提出了一种新的视觉转换器,称为Swin Transformer,它可以很好地作为计算机视觉的通用主干。将Transformer从语言转换为视觉的挑战来自这两个领域之间的差异,例如视觉实体的大小差异很大,图像中的像素与文本中的文字相比分辨率较高。为了解决这些差异,我们提出了一种 分层转换器,其表示是通过移位窗口来计算的。移位窗口方案通过将自注意计算限制到非重叠的局部窗口,同时还允许跨窗口连接,带来了更高的效率。 这种分层结构具有在不同尺度上建模的灵活性,并且具有关于图像大小的线性计算复杂度。Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K上的86.4 TOP-1准确率)和密集预测任务,如目标检测(COCO TEST-DEV上的58.7盒AP和51.1 MASK AP)和语义分割(ADE20K Val上的53.5Mou)。其性能大大超过了之前最先进的产品,COCO上的+2.7box AP和+2.6 MASK AP,以及ADE20K上的+3.2Miou,显示了基于Transformer的机型作为视觉主干的潜力。代码和模型将在https://github.com/microsoft/Swin-Transformer上公开提供。
长期以来,计算机视觉中的建模一直由卷积神经网络(CNNs)主导。从AlexNet[38]及其在ImageNet图像分类挑战中的革命性表现开始,CNN架构通过更大的规模[29,73]、更广泛的连接[33]和更复杂的卷积形式[67,17,81]已经演变成越来越强大。由于CNN作为各种视觉任务的主干网络,这些架构上的进步导致了性能的提高,从而广泛提升了整个领域。
另一方面,自然语言处理(NLP)中网络体系结构的演变走了一条不同的道路,今天流行的体系结构是Transformer[61]。Transformer专为序列建模和转换任务而设计,以其对数据中的远程依赖关系进行建模而著称。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近它在某些任务上展示了令人振奋的结果,特别是图像分类[19]和联合视觉-语言建模[46]。
在本文中,我们试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干,就像它在NLP中所做的那样,也可以像CNNs在视觉中所做的那样。我们观察到,在将其在语言领域的高性能转移到视觉领域方面存在着巨大的差异,这可以用两种模态之间的差异来解释。这些不同之处之一涉及到规模。与作为语言转换器中处理的基本元素的单词标记不同,视觉元素在尺度上可以有很大的变化,这是在诸如物体检测[41,52,53]之类的任务中引起注意的问题。在现有的基于Transformer的模型[61,19]中,tokens(标记?)都是固定比例的,这一特性不适合这些视觉应用。另一个不同之处在于,与文本段落中的文字相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是很困难的,因为它的自关注的计算复杂度与图像大小是平方的。为了克服这些问题,我们提出了一种通用的Transformer backbone,称为Swin Transformer,它构造了分层的特征映射,并且计算复杂度与图像大小成线性关系。如图1(A)所示,Swin Transformer通过从小块(灰色轮廓)开始,逐渐合并更深的Transformer层中的相邻块来构建分层表示。有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)[41]或U-Net[50]。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算自我关注来实现的。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构[19],后者生成单一分辨率的特征地图,并且具有二次复杂度。
图1。(a)所提出的Swin Transformer通过在更深的层中合并图像块(以灰色显示)来构建分层特征地图,并且由于仅在每个局部窗口(以红色显示)内进行自我注意计算,因此对于输入图像大小具有线性计算复杂度。因此,它可以作为图像分类和密集识别任务的通用主干。(B)相反,以前的视觉转换器[19]产生单一低分辨率的特征图,并且由于全局的自我注意计算,对于输入图像大小具有二次计算复杂度。
Swin Transformer的一个关键设计元素是在连续的自我关注层之间移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(参见表4)。该策略在实际延迟方面也是有效的:一个窗口内的所有query patches共享相同的key set,这便于硬件中的内存访问。相反,较早基于滑动窗口的自我关注方法[32,49]由于不同query pixel的不同keys而在一般硬件上受到低等待时间的影响。我们的实验表明,提出的移位窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上是相似的(参见表5和表6)。
(关于attention机制中的query、key和value之间的关系可参考这篇文章)
图2.在建议的Swin Transformer架构中,用于计算自我注意的移位窗口方法的图示。在l层(左),采用规则的窗口划分方案,在每个窗口内计算自我关注。在下一层l+1(右)中,窗口分区被移位,从而产生新窗口。新窗口中的自我注意计算跨越了层l中先前窗口的边界,提供了它们之间的连接。
本文提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务中取得了较好的性能。它的性能大大优于Vit/Deit[19,60]和ResNe(X)t模型[29,67],而三个任务的延迟相似。其在COCO测试开发集上的58.7 box AP和51.1 mask AP超过了之前最先进的结果+2.7 box AP(无外部数据复制-粘贴[25])和+2.6 mask AP(探测器[45])。在ADE20K语义切分上,它在Val集合上获得了53.5 mIou,比之前的最先进水平(SETR[78])提高了+3.2 mIou。在ImageNet-1K图像分类上达到了86.4%的TOP-1正确率。
我们相信,一个跨越计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,并且这两个领域的建模知识可以更深入地共享。我们希望,Swin Transformer在各种视觉问题上的强劲表现可以在社区中更深地推动这一信念,并鼓励对视觉和语言信号进行统一建模。
CNN and variants
CNN作为整个计算机视觉的标准网络模型。虽然CNN已经存在了几十年[39],但直到AlexNet的推出[38],CNN才起飞并成为主流。此后,人们提出了更深入、更有效的卷积神经结构来进一步推动计算机视觉领域的深度学习浪潮,例如VGG[51]、GoogLeNet[56]、ResNet[29]、DenseNet[33]、HRNet[62]和EfficientNet[57]。除了这些架构上的进步之外,在改进单个卷积层方面也做了很多工作,例如深度卷积[67]和可变形卷积[17,81]。虽然CNN及其变体仍然是计算机视觉应用程序的主要骨干架构,但我们强调了类似Transformer的架构在视觉和语言之间进行统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了很好的表现,我们希望这将有助于模型的转变。
Self-attention based backbone architectures
同样受到自我注意层和Transformer架构在自然语言处理领域的成功的启发,一些作品使用自我注意层来取代流行的ResNet中的部分或全部空间卷积层[32,49,77]。在这些工作中,自我注意是在每个像素的局部窗口内计算的,以加速优化[32],并且它们实现了比对应的ResNet架构稍好的精确度/浮点折衷。然而,它们昂贵的存储器访问导致它们的实际等待时间明显大于卷积网络的延迟[32]。我们建议在连续层之间移动窗口,而不是使用滑动窗口,这允许在通用硬件上更有效地实现。
Self-attention/Transfomers to complement CNNs
另一项工作是用自我注意层或Transformers来增强标准的CNN架构。自我注意层可以通过提供对远程依赖或异类交互进行编码的能力来补充backbones[64、6、68、22、71、54]或head networks[31、26]。最近,Transformer中的编解码器设计已被应用于目标检测和实例分割任务[7,12,82,55]。我们的工作探索了Transformers对基本视觉特征提取的适应性,是对这些工作的补充。
Transformer based vision backbones
与我们的工作最相关的是视觉变形器(ViT)[19]及其后续项目[60、69、14、27、63]。ViT的开创性工作直接在非重叠的中等大小图像块上应用Transformer架构进行图像分类。与卷积网络相比,它在图像分类的速度和精度上取得了令人印象深刻的折衷。虽然ViT需要大规模训练数据集(即JFT-300M)才能表现良好,但DeiT[60]引入了几种训练策略,使ViT在使用较小的ImageNet-1K数据集时也能发挥作用。ViT在图像分类上取得了良好的效果,但其结构不适合作为密集视觉任务或高分辨率输入图像的通用骨干网,因为它的特征图分辨率较低,且复杂度随图像大小呈二次曲线增加。有一些将ViT模型应用于通过直接上采样或反卷积进行目标检测和语义分割的密集视觉任务的工作,但性能相对较低[2,78]。与我们的工作同时进行的还有一些修改ViT体系结构[69、14、27]以实现更好的图像分类。经验上,我们发现我们的Swin Transformer架构在这些图像分类方法中实现了最佳的速度精度折衷,尽管我们的工作重点是通用性能,而不是专门的分类。另一项同时进行的工作[63]探索了在Transformer上构建多分辨率特征地图的类似思路。它的复杂度仍然是图像大小的二次方,而我们的算法是线性的,并且也是局部操作的,这已经被证明在对视觉信号的高度相关性进行建模方面是有益的[35,24,40]。我们的方法既高效又有效,在可可对象检测和ADE20K语义分割上都达到了最高的准确率。
图3显示了Swin Transformer体系结构的概述,其中演示了微型版本(Swint)。它首先通过patch分割模块(如ViT)将输入的RGB图像分割成不重叠的patch。每个patch都被视为一个“令牌”,其特征被设置为原始像素RGB值的串联(concatenation)。在我们的实现中,我们使用了4×4的patch大小,因此每个块的特征维数是4×4×3=48。将线性嵌入层应用于该原始值特征以将其投影到任意维度(表示为C)。
在这些patch令牌上应用了几个带有修改的自我注意计算的变形器块(Swin Transformer块)。Transformer blocks保持令牌数(H/4×W/4),与线性嵌入一起称为“阶段1”。
为了产生分层表示,随着网络的深入,通过patch merging layers来减少tokens的数量。第一个patch merging layers将每组2×2相邻patch的特征进行拼接,并在4C维度拼接的特征上应用线性层。这将tokens数减少2×2=4的倍数(分辨率的2倍下采样),并且输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持为H/8×W/8。这第一个块的拼接和特征变换称为“Stage2”。该过程重复两次,分别为“阶段3”和“阶段4”,输出分辨率分别为H/16×W/16和H/32×W/32。这些阶段共同产生具有与典型卷积网络(例如,VGG[51]和ResNet[29])相同的特征映射分辨率的分层表示。因此,所提出的体系结构可以方便地重新部署。(这一段都没怎么看懂)
Swin Transformer block
Swin Transformer是通过将Transformer模块中的标准多头自关注(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述)而构建的,其他层保持不变。如图3(B)所示,Swin Transformer模块由一个基于移位窗口的MSA模块和一个中间带有GELU非线性的2层MLP组成。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并且在每个模块之后应用剩余连接。
图3.(a)Swin Transformer(Swin-T)的架构;(b)两个连续的Swin Transformer块(用公式3表示)。W-MSA和SW-MSA分别是具有规则和移位窗口配置的多头自注意模块。
标准Transformer体系结构[61]及其对图像分类的适应性[19]都进行全局自注意活动,全局自注意活动计算tokens和所有其他tokens之间的关系。全局计算导致对tokens数量的二次复杂性,使其不适合为了致密预测或表示高分辨率图像需要众多tokens的许多视觉问题。
Self-attention in non-overlapped windows
为了有效地建模,我们建议在局部窗口内计算自我注意。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M块,则全局MSA模块和基于h×w块图像的窗口的计算复杂度为:
其中,前者与patch number h和w是二次方的关系,后者在M固定时是线性的(默认情况下设置为7)。全局自我注意计算对于大型硬件来说通常是负担不起的,而基于窗口的自我注意是可伸缩的。
Shifted window partitioning in successive blocks
基于窗口的自我注意模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,我们提出了一种在连续Swin Transformer块的两种划分配置之间交替的移位窗口划分方法。
如图2所示,第一模块使用常规窗口分区策略从左上像素开始,并且8×8特征映射均匀地划分为大小为4x4的2×2个窗口(m = 4)。然后,下一个模块的窗口采用了移动前面层窗口的配置,通过从规律划分的窗口来移位(floor(M/2), floor(M、2))个像素。
随着移动的窗口分区方法,连续的Swin Transformer块被计算为
其中,ˆZl和Zl分别表示块l的(S)W-MSA模块和MLP模块的输出特征;W-MSA和SW-MSA分别表示使用规则和移位窗口划分配置的基于窗口的多头自关注。
移位的窗口分区方法在前一层中引入了相邻非重叠窗口之间的连接,并且发现在图像分类,对象检测和语义分割中有效,如表4所示。
Efficient batch computation for shifted configuration
移位窗口分区的一个问题是它将导致更多窗口,从移位配置中的ceil(h/M)×ceil(w/M)到(ceil(h/M)+1)×(ceil(w/M)+1),并且一些窗口将小于M×M。一个天真的解决方案是将较小的窗口填充到M×M的大小,并在计算注意力时屏蔽填充的值。当规则分区中的窗口数量较小时,例如2×2,使用这种朴素的解决方案增加的计算量是相当可观的(2×2→3×3,是2.25倍)。在这里,我们提出了一种更有效的批处理计算方法,即向左上角方向循环移动,如图4所示。在这种转移之后,批处理窗口可能由特征图中不相邻的几个子窗口组成,因此采用masking mechanism将自我注意计算限制在每个子窗口内。在循环移位的情况下,批处理窗口的数量与常规窗口划分的数量相同,因此也是有效的。表5显示了此方法的低延迟。
图4.在移位窗口分区中用于自我关注的高效批处理计算方法的图示。
Relative position bias
在计算自我注意时,我们遵循[48,1,31,32],在计算相似度时包括每个头部的相对位置偏差B∈R^ (M^ 2×M^2):
其中Q,K,V∈R^ (M^2 ×d)是查询、键和值矩阵;d是查询/键维度, M^ 2是窗口中的patches数。由于沿每个轴的相对位置位于[−M+1,M−1]范围内,我们将较小尺寸的偏置矩阵ˆB∈R(2M−1)×(2M−1)参数化,并且B中的值取自ˆB。
我们观察到,与没有此偏倚项或使用绝对位置嵌入的同类相比,性能有了显著的改善,如表4所示。此外,如[19]所示,在输入中添加绝对位置嵌入会略微降低性能,因此我们的实现中没有采用它。
预培训中的学习相对位置偏差也可以用于初始化通过双立方插值的不同窗口大小进行微调的模型[19,60]。
我们建立我们的基础模型,称为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是第一个stage中的隐藏层的通道数量。表1列出了ImageNet图像分类的模型大小、理论计算复杂度(FLOP)和吞吐量。
我们在ImageNet-1K图像分类[18]、COCO目标检测[42]和ADE20K语义分割[80]上进行了实验。在下文中,我们首先就这三个任务将建议的Swin Transformer架构与以前的最先进架构进行比较。然后,我们对Swin变压器的重要设计元素进行了消融实验。
Settings
对于图像分类,我们在ImageNet-1K[18]上对提出的Swin Transformer进行了基准测试,它包含来自1000个类别的1.28M个训练图像和50K个验证图像。报告了单个裁剪图像的TOP-1精确度。我们考虑两种培训设置:
settings
在COCO 2017上进行了目标检测和实例分割实验,包括118K训练、5K验证和20K测试开发图像。使用验证集执行消融研究,并在test-dev上报告系统级比较。对于消融研究,我们考虑了四个典型的目标检测框架:Cascade Mask R-CNN[28,5]、ATSS[76]、RepPoints v2[11]和Sparse RCNN[55]。对于这四个框架,我们使用相同的设置:多尺度训练7,55,AdamW[43]优化器(初始学习率为0.0001,权重衰减为0.0001,批次大小为16),以及3x时间表(36个epoches)。为了进行系统级的比较,我们采用了一种改进的HTC8,其中包括instboost[21]、更强的多尺度训练[6]、6x时间表(72个历元)、软NMS[4]和ImageNet-22K预训练模型作为初始化。
我们将我们的Swin Transformer与标准ConvNets(即ResNe(X)t)和以前的Transformer网络(如Deit)进行比较。通过在其他设置不变的情况下仅更改主干来执行比较。请注意,虽然Swin Transformer和ResNe(X)t由于其分层功能图而直接适用于所有上述框架,但DeiT只生成单一分辨率的功能图,不能直接应用。为了进行公平的比较,我们遵循[78]使用反卷积层来构建DeiT的分层特征图。
Comparison to ResNe(X)t
表2(a)列出了Swin-T和ResNet-50在四个目标检测框架上的结果。与ResNet-50相比,在略微较大的模型尺寸、FLOPS和延迟性方面。我们的Swin-T架构带来了一致的+3.4Resnet-4.2box AP。
表2(b)使用Cascade Mask RCNN比较了不同模型容量下的Swin Transformer和ResNe(X)t。Swin Transformer实现了51.9 box AP和45.0 MASK AP的高检测精度,与模型尺寸、触发器和延迟相似的ResNeXt10164x4d相比,这是+3.6 box AP和+3.3 MASK AP的显著提升。在使用改进的HTC框架的52.3 box AP和46.0 mask AP的较高基线上,Swin Transformer的增益也很高,分别为+4.1 box AP和+3.1 box AP(参见表2©)。在推理速度方面,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的体系结构是使用内置的PyTorch函数实现的,这些函数并不都是优化的。彻底的内核优化超出了本文的范围。
Comparison to DeiT
表2(b)显示了使用Cascade Mask R-CNN框架的DeiT-S的性能。与Deit-S相比,Swin-T的计算结果分别为+2.5 box AP和+2.3 MASK AP(86m比80m),推理速度显著提高(15.3FPS比10.4FPS)。DeiT的推理速度较慢,主要是因为它对输入图像大小的二次方复杂度。
Comparison to previous state-of-the-art
表2©将我们的最佳结果与以前最先进的型号进行了比较。我们的最佳模型在COCO测试开发上获得了58.7box AP和51.1 MASK AP,超过了之前的最好结果+2.7box AP(无外部数据的复制-粘贴[25])和+2.6 MASK AP(DetectoRS[45])。
Settings
ADE20K[80]是一个广泛使用的语义切分数据集,涵盖了150个语义类别的广泛范围。它总共有25K张图片,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用MMSEG[15]中的UperNet[66]作为我们的基础框架,以实现其高效率。附录中提供了更多详细信息。
Results
表3列出了不同方法/主干对的MIOU、model size(#param)、FLOP和FPS。从这些结果可以看出,在计算成本相近的情况下,Swin-S比DeiT-S高+5.3 MIou(49.3vs.44.0)。
它也比ResNet-101高+4.4mIou,比ResNeST-101高+2.4mIou[75]。我们采用ImageNet-22K预训练的Swin-L模型在Val集合上达到了53.5mIou,超过了之前最好的模型+3.2mIou(SETR[78]的50.3mIou,后者的模型尺寸更大)。
在这一部分中,我们将使用ImageNet-1K图像分类、用于COCO目标检测的Cascade Mask R-CNN以及用于ADE20K语义分割的UperNet,来消除Swin Transformer中的重要设计元素。
Shifted windows
表4报告了移位窗口方法在这三个任务中的耗损情况。在每一级,采用移位窗口分区的Swin-T比建立在单个窗口分区上的对应模型在ImageNet-1K上的top-1准确度+1.1%、在COCO上+2.8 box AP/+2.2 mask AP和在ADE20K上+2.8mIou。结果表明,使用移位窗口来建立前几层窗口之间的连接是有效的。移位窗口带来的延迟开销也很小,如表5所示。
Relative position bias
表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.9mIou,表明相对位置偏置的有效性。还要注意的是,虽然包含绝对位置嵌入提高了图像分类准确率(+0.4%),但它损害了对象检测和语义分割(在COCO上为-0.2 box/mask AP,在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比较了它们在这三个任务上的精确度,显示它们在可视化建模方面具有类似的精确度。
与最快的Transformer架构之一Performer[13]相比(见[59]),提出的基于移位窗口的自我注意计算和整体Swin Transformer架构略快(见表5),同时与使用Swin-T的ImageNet-1K上的Performer相比,达到+2.3%的top-1精度(见表6)。
本文提出了一种新的视觉转换器Swin Transformer,它产生分层的特征表示,并且具有关于输入图像大小的线性计算复杂度。Swin Transformer在COCO对象检测和ADE20K语义分割方面实现了最先进的性能,大大超过了以前最好的方法。我们希望Swin Transformer在各种视觉问题上的出色表现将鼓励对视觉和语言信号进行统一建模。
作为Swin Transformer的一个重要组成部分,基于移位窗口的自我注意被证明是解决视觉问题的有效方法,我们也期待着研究它在自然语言处理中的应用。
表7显示了详细的架构规格,其中假设所有架构的输入图像大小均为224×224。“conat n×n”表示在一个patch中n×n个相邻特征的连接。该操作导致以n的速率对特征图进行下采样。“96-d”表示具有96个输出维度的线性层。“win. sz. 7×7“表示窗口大小为7×7的多头自关注模块。
图像分类是通过在上一阶段的输出特征图上应用全局平均池化层,然后是线性分类器来执行的。我们发现这个策略与在ViT[19]和DeiT[60]中使用额外的类令牌一样准确。在评估中,报告了使用单独的裁剪图像的TOP-1精确度。
Regular ImageNet-1K training
训练设置大多遵循[60]。对于所有模型变体,我们采用的默认输入图像分辨率为224x224。对于384x384等其他分辨率,我们对以224x224分辨率训练的模型进行微调,而不是从头开始训练,以降低GPU消耗。
当使用224x224个输入从头开始训练时,我们使用AdamW[36]优化器进行300个epoches的训练,使用余弦衰减学习率调度器,具有20个epoches的linear warm up。使用batch size为1024时,初始学习率为0.001,权重衰减为0.05%,以及最大范数为1的梯度裁剪。我们在训练中包含了[60]的大部分增强和正则化策略,包括随机增强[16]、混合[74]、切割混合[72]、随机擦除[79]和随机深度[34],但不包括重复增强[30]和指数移动平均(EMA)[44],它们不会提高性能。请注意,这与[60]相反,在[60]中,重复增强是稳定ViT训练的关键。Swin-T、Swin-S和Swin-B的随机深度增加程度分别为0.2、0.3、0.5,而Swin-T、Swin-S和Swin-B的随机深度增加程度较大,分别为0.2、0.3、0.5。
为了以更高的分辨率对输入进行微调,我们使用了adamW[36]优化器30个epoches,恒定学习率为10−5,权重衰减为10−8,除了将随机深度比设置为0.1外,与第一阶段相同的数据增强和正则化。
ImageNet-22K pre-training
我们还对更大的ImageNet-22K数据集进行了预训练,该数据集包含1420万张图像和22K类。训练分两个阶段进行。对于具有224x224个输入的第一阶段,我们使用AdamW优化器60个epoches,使用线性衰减学习率调度器和5个epoch的linear warm up。batch size为4096,初始学习率为0.001,权重衰减率为0.01。在ImageNet-1K精调的第二阶段,输入为224x224/384x384,我们对模型进行了30个epoch的训练,batch size为1024,恒定学习率为10−5,权值衰减为10−8。
对于消融研究,我们考虑了四个典型的目标检测框架:Cascade Mask R-CNN[28,5]、ATSS[76]、RepPoints v2[11]和Sparse RCNN[55]。对于这四个框架,我们使用相同的设置:多尺度训练7,55,AdamW[43]优化器(初始学习率为0.0001,权重衰减为0.0001,batch size为16),以及3x时间表(36个epoches,学习率在第27和33个epoch衰减10倍)。
为了进行系统级的比较,我们采用了改进的HTC8,它具有instboost[21]、更强的多尺度训练6、6x时间表(72个历元,在历元63和69的学习率衰减0.1倍)、softNMS[4],以及附加在末级输出的额外的全局自我关注层。所有的Swin变压器模型均采用随机深度比0.2。
ADE20K[80]是一个广泛使用的语义切分数据集,涵盖了150个语义类别的广泛范围。它总共有25K张图片,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用UperNet[66]在MM分割[15]中作为我们的基础框架,以实现其高效率。
在训练中,我们使用了ADAMW[43]优化器,初始学习率为6×10−5,权重衰减为0.01,调度器使用线性学习率衰减,linear warm-up为1,500次。模型在8个GPU上进行训练,每个GPU有2个图像,迭代160K。对于放大,我们采用随机水平翻转、比率范围[0.5,2.0]内的随机重新缩放和随机光度失真的Mmm分割的默认设置。所有Swin变压器模型均采用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.5,1.75]×的多尺度测试。在报告测试分数时,按照常规做法,训练图像和验证图像都用于训练[68]。
表8列出了从224x224到384x384不同输入图像大小的Swin Transformers的性能。通常,输入分辨率越大,TOP-1精度越高,但推理速度越慢。
表9比较了ResNe(X)t主干在COCO对象检测方面的AdamW和SGD优化器。在这一比较中使用了Cascade Mask R-CNN框架。虽然SGD被用作Cascade Mask R-CNN框架的默认优化器,但我们通常观察到,通过用AdamW优化器替换它,尤其是对于较小的主干,精确度有所提高。因此,与建议的Swin Transformer架构相比,我们将AdamW用于ResNe(X)t主干。