深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Abstract

本文提出了一种新的vision Transformer,称为Swin Transformer,它可以作为计算机视觉的通用主干。在将Transformer从语言转移到视觉中的挑战主要源于两个领域之间的差异,例如视觉实体的尺度变化较大,以及图像中像素的高分辨率相对于文本中的单词。为了解决这些差异,我们提出了一种分层Transformer,其表示是通过移位窗口计算的。移位窗口方案通过将自注意力计算限制在非重叠的局部窗口内,同时允许窗口之间的交叉连接,从而提高了效率。这种分层架构具有在不同尺度上建模的灵活性,并且与图像大小的关系具有线性计算复杂性。Swin Transformer的这些特性使其适用于各种视觉任务,包括图像分类(在ImageNet-1K上的87.3 top-1准确率)以及目标检测(在COCO testdev上的58.7 box AP51.1 mask AP)和语义分割(在ADE20K val上的53.5 mIoU)等密集预测任务。其性能大幅超过了先前技术水平,在COCO上提升了+2.7 box AP+2.6 mask APADE20K上提升了+3.2 mIoU,展示了基于Transformer的模型作为视觉主干的潜力。分层设计和移位窗口方法对于所有MLP架构也证明是有益的。

1. Introduction

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

[70]:resnext:分组卷积

另一方面,在自然语言处理(NLP)中,网络架构的演变走上了不同的道路,而如今占主导地位的架构是Transformer [64]。(NLP中)Transformer被设计用于序列建模和转导任务,其突出之处在于利用注意力机制来建模数据中的长程依赖关系。在语言领域取得的巨大成功促使研究人员研究如何将其应用于计算机视觉,在那里它最近在特定任务上展示了有望的结果,特别是在图像分类 [20] 和联合视觉-语言建模 [47] 上。

