目录
Abstract
本文介绍了一种新的vision Transformer,称为Swin Transformer,它可以用作计算机视觉的通用主干。(研究动机,用transformer没问题,完全没问题,可以在方方面面上取代卷积神经网络)从语言到视觉的转换的挑战来自两个领域之间的差异,例如视觉实体的规模变化很大(尺度问题,例如一张图片里面,代表行人和汽车的形状大大小小难以估计),并且图像中的像素与文本中的单词相比具有高分辨率。为了解决这些差异,我们提出了一种hierarchical Transformer,其表示是通过移位窗口来计算的。移位的窗口方案通过将自我注意计算限制在非重叠的本地窗口,同时还允许跨窗口连接,从而带来了更高的效率。这种分层架构具有在各种比例下建模的灵活性,并且相对于图像大小具有线性计算复杂性。Swin Transformer的这些品质使其与广泛的视觉任务兼容,包括图像分类 (ImageNet-1K 87.3 top-1精度) 和密集预测任务,例如对象检测 (COCO testdev上的58.7 box AP和51.1 mask AP) 和语义分割 (ADE20K val上的53.5 mIoU)。它的性能大大超过了以前的先进水平,在COCO上2.7了box AP和2.6 mask AP,在ad20k上3.2了mIoU,展示了基于Transformer的模型作为视觉骨干的潜力。分层设计和移位窗口方法也证明对所有MLP体系结构都是有益的。 代码和模型可在以下网址公开获取 GitHub - microsoft/Swin-Transformer: This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows"..
1.引言
长期以来,计算机视觉中的建模一直由卷积神经网络(CNN)主导。从AlexNet[39]及其在ImageNet图像分类挑战中的革命性表现开始,通过更大的规模 [27,69],更广泛的连接 [31] 和更复杂的卷积形式 [64,17,75],这些结构已经发展成为越来越强大的力量。随着cnn充当各种视觉任务的骨干网络,这些体系结构的进步导致了性能的改进,从而广泛提升了整个领域。 另一方面,自然语言处理 (NLP) 中网络体系结构的演变走了一条不同的道路,今天流行的体系结构取而代之的是 Transformer [58]。 Transformer专为序列建模和转换任务而设计,值得注意的是它使用注意力来模拟数据中的远程依赖关系。它在语言领域的巨大成功导致研究人员研究它对计算机视觉的适应,最近它在某些任务上展示了有希望的结果,特别是图像分类 [19] 和联合视觉-语言建模 [43]。
在本文中,我们寻求扩展Transformer的适用性,以使其可以像NLP和cnn在视觉中一样用作计算机视觉的通用主干。我们观察到,将其在语言领域中的高性能转移到视觉领域的重大挑战可以用两种模式之间的差异来解释。这些差异之一涉及规模。与作为语言转换中的基本处理元素的单词标记不同,视觉元素可以在规模上有很大的变化,这个问题在诸如对象检测之类的任务中受到关注 [38,49,50]。在现有的基于变压器的模型 [58,19] 中,令牌都是固定比例的,不适合这些视觉应用的属性。另一个区别是与文本段落中的单词相比,图像中像素的分辨率要高得多。存在许多视觉任务,例如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像的转换来说是棘手的,因为其自我注意的计算复杂度是图像大小的二次方。为了克服这些问题,我们提出了一种通用的 Transformer骨干网,称为Swin Transformer ,该主干构造分层特征图,并且对图像大小具有线性计算复杂性。如图1(a) 所示,Swin Transformer通过从小面片(灰色轮廓)开始并逐渐合并较深Transformer层中的相邻面片来构建分层表示。有了这些分层的特征映射,Swin Transformer模型可以方便地利用高级技术进行密集预测,如特征金字塔网络(FPN)[42]或U-Net[51]。线性计算复杂性是通过在分割图像的非重叠窗口内局部计算自我注意来实现的(红色轮廓)。每个窗口中的patch数量是固定的,因此复杂度与图像大小成线性关系。这些优点使Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构[20],后者生成单一分辨率的特征地图,并且具有二次复杂性。
Swin Transformer的关键设计元素是其在连续的自我注意层之间移动窗口分区,如图2所示。移位的窗口桥接了前一层的窗口,提供了它们之间的连接,从而显着增强了建模能力 (请参见表4)。对于实际延迟,此策略也很有效: 窗口中的所有查询补丁共享相同的键set1,这有助于硬件中的内存访问。相比之下,早期的基于滑动窗口的自我注意方法 [32,49] 由于用于不同查询像素的不同键集而在一般硬件上具有低延迟。 我们的实验表明移动窗口方法比滑动窗口方法有更低的延时,然而在建模能力方面是相似的(参见表5和6)。移位窗口方法也被证明对全MLP体系结构有益[61]。
本文提出的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和变体
CNNs是整个计算机视觉的标准网络模型。虽然CNN已经存在了几十年 [36],但直到引入AlexNet [35],CNN才起飞并成为主流。 从那时起,人们提出了更深入、更有效的卷积神经结构来进一步推动计算机视觉中的深度学习浪潮, 例如VGG [48],GoogleNet [53],ResNet [27],DenseNet [31],HRNet [59] 和EfficientNet [54]。除了这些建筑方面的进步,还有很多关于改进单个卷积层的工作,例如深度卷积 [64] 和可变形卷积 [17,75]。尽管CNN及其变体仍然是计算机视觉应用的主要骨干体系结构,但我们强调了类似Transformer的体系结构在视觉和语言之间进行统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了出色的表现,我们希望它将有助于建模转变。
基于自我注意的骨干架构
同样受到NLP领域自我注意层和Transformer架构成功的启发,一些作品采用自我注意层来取代流行的ResNet中的部分或全部空间卷积层 [30,46,72]。在这些工作中,自我注意是在每个像素的本地窗口内计算的,以加快优化 [30],并且它们比对应的ResNet体系结构实现了更好的准确性/FLOPs权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络的延迟 [30]。我们建议在连续的层之间移动窗口,而不是使用滑动窗口,这可以在一般硬件中实现更有效的实现。
自我注意/变压器来补充CNNs
另一项工作是通过自我注意层或Transformers来增强标准的CNN架构。自我注意层可以通过提供编码远程依赖或异构交互的能力来补充主干 [61、7、3、65、21、68、51] 或头部网络 [29、24]。最近,Transformer中的编码器解码器设计已应用于对象检测和实例分割任务 [8,13,76,52]。我们的工作探索了变压器用于基本视觉特征提取的适应性,并且是这些工作的补充。
基于变压器的视觉骨干
与我们的工作最相关的是Vision Transformer (ViT) [19] 及其后续 [57、66、15、25、60]。ViT的开创性工作直接将Transformer体系结构应用于不重叠的中型图像补丁上,以进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度精度折衷。尽管ViT需要大规模的训练数据集 (即JFT-300M) 才能表现良好,但DeiT [57] 引入了几种训练策略,这些策略使ViT也可以使用较小的ImageNet-1K数据集有效。 ViT在图像分类上的结果令人鼓舞,但由于其低分辨率特征图和二次增加,其体系结构不适合用作密集视觉任务或输入图像分辨率高的通用骨干网图像大小的复杂性。有一些作品通过直接上采样或反卷积将ViT模型应用于对象检测和语义分割的密集视觉任务,但性能相对较低 [2,73]。与我们的工作同时进行的是一些修改ViT体系结构 [66,15,25] 以实现更好的图像分类。从经验上讲,我们发现Swin Transformer架构可以在图像分类的这些方法之间实现最佳的速度准确性权衡,即使我们的工作重点是通用性能,而不是专门针对分类。另一项并发工作 [60] 探讨了在变压器上构建多分辨率特征图的类似思路。它的复杂性仍然是图像大小的二次型,而我们的是线性的,并且在本地运行,这已被证明在建模视觉信号中的高相关性是有益的 [32,22,37]。我们的方法既高效又有效,在COCO对象检测和ADE20K语义分割上都达到了最先进的准确性。
3.方法
3.1 整体架构
Swin Transformer体系结构的概述如图3所示,它说明了tiny版本 (SwinT)。它首先通过patch拆分模块 (例如ViT) 将输入的RGB图像拆分为不重叠的patch。每个patch都被视为 “token”,并且其功能被设置为原始像素RGB值的串联。在我们的实现中,我们使用4 × 4的补丁大小,因此每个补丁的特征尺寸为4 × 4 × 3 = 48。在此原始值特征上应用线性嵌入层以将其投影到任意维度 (表示为C)。
在这些 patch tokens 上应用了几个具有修改的自我注意计算的Transformer块( Swin Transformer块 )。Transformer块保持令牌的数量 (H/4 × W/4),并且与线性嵌入一起被称为 “阶段1”。
为了产生分层表示,随着网络的深入,通过补丁合并层来减少令牌的数量。第一个补丁合并层连接每组2 × 2个相邻补丁的特征,并在4c维连接的特征上应用线性层。这将令牌的数量减少了2 × 2 = 4的倍数 (分辨率的2 × 下采样),并且输出维度设置为2C。然后应用Swin变压器块进行特征变换,分辨率保持在 H/8×W/8 。补丁合并和特征转换的第一个块表示为 “阶段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 基于移动窗口的自我注意
标准Transformer体系结构 [61] 及其对图像分类的适应 [19] 都进行全局自我注意,其中计算令牌与所有其他令牌之间的关系。全局计算导致令牌数量的二次复杂度,使其不适合许多需要大量令牌进行密集预测或表示高分辨率图像的视觉问题。
非重叠窗口中的自注意力
为了有效地建模,我们建议在局部窗口内计算自我注意。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含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 × m4。一个天真的解决方案是,并在计算注意力时屏蔽掉填充的值。当常规分区中的窗口数量较小时,例如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所示。如 [19] 中所述,进一步将绝对位置嵌入添加到输入会稍微降低性能,因此在我们的实现中不采用它。
在预训练中学习到的相对位置偏差也可以用于通过双三次插值 [19,60] 初始化用于以不同窗口大小进行微调的模型。
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。这些模型变体的体系结构超参数是:
4.实验
我们进行了ImageNet-1K图像分类 [18],COCO对象检测 [42] 和ad20k语义分割 [80] 的实验。在下文中,我们首先将提出的Swin Transformer体系结构与先前在这三个任务上的最新技术进行比较。 我们对Swin Transformer的重要设计元素进行了消融实验。
4.1 ImageNet-1K上的图像分类
对于图像分类的设置,
我们在ImageNet-1K [18] 上对建议的Swin Transformer3进行基准测试,其中包含1.28M训练图像和来自1,000类的50k验证图像。报告了单个作物的前1名准确性。我们考虑两种训练设置:
定期ImageNet-1K培训。
这种设定大多遵循 [60]。我们使用AdamW [36] 优化器使用余弦衰减学习速率调度器和20个线性预热的历元进行300。使用1024的批量大小、0.001的初始学习率和0.05的权重衰减。我们将 [60] 的大多数增强和正则化策略包括在训练中,除了重复增强 [30] 和EMA [44],它们不会增强性能。请注意,这与 [60] 相反,在 [60] 中,重复增强对于稳定ViT的训练至关重要。
ImageNet-22K预培训和ImageNet-1K微调。
我们还预先训练了更大的ImageNet-22K数据集,其中包含1420万张图像和22k类。我们使用AdamW优化器进行60个时期,使用线性衰减学习速率调度程序和5个时期的线性预热。使用4096的批量大小、0.001的初始学习率和0.01的权重衰减。在ImageNet-1K微调中,我们训练了30个时期的模型,批量大小为1024,恒定学习率为10-5,权重衰减为10-8。
常规 ImageNet-1K培训的结果
表1(a) 展示了使用常规ImageNet-1K训练与其他骨干的比较,包括基于变压器和基于ConvNet的骨干。
与以前最先进的基于变压器的体系结构,即DeiT [60] 相比,Swin变压器明显超过了具有类似复杂性的对应DeiT体系结构: 使用224^2输入,Swin-T (81.3%) 比DeiT-S (79.8%) 1.5%,和使用2242/3842输入分别为Swin-B (83.3%/84.2%) 在DeiT-B (81.8%/83.1%) 上的 + 1.5%/1.1%。
与最先进的ConvNets (即RegNet [47] 和EfficientNet [57]) 相比,Swin变压器实现了稍好的速度精度折衷。注意到,虽然RegNet [47] 和EfficientNet [57] 是通过彻底的体系结构搜索获得的,但所提出的Swin变压器是从标准变压器改编而来的,并且具有进一步改进的强大潜力。
ImageNet-22K预训练的结果
我们还在ImageNet22K上预先训练了更大容量的Swin-B和Swin-L。ImageNet-1K图像分类的微调结果如表1(b) 所示。对于Swin-B,ImageNet22K预训练比从头开始的ImageNet-1K训练带来1.8% ~ 1.9% 的收益。与以前ImageNet-22K预训练的最佳结果相比,我们的模型实现了明显更好的速度精度权衡: Swin-B获得了86.0% top-1精度,这2.0% 高于具有相似推理吞吐量 (84.7对85.9图像/秒) 和稍低的翻牌 (47.0克对55.4克) 的ViT。较大的Swin-L模型实现了86.4% 的top-1精度,略优于Swin-B型。
4.2 COCO上的物体检测
设置
在COCO 2017上进行了对象检测和实例分割实验,其中包含118K训练,5k验证和20k测试一下-dev图像。使用验证集进行消融研究,并在test-dev上报告系统级比较。对于消融研究,我们考虑了四个典型的对象检测框架: 级联掩模r-cnn [28,5],ATSS [76],RepPoints v2 [11] 和mmdetection [9] 中的稀疏RCNN [55]。对于这四个框架,我们使用相同的设置: 多尺度训练 [7,55] (调整输入大小,使较短的一面在480和800之间,而较长的一面最多1333),AdamW [43] 优化器 (0.0001的初始学习率,0.05的重量衰减和批次大小为16) 和3倍的时间表 (36个时期)。为了进行系统级比较,我们采用了改进的HTC [8] (表示为HTC),带有instaboost [21],更强的多尺度训练 [6],6x时间表 (72个时期),软NMS [4] 和ImageNet-22K预训练模型作为初始化。
我们将Swin变压器与标准ConvNets (即ResNe(X)t) 和以前的变压器网络 (例如DeiT) 进行了比较。通过仅在其他设置不变的情况下更改主干来进行比较。请注意,虽然Swin Transformer和ResNe(X)t由于其分层特征图而直接适用于上述所有框架,但DeiT仅产生特征图的单一分辨率,无法直接应用。为了进行公平比较,我们遵循 [78] 使用反卷积层为DeiT构建分层特征图。
与ResNe(X)t的比较
表2(a) 列出了Swin-T和ResNet-50在四个对象检测框架上的结果。我们的Swin-T架构带来了一致的3.4-4.2盒AP增益比ResNet-50,略大的模型大小,触发器和延迟。
表2(b) 使用级联掩模RCNN比较了不同模型容量下的Swin变压器和ResNe(X)t。Swin变压器实现了51.9盒AP和45.0掩码AP的高检测精度,这是3.6盒AP和3.3掩码AP比具有相似模型大小,触发器和延迟的ResNeXt10164x4d的显着增益。在使用改进的HTC框架52.3盒AP和46.0掩码AP的较高基线上,Swin变换器的增益也很高,在4.1盒AP和3.1掩码AP处 (参见表2(c))。关于推理速度,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的体系结构是通过内置的PyTorch函数实现的,这些函数并非都经过了很好的优化。彻底的内核优化超出了本文的范围。
与DeiT的比较
使用级联掩码r-cnn框架的DeiT-S的性能如表2(b) 所示。Swin-t的结果是2.5盒AP和2.3掩码AP高于具有相似模型大小 (86m对80M) 和显著更高的推理速度 (15.3 FPS对10.4 FPS) 的DeiT-S。DeiT的推理速度较低主要是由于其对输入图像大小的二次复杂度。
与以前的最新技术的比较
表2(c) 将我们的最佳结果与以前的最先进模型进行了比较。我们的最佳模型在COCO测试一下-dev上实现了58.7盒AP和51.1掩码AP,通过2.7盒AP (无外部数据的复制粘贴 [25]) 和2.6掩码AP (检测器 [45]) 超过了以前的最佳结果。
4.3 ADE20K上的语义分割
设置
Ad20k [80] 是一个广泛使用的语义分割数据集,涵盖了广泛的150语义类别。它总共有25k个图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mmseg [15] 中的UperNet [66] 作为其高效率的基础框架。更多细节见附录。
结果
表3列出了不同方法/骨干对的mIoU,模型大小 (# param),FLOPs和FPS。从这些结果可以看出,Swin-S比DeiT-S高5.3 mIoU (49.3对44.0),具有相似的计算成本。它也比ResNet-101高4.4米欧,比ResNeSt-101高2.4米欧 [75]。我们的Swin-L模型与ImageNet-22K预训练在val集上实现了53.5 mIoU,超过了以前的最佳模型3.2 mIoU (50.3 mIoU由SETR [78] 具有较大模型尺寸)。
4.4 消融研究
在本节中,我们使用ImageNet-1K图像分类,COCO对象检测的级联掩码r-cnn和ADE20K语义分割的UperNet,对建议的Swin变压器中的重要设计元素进行了烧蚀。
移位的窗户
表4报告了对这三个任务的移动窗口方法的消融。具有移位窗口分区的Swin-T在每个阶段的单个窗口分区上的性能优于构建在单个窗口分区上的对应物,在ImageNet-1K上的1.1% top-1精度,在COCO上的 + 2.8 box AP/+ 2.2 mask AP,在ADE20K上的 + 2.8 mIoU。结果表明,使用移位的窗口在前面的层中构建窗口之间的连接是有效的。移位窗口的延迟开销也很小,如表5所示。
相对位置偏差
表4显示了不同位置嵌入方法的比较。具有相对位置偏差的Swin-T在ImageNet-1K上产生 + 1.2%/+ 0.8% top-1精度,在COCO上产生 + 1.3/+ 1.5框AP和 + 1.1/+ 1.3掩码AP,在ADE20K上产生 + 2.3/+ 2.9 mIoU,与没有位置编码和绝对位置嵌入,分别表明相对位置偏差的有效性。还要注意,尽管包含绝对位置嵌入提高了图像分类准确性 (+ 0.4%),但它损害了对象检测和语义分割 (COCO上的-0.2框/掩码AP和ad20k上的-0.6 mIoU)。
尽管最近的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比较了它们在这三个任务上的准确性,表明它们在视觉建模中同样准确。
与Performer [13] 相比,Performer [13] 是最快的变压器架构之一 (参见 [59]),所提出的基于移位窗口的自我注意计算和整体Swin变压器架构稍快 (参见表5),与使用swin-t的ImageNet-1K上的表演者相比,达到 + 2.3% top-1的精度 (见表6)。
5.结论
本文介绍了Swin Transformer,这是一种新型的vision transformer,可产生分层特征表示,并且相对于输入图像尺寸具有线性计算复杂性。Swin Transformer在COCO对象检测和ADE20K语义分割方面达到了最先进的性能,大大超过了以前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大表现将鼓励视觉和语言信号的统一建模。
作为Swin Transformer的关键要素,基于移位窗口的自我注意在解决视觉问题上是有效且有效的,我们也期待研究其在自然语言处理中的使用。
致谢
我们感谢微软的许多同事的帮助,特别是李东和韦福如的有益讨论; 肖斌、卢元和张磊在数据集上的帮助。
A1. 详细架构详细的架构规范
示于表7中,其中假设所有架构的输入图像大小为224 × 224。“Concat n × n” 表示补丁中n × n个相邻特征的串联。此操作导致特征图的下采样速率为n。“96-d” 表示输出尺寸为96的线性层。“win. sz。7 × 7 ”表示窗口大小为7 × 7的多头自我注意模块。
A2. 详细的实验设置
A2.1.ImageNet-1K上的图像分类
通过在最后阶段的输出特征图上应用全局平均池化层,然后使用线性分类器来执行图像分类。我们发现此策略与使用ViT [19] 和DeiT [60] 中的附加类令牌一样准确。在评估中,报告了使用单个作物的前1名准确性。
定期ImageNet-1K训练
训练设置大多遵循 [60]。对于所有模型变体,我们采用2242的默认输入图像分辨率。对于其他分辨率 (例如3842),我们对以2242分辨率训练的模型进行微调,而不是从头开始训练,以减少GPU消耗。
当使用2242输入从头开始训练时,我们使用AdamW [36] 优化器来使用具有20个线性预热的余弦衰减学习率调度器来300历元。使用1024的批量大小、0.001的初始学习率、0.05的权重衰减和最大范数为1的梯度削波。我们在训练中包括 [60] 的大多数增强和正则化策略,包括随机增强 [16],混合 [74],Cutmix [72],随机擦除 [79] 和随机深度 [34],但不重复增加 [30] 和指数移动平均 (EMA) [44],这不会提高性能。请注意,这与 [60] 相反,在 [60] 中,重复增强对于稳定ViT的训练至关重要。对于较大的模型,即分别用于Swin-T、Swin-S和Swin-B的0.2、0.3、0.5,采用越来越大的随机深度增加。
对于具有较大分辨率的输入进行微调,我们采用adamW [36] 优化器,用于30个阶段,具有10-5的恒定学习率,10-8的权重衰减,以及与第一阶段相同的数据增强和正则化,除了将随机深度比设置为0.1。
ImageNet-22K预训练
我们还对更大的ImageNet-22K数据集进行预训练,其中包含1420万张图像和22k类。培训分两个阶段进行。对于具有2242输入的第一阶段,我们使用AdamW优化器进行60个历元,使用具有5个历元线性预热的线性衰减学习速率调度器。使用4096的批量大小、0.001的初始学习率和0.01的权重衰减。在具有2242/3842输入的ImageNet-1K微调的第二阶段中,我们训练了30个时期的模型,批量大小为1024,恒定学习率为10-5,权重衰减为10-8。
A2.2 COCO上的物体检测
对于消融研究,我们考虑了四个典型的对象检测框架: 级联掩模r-cnn [28,5],ATSS [76],RepPoints v2 [11] 和mmdetection [9] 中的稀疏RCNN [55]。对于这四个框架,我们使用相同的设置: 多尺度训练 [7,55] (调整输入大小,使较短的一面在480和800之间,而较长的一面最多为1 444 3),AdamW [43] 优化器 (0.0001的初始学习率,0.05的重量衰减和16的批量大小) 和3倍时间表 (36个阶段,学习率在27和444个阶段衰减10倍)。
为了进行系统级比较,我们采用了改进的HTC [8] (表示为HTC),带有instaboost [21],更强的多尺度训练 [6] (调整输入大小,使较短的一面在400和1400之间,而较长的一面最多1600),6x进度表 (72个进度表,学习率在进度表63和69下降了0.1倍),softNMS [4],以及在最后阶段的输出处附加的额外全局自我注意层,并ImageNet-22K预训练模型作为初始化。我们对所有Swin变压器模型采用0.2比的随机深度。
A2.3.ADE20K上的语义分割
ADE20K [80] 是一个广泛使用的语义分割数据集,涵盖了广泛的150语义类别。它总共有25k个图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mmsegmentation [15] 中的UperNet [66] 作为其高效率的基础框架。
在训练中,我们采用AdamW [43] 优化器,初始学习率为6 × 10-5,权重衰减为0.01,使用线性学习率衰减的调度器,以及1,500迭代的线性预热。模型在8个GPU上训练,每个GPU有2个图像,进行160K次迭代。对于增强,我们采用随机水平翻转的mm分割中的默认设置,在比率范围 [0.5,2.0] 内的随机重新缩放和随机光度失真。具有0.2比的随机深度适用于所有Swin变压器模型。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] x的分辨率进行多尺度测试一下。在报告测试一下成绩时,训练图像和验证图像都用于训练,遵循常见的做法 [68]。
A3. 更多实验
a3.1 不同输入尺寸的图像分类
表8列出了从2242到3842不同输入图像尺寸的Swin变压器的性能。通常,较大的输入分辨率可提高top-1精度,但推理速度较慢。
A3.2 ResNe(X)t onCOCO的不同优化器
表9比较了ResNe(X)t主干在COCO物体检测上的AdamW和SGD优化器。此比较中使用了级联掩码r-cnn框架。虽然SGD被用作级联掩码r-cnn框架的默认优化器,但我们通常通过将其替换为AdamW优化器来观察到更高的准确性,特别是对于较小的主干。因此,与建议的Swin变压器架构相比,我们将AdamW用于ResNe(X)t主干。