使用移位窗口的分层视觉Transformer
继续阅读Transformer相关
0、摘要
本文提出了一种新的视觉Transformer,称为Swin Transformer,能够作为一个通用的骨干计算机视觉。将Transformer从语言适应到视觉的挑战来自于两个领域之间的差异,例如视觉实体的规模变化很大,图像中的像素分辨率高于文本中的单词。为了解决这些差异,我们提出了一个分层的变压器,其表示计算与移位窗口。移位加窗方案通过将自注意力计算限制到非重叠局部窗口同时还允许跨窗口连接来带来更高的效率。这种分层架构具有在各种尺度下建模的灵活性,并且具有相对于图像大小的线性计算复杂度。Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1 K上的86.4 top-1精度)和密集预测任务,如对象检测(COCO )和语义分割(ADE 20 K)。其性能远远超过了之前的最新技术水平,COCO的盒AP和罩AP分别为+2.7和2.6,ADE 20 K的盒AP和罩AP分别为+3.2 mIoU,显示了基于变压器的模型作为视觉支柱的潜力。代码和模型将在https://www.example.com上公开github.com/microsoft/Swin-Transformer。
(1、通过移动窗口来获得全局信息。2、降低了复杂度)
1、引言
计算机视觉建模长期以来一直由卷积神经网络(CNN)主导。从AlexNet [38]及其在ImageNet图像分类挑战中的革命性表现开始,CNN架构已经发展到通过更大的规模[29,73],更广泛的连接[33]和更复杂的卷积形式[67,17,81]变得越来越强大。随着CNN作为各种视觉任务的骨干网络,这些架构上的进步导致了性能的提高,从而广泛提升了整个领域。
另一方面,自然语言处理(NLP)中的网络架构的演变已经走上了一条不同的道路,今天流行的架构是Transformer [61]。Transformer专为序列建模和转导任务而设计,它以关注数据中的长距离依赖关系而闻名。它在语言领域的巨大成功促使研究人员研究其对计算机视觉的适应性,最近在某些任务上表现出有希望的结果,特别是图像分类[19]和联合视觉语言建模[46]。
在本文中,我们试图扩大的适用性Transformer,这样它可以作为计算机视觉的一个通用的骨干,是NLP和cnn一样的愿景。我们观察到显著转让其在语言领域的高性能视觉域可以解释为这两个模式之间的区别。这些差异包括规模之一。与令牌一词作为语言处理变压器的基本元素,视觉元素可以在规模变化明显,收到关注的问题等任务的对象检测。比起在现有的基于Transformer模型,令牌都是固定的,不适合这些视觉应用程序属性。另一个区别是像素更高分辨率的图片与文字段落的文本。存在许多视觉任务,如语义分割需要密集的像素级别的预测,这将是棘手的,变压器在高分辨率图像,它的计算复杂性self-attention二次图像大小。为了克服这些问题,我们提出一个通用的变压器骨架,叫做斯温变压器,构造层次特征图和线性计算复杂度图像大小。
如图1(a)所示,Swin Transformer结构分层表示,从小型斑块中概述(灰色),逐步在更深的变压器层合并相邻的补丁。与这些层次特征图谱,Swin Transformer模型可以方便地利用先进技术等密度预特征金字塔(FPN)[41]或U-Net [50]。线性计算复杂度是通过计算self-attention重叠窗口分区内局部图像(用红色标出)。补丁在每个窗口的数量是固定的,因此复杂性成为线性图像大小。这些优点使Swin Transformer合适作为一个通用的骨干为各种视觉任务,与以往相比,Transformer基础架构[19]产生特征图的一个决议,有二次的复杂性。 (传统的Transformer两个问题,第一个输出是一个量,类似于分类,第二复杂度是二次增长的)
Swin Transformer的一个关键设计元素是它在连续的自我注意层之间的窗口分区的移动,如图2所示。移动窗口桥接前一层的窗口,提供它们之间的连接,从而显著增强建模能力(参见表4)。这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁共享相同的密钥集1,这便于硬件中的存储器访问。相比之下,早期的基于滑动窗口的自关注方法[32,49]由于针对不同查询像素的不同键集而遭受通用硬件上的低延迟2。我们的实验表明,所提出的移位窗口方法具有比滑动窗口方法低得多的延迟,但在建模能力方面相似(参见表5和表6)。
所提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务上都取得了较好的性能。在三个任务的延迟相似的情况下,它显著优于ViT / DeiT[19,60]和ResNe(X)t模型[29,67]。它在COCO测试开发集上的58.7盒AP和51.1掩码AP超过了先前最先进的结果+2.7盒AP(复制-粘贴[25],不需要外部数据)和+2.6掩码AP(检测器[45])。在ADE20K语义分词上,在val集上得到53.5 mIoU,比之前的最先进的(SETR[78])提高了3.2 mIoU。在ImageNet-1K图像分类中,准确率最高达86.4%。
我们相信,一个跨越计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,并且两个领域的建模知识可以更深入地共享。我们希望Swin Transformer在各种视觉问题上的出色表现能够在社区中推动这种信念的深入,并鼓励视觉和语言信号的统一建模。
2. Related Work
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也受到NLP领域中自我注意层和Transformer架构成功的启发,一些作品使用自我注意层来替代流行的ResNet中的部分或全部空间卷积层[33,49,77]。在这些工作中,在每个像素的本地窗口中计算自我关注,以加速[32]的优化,它们比对应的ResNet架构实现了更好的精度/FLOPs权衡。然而,它们昂贵的内存访问导致其实际延迟明显大于卷积网络[32]。我们建议在连续的层之间移动窗口,而不是使用滑动窗口,这允许在一般硬件中更有效的实现。
Self-attention/Transformers to complement CNNs另一项工作是用自我注意层或transformer来增强标准的CNN架构。自注意层可以补充骨干网络[64,6,68,22,71,54]或头网络[31,26],提供编码远程依赖或异构交互的能力。最近,Transformer中的编码器-解码器设计已经被应用于对象检测和实例分割任务[7,12,82,55]。我们的工作探索了Transformer对基本视觉特征提取的适应,是这些工作的补充。
Transformer based vision backbones与我们的工作最相关的是vision Transformer (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]。我们的方法既高效又有效,在COCO对象检测和ADE20K语义分割上都实现了最先进的准确性。
3. Method
3.1. Overall Architecture
图3展示了Swin Transformer体系结构的概述,它演示了小型版本(SwinT)。它首先通过一个补丁分割模块(如ViT)将输入的RGB图像分割成非重叠的补丁。每个补丁都被视为一个“token”,其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用的patch大小为4×4,因此每个patch的特征维数为4×4 × 3 = 48。在这个原始值特征上应用一个线性嵌入层,将其投影到任意维度(记作C)。
后续在这些patch token上应用了几个带有修改的自注意计算的Transformer块(Swin Transformer块)。Transformer块维持token数量(H/4 × W/4),与线性嵌入一起被称为“阶段1”。
(H*W*3 => H/4*W/4*48 => H/4*W/4*48)
为了生成层次表示,随着网络的加深,通过补丁合并层减少tokens的数量。第一个patch合并层将每组2 × 2相邻patch的特征进行拼接,并对拼接后的4c维特征应用线性层。这将令牌的数量减少了2×2 = 4 (2×分辨率下采样)的倍数,输出维度设置为2C。然后使用Swin Transformer块进行特征变换,分辨率保持在h/8 × w/8。这个补丁合并和特征转换的第一个块记为“阶段2”。该过程重复两次,分别为“阶段3”和“阶段4”,输出分辨率分别为h/16 × w/16和h/32 × w/32。这些阶段共同产生层次表示,具有与典型卷积网络(如VGG[51]和ResNet[29])相同的特征地图分辨率。因此,该体系结构可以方便地替代现有的各种视觉任务的骨干网。
Swin Transformer是通过将Transformer块中的标准多头自注意(MSA)模块替换为基于移位窗口的模块(见章节3.2)来构建的,其他层保持不变。如图3(b)所示,Swin Transformer块包括一个基于移动窗口的MSA模块,然后是一个中间带有GELU非线性的2层MLP。在每个MSA模块和每个MLP之前应用一个LayerNorm (LN)层,在每个模块之后应用一个剩余连接。
3.2. Shifted Window based Self-Attention
标准的Transformer体系结构[61]及其对图像分类的自适应[19]都是全局自注意,其中计算一个令牌与所有其他令牌之间的关系。全局计算导致了令牌数量的二次复杂度,这使得它不适用于许多需要大量令牌进行密集预测或表示高分辨率图像的视觉问题。
Self-attention in non-overlapped windows
为了高效建模,我们提出在局部窗口内计算自注意。通过排列窗口,以不重叠的方式均匀地分割图像。假设每个窗口包含M×M patches,全局MSA模块和基于h ×w patches图像的一个窗口的计算复杂度为:
其中前者是patch号hw的二次,后者在M固定时(默认为7)是线性的。全局自注意计算对于大型硬件系统来说通常是负担不起的,而基于窗口的自注意是可伸缩的。
(这里证明了以前是平方的复杂度,现在是线性的复杂度,因为分块了,在块里算的自注意力)
Shifted window partitioning in successive blocks
基于窗口的自我注意模块缺乏跨窗口的连接,这限制了它的建模能力。为了引入跨窗口连接,同时保持非重叠窗口的高效计算,我们提出了一种移位窗口划分方法,它在连续的Swin Transformer块中的两个分区配置之间交替。
如图2所示,第一个模块采用规则的窗口划分策略,从左上角的像素开始,将8 × 8的feature map均匀划分为大小为4 × 4的2 × 2个窗口(M = 4),然后下一个模块采用从上一层窗口转移的窗口配置,通过替换窗口(m/2,m/2)像素从定期分区的窗口。
采用移位窗口划分方法,连续的Swin Transformer块计算为
式中,ˆzl和zl分别表示块l的(S)WMSA模块和MLP模块的输出特征;W-MSA和SW-MSA分别表示基于窗口的多头自注意,使用规则和移位的窗口分区配置。
移位窗口划分方法引入了上一层相邻无重叠窗口之间的连接,发现该方法在图像分类、目标检测和语义分割方面是有效的,如表4所示。
(因为上一节讲过计算注意力只在自己的patch里计算,那不同的patch其实是没有交互的,所以通过这种移位的方式再计算交互性)
Efficient batch computation for shifted configuration
转移窗口划分会产生更多窗口,从h M+1)×(M+1)到(h M+1)×(M ×+ 1),其中一些窗口会小于M m4。一个简单的解决方案是将较小的窗口填充到M × M的大小,并在计算注意力时屏蔽填充值。当规则分区中的窗口数较小时,如2 × 2时,这种朴素解增加的计算量相当大(2 × 2→3 × 3,是原来的2.25倍)。在这里,我们提出了一种更有效的批处理计算方法,即向左上角方向循环移动,如图4所示。在此转移之后,一个批处理窗口可能由几个在feature map中不相邻的子窗口组成,因此采用掩蔽机制将自注意计算限制在每个子窗口内。通过循环移位,批处理窗口的数量与常规窗口划分的数量保持一致,因此也是高效的。这种方法的低延迟如表5所示。
(分开了就变成9块,通过移位操作还变成原来面积相等的四块,这样通过带有mask,就可以和原来一样一次前向计算即可完成九块的操作,而不是把九块向外patch补零,巧妙)
Relative position bias
在计算自注意时,我们遵循[48,1,31,32]的方法,在计算相似度时,将相对位置偏差B∈RM2×M2:
其中Q、K、V∈RM2×d是查询、键和值矩阵;d为查询/键的维数,M2为一个窗口内补丁的数量。由于每个轴上的相对位置在[−M+1,M−1]范围内,我们参数化了一个较小大小的偏差矩阵Bˆ∈R(2M−1)×(2M−1),B中的值取自ˆB。
我们观察到,与没有这个偏差项或使用绝对位置嵌入的对照相比,有显著的改善,如表4所示。像[19]中那样,进一步向输入中添加绝对位置嵌入会略微降低性能,因此在我们的实现中没有采用它。
在训练前学习到的相对位置偏差也可以通过双三次插值来初始化不同窗口大小的微调模型[19,60]。
(没有使用绝对位置编码,相对位置编码?)
3.3 Architecture Variants
我们构建了称为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为第一阶段隐藏层的通道数。ImageNet图像分类的模型尺寸、理论计算复杂度(FLOPs)和模型变量的吞吐量如表1所示。
(因为每一次都是有两个组成,一个原始一个移位窗口,因此都是偶数,主要区别在于C,和第三个数量比如2-2-6-2,2-2-18-2)
4. Experiments
我们对ImageNet-1K图像分类[18]、COCO对象检测[42]和ADE20K语义分割进行了实验[80]。在接下来的文章中,我们首先将提议的Swin Transformer架构与之前的三个任务进行比较。然后,对Swin变压器的重要设计元素进行了分析。
4.1. Image Classification on ImageNet-1K
对于图像分类,我们在ImageNet-1K[18]上对建议的Swin Transformer进行了基准测试,其中包含了来自1000个类的1.28M的训练图像和50K的验证图像。对单一作物的准确度排名第一。我们考虑两种训练设置:
- 普通的的ImageNet-1K培训。该设置主要遵循[60]。我们使用了一个AdamW[36]优化器,用于使用余弦衰减学习速率调度程序的300个epoch和20个epoch的线性预热。批量大小为1024,初始学习率为0.001,权重衰减为0.05。我们在训练中纳入了大部分[60]的增强和正则化策略,除了反复增强的[30]和EMA的[44],它们并不能提高成绩。请注意,这与[60]相反,在[60]中,重复增强对稳定ViT训练至关重要。
- ImageNet-22K的预训练和ImageNet-1K的微调。我们还对更大的ImageNet-22K数据集进行了预训练,该数据集包含1420万张图像和22K类。我们使用一个AdamW优化器为60个epoch使用一个线性衰减学习速率调度和一个5 epoch线性预热。批次大小为4096,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K微调中,我们训练模型30个epoch,批处理大小为1024,恒定的学习速率为10−5,权值衰减为10−8。
使用常规ImageNet-1K训练的结果表1(a)显示了与使用常规ImageNet-1K训练的其他骨干的比较,包括基于transformer和基于convnet的。
与之前最先进的基于transformer的架构(即DeiT[60])相比,Swin transformer在类似的复杂性方面明显超过了对应的DeiT架构:使用2242输入时,swi - t(81.3%)比DeiT-S(79.8%)增加1.5%,使用2242/3842输入时,swi - b(83.3%/84.2%)比DeiT-B(81.8%/83.1%)增加1.5%/1.1%。
与最先进的ConvNets(即RegNet[47]和EfficientNet[57])相比,Swin Transformer实现了略微更好的速度-精度权衡。注意,虽然RegNet[47]和EfficientNet[57]是通过彻底的架构搜索获得的,但建议的Swin Transformer是从标准Transformer改编而来的,有很大的进一步改进的潜力。
Results with ImageNet-22K pre-training我们还在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精度,比ViT在相似的推理吞吐量(84.7 vs. 85.9 images/sec)下提高了2.0%,FLOPs (47.0G vs. 55.4G)略低。较大的Swin-L模型top-1准确率为86.4%,略优于Swin-B模型。
4.2 基于COCO的目标检测
Settings 在COCO 2017上进行目标检测和实例分割实验,该实验包含118K训练、5K验证和20K测试开发图像。使用验证集进行消融研究,并在测试开发中报告系统级比较。在消融研究中,我们考虑了四种典型的目标检测框架:级联Mask R-CNN[28,5]、ATSS[76]、RepPoints v2[11]和mmdetection中的Sparse RCNN[55]。对于这四个框架,我们使用了相同的设置:多尺度训练[7,55](调整输入的大小,使较短的一边在480到800之间,而较长的一边最多为1333),AdamW[43]优化器(初始学习率为0.0001,权重衰减为0.05,批处理大小为16),以及3x计划(36个时代)。在系统级比较方面,我们采用了一个改进的HTC[8](记为HTC++),它具有instaboost[21]、更强的多尺度训练[6]、6x schedule (72 epoch)、soft-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相比,我们的Swin-T架构带来了一致的+3.4 ~ 4.2框AP增益,具有略大的模型尺寸、FLOPs和延迟。
表2(b)对使用级联掩模RCNN的Swin Transformer和ResNe(X)t在不同模型容量下进行了比较。Swin Transformer实现了51.9盒AP和45.0掩码AP的高检测精度,这是+3.6盒AP和+3.3掩码AP相对ResNeXt10164x4d的显著增益,而ResNeXt10164x4d的型号大小、FLOPs和时延都差不多。使用改进的HTC框架,在52.3盒AP和46.0掩码AP的较高基线上,Swin Transformer的增益也很高,在+4.1盒AP和+3.1掩码AP(见表2(c))。关于推理速度,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的架构是通过内置的PyTorch函数实现的,这些函数并没有得到很好的优化。彻底的内核优化超出了本文的范围。
Comparison to DeiT使用级联掩码R-CNN框架的DeiT-S性能如表2(b)所示。在模型尺寸相似的情况下(86M vs. 80M), Swin-T的结果比DeiT-S高+2.5框AP和+2.3掩模AP,推理速度显著提高(15.3 FPS vs. 10.4 FPS)。DeiT的推理速度较低主要是由于其对输入图像大小的二次复杂度。
Comparison to previous state-of-the-art表2(c)将我们的最佳结果与以前的最先进模型进行了比较。我们的最佳模型在COCO测试开发上获得了58.7盒AP和51.1掩模AP,超过了之前的最佳结果+2.7盒AP(复制-粘贴[25],不需要外部数据)和+2.6掩模AP(检测器[45])。
4.3. Semantic Segmentation on ADE20K
ADE20K[80]是一个广泛使用的语义分词数据集,涵盖了150个语义类。它总共有25K张图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mmseg[15]中的UperNet[66]作为我们高效的基础框架。更多细节见附录。
表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[75]。我们在ImageNet-22K预训练下的Swin-L模型在val集上达到了53.5 mIoU,比之前的最佳模型高出了3.2 mIoU(模型尺寸较大的SETR[78]为50.3 mIoU)。
4.4. Ablation Study
在本节中,我们去除了所提出的Swin Transformer中的重要设计元素,使用ImageNet-1K图像分类,Cascade Mask R-CNN对COCO对象检测,以及UperNet对ADE20K语义分割。
Shifted windows在表4中报告了三个任务的转移窗口方法的消融。具有移位窗口分区的Swin-T在每个阶段都比基于单个窗口分区的同类在ImageNet-1K上的top-1准确率提高了+1.1%,在COCO上的top-1准确率提高了+2.8 box AP/+2.2 mask AP,在ADE20K上的准确率提高了+2.8 mIoU。结果表明,利用移位窗口建立前几层窗口间的连接是有效的。移位窗口的延迟开销也很小,如表5所示。
Relative position bias表4为不同位置嵌入方法的比较。相对位置偏差的Swin-T在ImageNet-1K上的精度为+1.2%/+0.8%,在COCO上的精度为+1.3/+1.5 box AP和+1.1/+1.3 mask AP,在ADE20K上的精度为+2.3/+2.9 mIoU,表明相对位置偏差的有效性。还需要注意的是,虽然包含绝对位置嵌入提高了图像分类精度(+0.4%),但它损害了对象检测和语义分割(-0.2 box/mask AP on COCO和-0.6 mIoU on ADE20K)。
虽然最近的ViT/DeiT模型放弃了图像分类中的平移不变性,尽管它长期以来被证明对视觉建模至关重要,但我们发现,鼓励某种平移不变性的归纳偏差仍然对通用视觉建模更可取。特别是针对对象检测和语义分割的密集预测任务。
Different self-attention methods表5比较了不同的自注意计算方法和实现的实际速度。我们的循环实现比单纯填充的硬件效率更高,特别是对于更深的阶段。总的来说,它在Swin-T、Swin-S和Swin-B上分别带来了13%、18%和18%的提速。
在4个网络阶段上,基于平移窗口方法构建的自注意模块的效率分别为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[13]相比,Performer[13]是最快的Transformer架构之一(见[59]),提出的基于移动窗口的自注意计算和整体的Swin Transformer架构略微快一些(见表5),同时使用Swin- t在ImageNet-1K上实现了+2.3%的top-1精度(见表6)。
5. Conclusion
本文介绍了Swin Transformer,这是一种新的视觉Transformer,它可以产生层次特征表示,并与输入图像大小相关,具有线性计算复杂度。Swin Transformer在COCO对象检测和ADE20K语义分割方面取得了最先进的性能,大大超过了以往最好的方法。我们希望Swin Transformer在各种视觉问题上的强大表现将鼓励视觉和语言信号的统一建模。
作为Swin Transformer的关键元素,基于移动窗口的自我注意在视觉问题上显示出了有效和高效的效果,我们也期待着研究它在自然语言处理中的应用。
附录只看了语义部分
A2.3. Semantic segmentation on ADE20K
ADE20K[80]是一个应用广泛的语义分词数据集,涵盖了150个语义类。它总共有25K张图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用了在mmsegmentation[15]中使用的UperNet[66]作为我们高效的基础框架。
在训练中,我们使用了AdamW[43]优化器,初始学习速率为6 × 10−5,权值衰减为0.01,使用线性学习速率衰减的调度器,以及1500次迭代的线性预热。模型在8个GPU上训练,每个GPU有2张图像,160K次迭代。对于增强,我们采用mmsegmentation中随机水平翻转,随机比例范围内重标[0.5,2.0]和随机光度失真的默认设置。所有Swin Transformer模型均采用比值为0.2的随机深度。swi - t, swi - s在标准设置上进行训练,前面的方法是输入512×512。‡表明这两个模型是在ImageNet-22K上预训练的,输入640×640进行训练。
在推理中,我们使用了一个多尺度测试,其分辨率为[0.5,0.75,1.0,1.25,1.5,1.75]×训练中的分辨率。在报告测试成绩时,训练图像和验证图像都用于训练,遵循通常的做法[68]。
总结:有一点点结合CNN思想,相邻之间算,但是Transformer的提出核心思想又是全局,所以感觉swin是CNN+Transformer,尤其是金字塔结构~具体打算翻翻源码看一下
先放在这里留坑https://github.com/microsoft/Swin-Transformer