在本文中,我们试图扩展Transformer的适用性,使其能够像在NLP中一样成为计算机视觉的通用骨干(不仅仅在分类识别的任务上有好的结果,在目标检测和语义分割都有好的结果),就像CNN在视觉中一样。我们观察到,在将其在语言领域的高性能转移到视觉领域中存在显著挑战,这可以通过两种模态之间的差异来解释。其中一个差异涉及尺度。与在语言Transformer中用作处理基本元素的单词标记不同,视觉元素在尺度上可以有很大的变化,这是在诸如目标检测 [42, 53, 54] 等任务中引起关注的问题(能够识别多尺度的目标)ViT的缺点,输入输出以及每一个stage的输出尺度是固定的,不便于在目标检测和语义分割等需要融合多尺度目标特征的任务上进行扩展)在现有的基于Transformer的模型 [64, 20] 中,标记都具有固定的尺度,这是这些视觉应用不适用的特性。另一个差异是图像中的像素分辨率比文本段落中的单词高得多。存在许多视觉任务,如语义分割,需要在像素级进行密集预测,而对于高分辨率图像上的Transformer来说,这是难以处理的,因为其自注意力的计算复杂性与图像大小的平方成正比。为了解决这些问题,我们提出了一种通用的Transformer骨干,称为Swin Transformer,它构建了分层特征图,并具有与图像大小成线性关系的计算复杂性。如图1(a)所示,Swin Transformer通过从小尺寸的图块开始(用灰色轮廓显示),并逐渐在深层Transformer层中合并相邻的图块,构建了一个分层表示(每一层输出不同尺度信息。然后将不同尺度的信息进行融合)借助这些分层特征图,Swin Transformer模型可以方便地利用密集预测的先进技术,如特征金字塔网络(FPN[42]U-Net [51]通过在图像中分割非重叠窗口并在这些窗口内本地计算自注意力,实现了线性计算复杂性(用红色轮廓表示)。每个窗口中的图块数量是固定的,因此复杂性变为与图像大小成线性关系。这些优点使Swin Transformer适用于各种视觉任务的通用骨干,与以前的基于Transformer的架构 [20] 不同,VIT生成单一分辨率的特征图并具有二次复杂性。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第1张图片

1 (a) 提出的Swin Transformer通过在深层中合并图像块(用灰色显示)来构建分层特征图,并且由于仅在每个局部窗口内计算自注意力(用红色显示),具有与输入图像大小成线性关系的计算复杂性。因此,它可以作为图像分类和密集识别任务的通用骨干。 (b) 相反,先前的视觉Transformer [20] 生成单一低分辨率的特征图,并且由于全局计算自注意力,其计算复杂性与输入图像大小成二次关系。

Swin Transformer一个关键设计元素是在连续的自注意力层之间移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(见表4)。这种策略在实际延迟方面也很有效:窗口内的所有查询块共享相同的键集L,这有助于在硬件中进行内存访问。相比之下,早期基于滑动窗口的自注意力方法 [33, 50] 由于为不同的查询像素使用不同的键集,在一般硬件上延迟较高。我们的实验表明,所提出的移动窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上相似(见表5和表6)。移动窗口方法对于所有MLP架构 [61] 也证明是有益的。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第2张图片

2。演示了在提出的Swin Transformer架构中计算自注意力的移动窗口方法。在第l层(左侧),采用常规的窗口分区方案,并在每个窗口内计算自注意力。在下一层L+ 1(右侧),窗口分区发生了移动,形成了新的窗口。新窗口中的自注意力计算跨越了第L层中先前窗口的边界,为它们提供了连接。

提出的Swin Transformer在图像分类、目标检测和语义分割的识别任务中取得了强大的性能。在这三项任务中,它在相似的延迟下显著优于ViT / DeiT [20, 63] ResNe(X)t模型 [30, 70]。在COCO测试集上,其58.7盒子AP51.1面具AP超过了先前最先进的结果,分别比Copy-paste [26](不使用外部数据)的+2.7盒子APDetectoRS [46]+2.6面具AP。在ADE20K语义分割任务中,其在验证集上获得了53.5 mIoU,相比于先前最先进的SETR [81]提高了+3.2 mIoU。在ImageNet-1K图像分类任务中,它还取得了87.3%top-1准确度。

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

2. Related Work

CNN及其变体一直是计算机视觉中的标准网络模型。虽然CNN已存在几十年[40],但直到AlexNet的引入[39]CNN才开始腾飞并成为主流。自那时以来,人们提出了更深层次、更有效的卷积神经网络架构,以进一步推动计算机视觉中的深度学习浪潮,例如VGG [52]GoogleNet [57]ResNet [30]DenseNet [34]HRNet [65]EfficientNet [58]。除了这些架构的进步之外,还有很多工作致力于改进单个卷积层,如深度可分离卷积 [70] 和可变形卷积 [18, 84]尽管CNN及其变体仍然是计算机视觉应用的主要骨干架构,我们强调Transformer-like架构在视觉和语言之间实现统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了强大的性能,我们希望它能为建模方式的转变做出贡献。

基于自注意力的骨干架构受到自注意力层和Transformer架构在NLP领域的成功启发,一些研究采用自注意力层来替代流行的ResNet [33, 50, 80]中的一些或所有空间卷积层。在这些工作中,自注意力在每个像素的局部窗口内计算以加快优化过程 [33],它们在准确性/FLOPs的权衡方面略微优于相应的ResNet架构然而,它们昂贵的内存访问使得它们的实际延迟显著大于卷积网络 [33]。与使用滑动窗口不同,我们提出在连续的层之间移动窗口,这可以在一般硬件上实现更有效的实现。

自注意力/Transformer 作为另一种研究方向,是通过在标准CNN架构中添加自注意力层或Transformer来增强。自注意力层可以通过提供编码远程依赖性或异构交互的能力,来补充骨干网络 [67, 7, 3, 71, 23, 74, 55] 或头网络 [32, 27]。最近,Transformer中的编码器-解码器设计已经应用于目标检测和实例分割任务 [8, 13, 85, 56]。我们的工作探讨了将Transformer用于基本视觉特征提取的适应性,并与这些工作互补。

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

3. Method

3.1. Overall Architecture

Swin Transformer架构的概述如图3所示,图中展示了其Tian版本(SwinT)。它首先通过一个patch切分模块(类似于ViT)将输入的RGB图像分割为非重叠的patch。每个patch被视为一个“token”其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用4×4patch大小,因此每个patch的特征维度为4×4×3=48。在这个原始值特征上应用线性嵌入层,将其投影到任意维度(表示为C(投影维度C为自己设置)。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第3张图片

3 (a) Swin TransformerSwin-T)的架构; (b) 两个连续的Swin Transformer块(使用方程(3)的符号表示)。W-MSASW-MSA分别是带有常规和移位窗口配置的多头自注意力模块。

在这些patch toke上应用了多个带有修改的自注意力计算的Transformer块(Swin Transformer块)。这些Transformer块保持了token的数量(H/4 × W/4),与线性嵌入一起被称为阶段L”

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

Swin Transformer块; Swin Transformer是通过将Transformer块中的标准多头自注意力(MSA)模块替换为基于移动窗口的模块(在第3.2节中描述)而构建的,而其他层保持不变。如图3(b)所示,Swin Transformer块包括一个基于移动窗口的MSA模块(W-MSA),后跟一个具有GELU非线性激活函数的2MLP。在每个MSA模块和每个MLP之前都应用了LayerNormLN)层,每个模块之后都应用了残差连接。

3.2. Shifted Window based Self-Attention

(阐述了为什么VIT不能够在目标检测和语义分割等密集预测任务上取得好成绩的原因)

标准的Transformer架构[64]及其用于图像分类的改编[20]都进行全局自注意力计算,其中计算了一个token与所有其他token之间的关系。全局计算导致与token数量成二次关系的复杂性,使其不适用于许多需要大量token进行密集预测或表示高分辨率图像的视觉问题。

为了进行有效的建模,我们建议在局部窗口内计算自注意力。窗口被布置为以非重叠的方式均匀划分图像。假设每个窗口包含M × Mpatch,全局MSA模块和基于图像大小为h × w的窗口的MSA模块的计算复杂性如下:

Ω(MSA) = 4hwC2 + 2(hw)2C, (1)

Ω(W-MSA) = 4hwC2 + 2M2hwC, (2)

其中前者与patch数量hw成二次关系,而后者在M固定时(默认设置为7)是线性的。全局自注意力计算通常对于大的hw来说是不可承受的,而基于窗口的自注意力是可扩展的。

(引入基于窗口的自注意力机制之后,缺乏了窗口之间的链接,采用shift Windows可以实现窗口之间的cross attention)

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

如图2所示,第一个模块使用常规的窗口分区策略,从左上角像素开始,8 × 8特征图被均匀分割成2 × 2个大小为4 × 4的窗口(M = 4)。然后,下一个模块采用了与前一层不同的窗口配置,通过将窗口从常规分区的窗口中位移(M/2,M/2;向下取整)像素。采用移动窗口分区方法,连续的Swin Transformer块计算如下:

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第4张图片

采用移动窗口分区方法,连续的Swin Transformer块的计算如下:

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第5张图片

其中,zl and zl分别表示块 L的 (S)W-MSA 模块和 MLP 模块的输出特征;W-MSA SW-MSA 分别表示使用常规和移动窗口分区配置的基于窗口的多头自注意力。

移动窗口分区方法在前一层的相邻非重叠窗口之间引入了连接,并在图像分类、目标检测和语义分割中表现出效果,如表4所示。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第6张图片

4。在三个基准测试中使用Swin-T架构进行的关于移动窗口方法和不同位置嵌入方法的消融研究。w/o shifting:所有自注意力模块采用常规窗口分区,不进行移动;abs. pos.ViT的绝对位置嵌入项;rel. pos.:具有额外的相对位置偏置项的默认设置(参见方程(4));app.:方程(4)中的第一个缩放的点积项。

移动窗口分区的一个问题是它将导致更多的窗口,从h / M × w / M(h / M + 1) × (w / M+1)在移动配置中,其中一些窗口可能小于M × M一种简单的解决方案是将较小的窗口填充到大小为M × M,并在计算注意力时屏蔽填充值。当常规分区中的窗口数量较小时,例如2 × 2,采用这种简单解决方案会导致计算量的显著增加(2 × 2 → 3 × 3,增加了2.25倍)。在这里,我们提出了一种更有效的批处理计算方法,通过向左上方向进行循环移位,如图4所示。在这次移位后,一个批处理窗口可能由几个在特征图中不相邻的子窗口组成,因此采用了屏蔽机制,将自注意力计算限制在每个子窗口内。采用循环移位后,批处理窗口的数量保持与常规窗口分区相同,因此也是高效的。这种方法的低延迟在表5中显示。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第7张图片

4。对于移动窗口分区中自注意力的有效批处理计算方法的示意图。

在计算自注意力时,我们遵循[49, 1, 32, 33],通过将相对位置偏置B RM2×M2 (由于q,k,vRM2×d QKT属于RM2×M2添加到每个头部以计算相似性:

其中,QKV RM2×d 分别是查询、键和值矩阵;d 是查询/键的维度,而 M^2 是窗口中的patch数量。由于每个轴上的相对位置位于范围 [−M + 1, M − 1] 内,我们对一个较小尺寸的偏置矩阵Bˆ R(2M−1)×(2M−1) 进行参数化,B 中的值来自Bˆ

我们观察到相对于没有这个偏置项或使用绝对位置嵌入的对照组,有显著的改进,如表4所示。在输入中进一步添加绝对位置嵌入,就像[20]中所做的那样,会导致性能稍微下降,因此在我们的实现中没有采用。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第8张图片

4. 在三个基准测试上使用Swin-T架构对位移窗口方法和不同位置嵌入方法进行消融研究。w/o shifting: 所有自注意模块采用常规窗口划分,没有位移;abs. pos.: ViT的绝对位置嵌入项;rel. pos.: 使用额外的相对位置偏置项的默认设置(参见公式(4));app.: 公式(4)中的第一个缩放点积项。

补:相对位置偏执的计算过程。

在预训练中学到的相对位置偏置也可以用于通过双三次插值[20, 63]初始化具有不同窗口大小的模型进行微调。

3.3. Architecture Variants

我们构建了我们的基础模型,称为Swin-B,其模型大小和计算复杂度与ViTB/DeiT-B相似。我们还引入了Swin-TSwin-SSwin-L,它们的模型大小和计算复杂度分别为基础模型的0.25倍、0.5倍和2倍左右。请注意,Swin-Tx0.25)和Swin-Sx0.5)的复杂性与ResNet-50DeiT-S(--Swin-Tx0.25)ResNet-101(--Swin-Sx0.5)相似,分别为0.25×0.5×的基础模型。默认情况下,窗口大小设置为M = 7。每个头的查询维度为d = 32,每个MLP的扩展层为α = 4transformer block输出送入到MLP,进过MLP的处理之后输出维度为transformer block输出维度的4倍),适用于所有实验。这些模型变体的架构超参数如下:

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第9张图片

其中,C是第一阶段隐藏层的通道数。模型变体在ImageNet图像分类任务上的模型大小、理论计算复杂度(FLOPs)和吞吐量列在表1中。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第10张图片

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第11张图片

1. ImageNet-1K分类任务上不同骨干网络的比较。吞吐量是使用[68]GitHub存储库和V100 GPU进行测量的,遵循[63]的方法。

4. Experiments

我们在ImageNet-1K图像分类[19]COCO目标检测[43]ADE20K语义分割[83]上进行实验。在接下来的内容中,我们首先将提出的Swin Transformer架构与先前在这三个任务上的最先进方法进行比较。然后,我们对Swin Transformer的重要设计元素进行消融实验。

4.1. Image Classification on ImageNet-1K

设置(Settings对于图像分类,我们在包含128万训练图像和1,000个类别的50,000个验证图像的ImageNet-1K上对提出的Swin Transformer进行基准测试。报告了单个裁剪的top-1准确度。我们考虑两种训练设置:

常规ImageNet-1K训练。此设置主要遵循[63]。我们使用AdamW [37]优化器进行300个时期,采用余弦衰减学习率调度程序和20个时期的线性热身。使用1024的批量大小,初始学习率为0.001,权重衰减为0.05。我们在训练中包含了[63]的大多数增强和正则化策略,但排除了重复的增强[31]EMA [45],这并不会提高性能。请注意,[63]相反,重复的增强对于稳定ViT的训练是至关重要的。

 • ImageNet-22K上进行预训练,然后在ImageNet-1K上进行微调。我们还在更大的ImageNet-22K数据集上进行预训练,该数据集包含1420万图像和22,000个类别。我们使用AdamW优化器进行90个时期,使用线性衰减学习率调度程序和5个时期的线性热身。使用4096的批量大小,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K微调中,我们使用1024的批量大小,恒定的学习率为10^-5,权重衰减为10^-8,对模型进行30个时期的训练。

使用常规ImageNet-1K训练的结果1(a)显示了与其他骨干网络的比较,包括基于TransformerConvNet的网络,使用常规ImageNet-1K训练。

与先前的Transformer-based架构(DeiT [63])相比,即使复杂度相似,Swin Transformer也明显优于对应的DeiT架构:使用2242输入,Swin-T81.3%)优于DeiT-S79.8%+1.5%;使用2242/3842输入,

Swin-B83.3%/84.5%)优于DeiT-B81.8%/83.1%+1.5%/1.4%。与最先进的ConvNets,即RegNet [48]EfficientNet [58]相比,Swin Transformer在速度-准确度权衡方面略有优势。值得注意的是,RegNet [48]EfficientNet [58]是通过彻底的架构搜索获得的,而提出的Swin Transformer是从标准Transformer进行调整的,并有很大的改进潜力。

4.2. Object Detection on COCO

设置目标检测和实例分割实验在包含118K训练图像、5K验证图像和20K测试集图像的COCO 2017上进行。在验证集上进行了消融研究,并在测试集上进行了系统级别的比较。对于消融研究,我们考虑了四种典型的目标检测框架:级联Mask R-CNN [29, 6]ATSS [79]RepPoints v2 [12]Sparse RCNN [56],它们在mmdetection [10]中实现。对于这四个框架,我们使用相同的设置:多尺度训练 [8, 56](调整输入大小,使得较短的一侧在480800之间,较长的一侧最大为1333),AdamW [44] 优化器(初始学习率为0.0001,权重衰减为0.05,批量大小为16),以及3x 计划(36个时期)。对于系统级别的比较,我们采用了改进的HTC [9](标记为HTC++),使用instaboost [22],更强的多尺度训练 [7]6x 计划(72个时期),soft-NMS [5] ImageNet-22K 预训练模型进行初始化。

我们将Swin Transformer与标准的ConvNets(即ResNe(X)t)以及先前的Transformer网络(例如DeiT)进行比较。比较是通过仅更改backbones并保持其他设置不变来进行的。请注意,由于其分层特征图,Swin TransformerResNe(X)t可直接应用于上述所有框架,而DeiT仅生成单一分辨率的特征图,无法直接应用。为了进行公平比较,我们遵循[81]使用反卷积层为DeiT构建分层特征图。

ResNe(X)t的比较2(a)列出了Swin-TResNet-50在四个目标检测框架上的结果。我们的Swin-T架构在模型大小、FLOPs和延迟略大的情况下,相对于ResNet-50实现了一致的+3.44.2box AP增益。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第12张图片

2(b)比较了Swin TransformerResNe(X)t在使用Cascade Mask RCNN时不同模型容量下的情况。Swin Transformer实现了较高的检测准确性,分别为51.9box AP45.0mask AP,相对于具有相似模型大小、FLOPs和延迟的ResNeXt10164x4d,获得了+3.6 box AP+3.3 mask AP的显著增益。在使用改进的HTC框架获得更高基线的52.3 box AP46.0 mask AP的情况下,Swin Transformer的增益也很高,分别为+4.1 box AP+3.1 mask AP(见表2(c))。关于推理速度,尽管ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的架构是使用内置的PyTorch函数实现的,其中并非所有都经过了良好的优化。深度核优化超出了本文的范围。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第13张图片

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第14张图片

2. COCO目标检测和实例分割上的结果。表示使用额外的反卷积层生成分层特征图。*表示多尺度测试。

DeiT的比较在表2(b)中展示了在Cascade Mask R-CNN框架下使用DeiT-S的性能。Swin-T的结果比DeiT-S+2.5box AP+2.3mask AP,具有相似的模型大小(86M vs. 80M)和显著更高的推理速度(15.3 FPS vs. 10.4 FPS)。DeiT较低的推理速度主要是由于其对输入图像大小的二次复杂度。

与先前最先进模型的比较2(c)比较了我们的最佳结果与先前最先进模型的结果。我们的最佳模型在COCO test-dev上实现了58.7box AP51.1mask AP,超过了先前最佳结果+2.7 box AP(无外部数据的Copy-paste [26])和+2.6 mask APDetectoRS [46])。

4.3. Semantic Segmentation on ADE20K

设置

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

结果

3列出了不同方法/骨干网络对的mIoU、模型大小(#param)、FLOPsFPS。从这些结果可以看出,相比于计算成本相似的DeiT-SSwin-SmIoU更高(49.3 vs. 44.0)。它还比ResNet-101+4.4 mIoU,比ResNeSt-101 [78]+2.4 mIoU。我们的Swin-L模型在ImageNet-22K预训练的情况下在验证集上达到了53.5mIoU,超过了先前最佳模型+3.2 mIoUSETR [81]50.3 mIoU,其模型大小更大)。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第15张图片

3. ADE20K验证集和测试集上的语义分割结果。表示使用额外的反卷积层生成分层特征图。表示模型在ImageNet-22K上进行了预训练。

4.4. Ablation Study

在这一部分,我们通过使用ImageNet-1K图像分类、COCO目标检测上的Cascade Mask R-CNNADE20K语义分割上的UperNet,来剖析所提出的Swin Transformer中的重要设计元素。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第16张图片

Table 4. 采用Swin-T架构在三个基准测试上对移位窗口方法和不同位置嵌入方法进行的消融研究。w/o shifting:所有自注意模块都采用常规窗口分割,没有移位;abs. pos.ViT的绝对位置嵌入项;rel. pos.:带有额外相对位置偏置项的默认设置(见公式(4));app.:公式(4)中的第一个缩放点积项。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第17张图片

Table 5. V100 GPU上不同自注意计算方法和实现的真实速度。

相对位置偏置

4显示了不同位置嵌入方法的比较。相对位置偏置的Swin-T相对于没有位置编码和使用绝对位置嵌入的模型,在ImageNet-1K上的top-1准确率分别提高了+1.2%/+0.8%,在COCO上的box AP/mask AP提高了+1.3/+1.5,而在ADE20K上的mIoU提高了+2.3/+2.9,表明了相对位置偏置的有效性。同时请注意,虽然包含绝对位置嵌入可以提高图像分类的准确性(+0.4%),但会损害目标检测和语义分割的性能(在COCO上的box/mask AP下降了-0.2,在ADE20K上的mIoU下降了-0.6)。(绝对位置嵌入会提高分类性能,但是会降低目标检测和语义分割的性能)

(在ViTDeiT中放弃使用平移不变性,但是我们仍然认为平移不变性在目标检测和语义分割中是非常重要的)

尽管最近的ViT/DeiT模型在图像分类中放弃了平移不变性,尽管平移不变性在视觉建模中长期以来都被证明是至关重要的,但我们发现鼓励一定的平移不变性的归纳偏见仍然是通用视觉建模的首选,特别是对于目标检测和语义分割等密集预测任务。

不同的自注意方法 在表5中比较了不同自注意计算方法和实现的实际速度。我们的循环移位实现在硬件上比朴素填充更有效,特别是在较深的阶段。总体而言,在Swin-TSwin-SSwin-B上分别提高了13%、18%和18%的速度。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第18张图片

Table 5. V100 GPU上不同自注意计算方法和实现的真实速度。

基于提出的移动窗口方法构建的自注意模块分别比朴素/内核实现中使用滑动窗口的四个网络阶段更为高效,分别为40.8×/2.5×20.2×/2.5×9.3×/2.1×7.6×/1.8×。总体而言,基于移动窗口构建的Swin Transformer架构对于Swin-TSwin-SSwin-B分别比基于滑动窗口构建的变体快4.1/1.54.0/1.53.6/1.5倍。表6比较了它们在三个任务上的准确性,显示它们在视觉建模中具有相似的准确性。

Performer [14]相比,它是最快的Transformer架构之一(参见[60]),所提出的基于移动窗口的自注意计算和整体的Swin Transformer架构略快(参见表5),同时在ImageNet-1K上使用Swin-T相对于Performer实现+2.3%top-1准确性(见表6)。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第19张图片

6显示了使用不同自注意计算方法的Swin Transformer在三个基准任务上的准确性。

5. Conclusion

这篇论文介绍了Swin Transformer,这是一种新的视觉Transformer,能够生成分层特征表示并且在输入图像大小方面具有线性的计算复杂度Swin TransformerCOCO目标检测和ADE20K语义分割等任务上取得了最先进的性能,明显超过了之前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大性能能够促进对视觉和语言信号进行统一建模。作为Swin Transformer的关键元素,基于偏移窗口的自注意力在视觉问题上表现出了有效和高效的特性,我们期待进一步研究它在自然语言处理中的应用。

Acknowledgement

我们感谢Microsoft的许多同事提供的帮助,特别是Li DongFuru Wei进行了有益的讨论;同时也要感谢Bin XiaoLu YuanLei Zhang在数据集方面的支持。

A1. Detailed Architectures

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第20张图片

表格7展示了详细的架构规格,其中假定所有架构都使用224×224的输入图像尺寸。“Concat n × n”表示对一个patch中的n × n相邻特征进行串联。此操作导致特征图以n的倍率进行下采样。“96-d”表示输出维度为96的线性层。“win. sz. 7 × 7”表示窗口尺寸为7 × 7的多头自注意力模块。

A2. Detailed Experimental Settings

A2.1. Image classification on ImageNet-1K

MLP---> LN--->avage gloab pooling --->全连接输出为1000类。

图像分类通过在最后一个阶段的输出特征图上应用avage gloab pooling)全局平均池化层,然后接一个线性分类器来完成。我们发现,这种策略在准确性上与ViT [20]DeiT [63]中使用额外的class token一样有效。在评估中,报告了使用单一裁剪的 top-1 准确性。

常规 ImageNet-1K 训练的设置主要遵循 [63]。对于所有模型变体,我们采用默认的输入图像分辨率 224x224。对于其他分辨率,例如 384x384我们对在 224x224 分辨率上训练的模型进行微调,而不是从头开始训练,以减少 GPU 消耗(2D插值)

在使用 224x224 输入从头开始训练时,我们采用 AdamW [37] 优化器进行 300 个周期的训练,使用余弦衰减学习率调度器,其中包含 20 个周期的线性热身。使用批量大小为 1024,初始学习率为 0.001,权重衰减为 0.05,梯度裁剪的最大范数为 1。在训练中,我们采用了 [63] 中的大部分增强和正则化策略,包括 RandAugment [17]Mixup [77]Cutmix [75]、随机擦除 [82] 和随机深度 [35]但不包括重复增强 [31] 和指数移动平均 (EMA) [45],因为它们不会提高性能。请注意,这与 [63] 中的情况相反,其中重复增强对于稳定 ViT 的训练至关重要。对于较大的模型,即 Swin-TSwin-S Swin-B,采用逐渐增加的随机深度增强,分别为 0.20.3 0.5

对于更大分辨率的输入进行微调时,我们采用 AdamW [37] 优化器进行 30 个周期的训练,学习率保持为 10^(-5),权重衰减为 10^(-8),数据增强和正则化与第一阶段相同,只是将随机深度比例设置为 0.1

ImageNet-22K 预训练我们还在更大的 ImageNet-22K 数据集上进行预训练,该数据集包含 1420 万张图像和 2.2 万个类别。训练分为两个阶段。对于第一个阶段,输入为 224x224,我们使用 AdamW 优化器进行 90 个周期的训练,采用线性衰减学习率调度器,其中包括 5 个周期的线性热身。使用批量大小为 4096,初始学习率为 0.001,权重衰减为 0.01。在 ImageNet-1K 微调的第二阶段,输入为 224x224 384x384,我们对模型进行 30 个周期的训练,批量大小为 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],这些框架均在 mmdetection [10] 中实现。对于这四个框架,我们采用相同的设置:多尺度训练 [8, 56](将输入的短边调整为在 480 800 之间,长边最多为 1333),AdamW [44] 优化器(初始学习率为 0.0001,权重衰减为 0.05,批量大小为 16),以及3倍的训练轮次(36 个周期,学习率在第 27 33 个周期时减小 10×)。

对于系统级的比较,我们采用了改进的 HTC [9](标记为 HTC++),该框架使用 instaboost [22],更强的多尺度训练 [7](将输入的短边调整为在 400 1400 之间,长边最多为 1600),6倍的训练轮次(72 个周期,学习率在第 63 69 个周期时减小 0.1 倍),softNMS [5],以及在最后一个阶段的输出处附加了额外的全局自注意层和 ImageNet-22K 预训练模型进行初始化。我们对所有 Swin Transformer 模型采用随机深度,深度比率为 0.2

A2.3. Semantic segmentation on ADE20K

ADE20K [83]是一个广泛使用的语义分割数据集,涵盖了150个语义类别的广泛范围。总共有25,000张图像,其中20,000张用于训练,2,000张用于验证,另外3,000张用于测试。我们在 mmsegmentation [16] 中使用 UperNet [69] 作为基础框架,因为它具有高效性。

在训练中,我们使用 AdamW [44] 优化器,初始学习率为6 × 10^-5,权重衰减为0.01,使用线性学习率衰减的调度程序,以及1500次迭代的线性预热。模型在8GPU上进行训练,每个GPU上有2张图像,总共训练160,000次迭代。对于数据增强,我们采用 mmsegmentation 中的默认设置,包括随机水平翻转、在比例范围 [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.5, 1.75] 的多尺度测试。在报告测试得分时,遵循常规做法,使用训练图像和验证图像进行训练 [71]

A3. More Experiments

A3.1. Image classification with different input size

Table 8列出了不同输入图像大小(从224^2384^2)的Swin Transformer的性能。通常,较大的输入分辨率会导致更高的 top-1 准确性,但推理速度较慢。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第21张图片

8. ImageNet-1K分类上使用不同输入图像大小的Swin Transformers

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

CoCo上将ResNeXt的优化器换为AdamW具有更好的结果,AdamW优化器对于较小的骨干网络可以提高准确性。

9. COCO目标检测上比较了ResNe(X)t骨干网络的AdamWSGD优化器。在此比较中使用了Cascade Mask R-CNN框架。虽然SGD被用作Cascade Mask R-CNN框架的默认优化器,但我们通常观察到通过将其替换为AdamW优化器,特别是对于较小的骨干网络,可以提高准确性。因此,在与提出的Swin Transformer架构进行比较时,我们使用AdamW用于ResNe(X)t骨干网络。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第22张图片

A3.3. Swin MLP-Mixer

我们将提出的分层设计和移位窗口方法应用于MLP-Mixer架构,称为Swin-Mixer。表10显示了Swin-Mixer与原始MLPMixer架构MLP-Mixer [61]和后续方法ResMLP [61]的性能比较。Swin-Mixer在略小的计算预算(10.4G12.7G)下表现明显优于MLP-Mixer81.3%76.4%)。与ResMLP [62]相比,它在速度和准确性的权衡上也更好。这些结果表明了提出的分层设计和移位窗口方法的泛化能力。

深度学习之图像分类(十三)Swin Transformer: Hierarchical Vision Transformer using Shifted Windows详解(一)_第23张图片

10. Swin MLP-MixerImageNet-1K分类上的性能。D表示每个注意力头的通道数。吞吐量是使用[68]GitHub存储库和V100 GPU进行测量的,遵循[63]的方法。

你可能感兴趣的:(研究生学习-AI,transformer,深度学习,transformer)