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

  S-transformer摘要

摘要

文章提出一个新的结构叫swin transformer,可以作为计算机视觉的通用骨干。将transformer从语言实体应用到视觉实体中存在挑战:1、视觉实体的尺度变化较大,需要能够融合多尺度信息,但是ViT的stage尺度是固定的,2、图像中的像素是高分辨率的,形成的token往往具有很大的维度,通常计算代价和输入图像的分辨率成平方比,带来巨大的计算代价;解决办法:1、定义最基础的patch,以最小的patch为基础构建MxM的图像块,通过每个stage之后将图像块进行融合,每个stage可以输出不容尺度的特征信息,借助这些分层特征图,Swin Transformer模型可以方便地利用密集预测的先进技术,如特征金字塔网络(FPN[42]U-Net [51]2、通过定义最小的patch,以最小的patch的为基础,在一个融合MxM个patch的图像块内进行attention;通过在图像中分割非重叠窗口并在这些窗口内本地计算自注意力,每个窗口中的图块数量是固定的,因此复杂性变为与图像大小成线性关系。与此同时带来了另外一个问题:每个MxM的图像块的attention只在自己的区域内进行,不能与相邻区域之间信息的进行交互,为了解决这个问题提出了shift windows,通过shift操作,可以与不同的区域进行信息交互,从而每个MxM的图像块都可以尽可能的学习到相邻区域和全局的信息。Swin transformer的分层以及shift Windows的设计可以处理密集预测任务,在目标检测和语义分割取得了性能的大幅提升。分层设计和移位窗口方法对于所有MLP架构也证明是有益的。

Introduction

CNN架构通过更大的规模 [30, 76]、更广泛的连接 [34]和更复杂的卷积形式 [70, 18, 84]的演进而变得越来越强大。长期以来一直是卷积神经网络主导计算机视觉的主流任务。

在NLP中,随着网络架构的演变,Transformer逐渐占据主导地位;其突出之处在于利用注意力机制来建模数据中的长程依赖关系。Transformer在NLP取得的巨大成就促使人们不得不尝试将Transformer应用于解决计算机视觉的任务。

在本中我们试图扩展transformer的适用性,并证明transformer可以像CNNs成为计算机视觉任务的通用骨干。我们观察到,在将其在语言领域的高性能转移到视觉领域中存在显著挑战,这可以通过两种模态之间的差异来解释。其中一个差异涉及尺度,另一个差异是图像中的像素分辨率比文本段落中的单词高得多。我们提出了一种通用的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张图片

Swin Transformer在连续的自注意力层之间移动窗口分区, 移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力。并且窗口内的所有query块共享相同的key键集L,这种方法在减小实际延迟方面非常有效,相比之下,早期基于滑动窗口的自注意力方法 [33, 50] 由于为不同的查询像素使用不同的键集,在一般硬件上延迟较高。所以本文提出的移动窗口比滑动窗口有更低的延迟。移动窗口方法对于所有MLP架构 [61] 也证明是有益的。

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

Swin Transformer在图像分类、目标检测和语义分割的识别任务中取得了强大的性能。

Related Work

CNN及其变体一直是计算机视觉中的标准网络模型。人们提出了更深层次、更有效的卷积神经网络架构推动了卷积神经网络的发展,还有很多工作致力于改进单个卷积层,如深度可分离卷积 [70] 和可变形卷积 [18, 84]。尽管CNNs仍然是计算机视觉的主要骨干架构,但是我们相信transformer也可以像CNNs一样称为计算机视觉的主要骨干架构。我们的工作在几个基本的视觉识别任务上取得了强大的性能,拥有在视觉和语言之间实现统一建模的强大潜力。

一些研究采用自注意力层来替代流行的ResNet [33, 50, 80]中的一些或所有空间卷积层。在这些工作中,自注意力在准确性/FLOPs的权衡方面略微优于相应的ResNet架构。但昂贵的内存访问使得它们的实际延迟显著大于卷积网络,我们提出在连续的层之间移动窗口,这可以在一般硬件上实现更有效的实现。

另一些关于注意力的研究是通过在标准CNN架构中添加自注意力层或Transformer来增强。

我们的工作探讨了将Transformer用于基本视觉特征提取的适应性,并与之前所做的将transformer应用在目标检测和语义分割方面的工作形成互补。

ViT的开创性工作直接在非重叠的中等大小图像块上应用Transformer架构进行图像分类。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT [63]引入了几种训练策略,使ViT在使用较小的ImageNet-1K数据集时也能取得良好效果。但由于其低分辨率特征图和与图像大小呈二次增加的复杂性,它的架构不适用于在密集视觉任务上作为通用骨干网络使用,或者当输入图像分辨率较高时。通过直接上采样或者反卷积将ViT用到目标检测和语义分割等密集视觉任务时,性能相对较低,一些其他的工作是关于ViT结构修稿的但是表现出的分类结果并不理想。另一项与我们同时进行的工作 [66] 探索了在Transformer上构建多分辨率特征图的类似思路。它的复杂性仍然与图像大小成二次关系,而我们的复杂性是线性的,已被证明在建模视觉信号中的高相关性方面是有益的[36, 25, 41]。

3. Method

3.1. Overall Architecture

它首先通过一个patch切分模块(类似于ViT)将输入的RGB图像分割为非重叠的patch。每个patch被视为一个“token” 我们使用4×4patch大小,因此每个patch的特征维度为4×4×3=48。在这个原始值特征上应用线性嵌入层,将其投影到任意维度(表示为C)(投影维度C为自己设置)。

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

随着patch merging layers层之后,减少了token数量;经过stage1之后的输出为56x56x96token数量减少2x2倍相当于输入的宽和高分别除以2,因为H/M x W/M token的数量,又因为H/M x W/M相当于分辨率减小了MxM倍,相应的维度要增加MxM倍,之后经过一个liner projuction之后相当于维度增加了MxM/2;这将token数量减少了4的倍数(分辨率2×下采样),输出维度设置为2C。

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

3.2. Shifted Window based Self-Attention

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

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

ViT中在全局进行注意力计算Flops时,计算复杂度和HW成二次方,但是swin Transform中进行局部注意力时,计算复杂度和窗口的HW(MxM)成二次方,窗口数量为H/MxW/M,将MxM带入到公式一之后再乘以H/MxW/M就是基于窗口进行注意力的计算复杂度。

为了进行有效的建模,我们建议在局部窗口内计算自注意力。窗口被布置为以非重叠的方式均匀划分图像。假设每个窗口包含M × M个patch,全局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张图片

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

移动窗口分区的一个问题是它将导致更多的窗口,从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详解(二)_第6张图片

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

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

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

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

表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详解(二)_第8张图片

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

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

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

表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-B(83.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.2的box AP增益。

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

表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详解(二)_第12张图片

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

表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 AP(DetectoRS [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详解(二)_第14张图片

表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详解(二)_第15张图片

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

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

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)。(绝对位置嵌入会提高分类性能,但是会降低目标检测和语义分割的性能)

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

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

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

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

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

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

基于提出的移动窗口方法构建的自注意模块分别比朴素/内核实现中使用滑动窗口的四个网络阶段更为高效,分别为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 Yuan和Lei 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-Mixer在ImageNet-1K分类上的性能。D表示每个注意力头的通道数。吞吐量是使用[68]GitHub存储库和V100 GPU进行测量的,遵循[63]的方法。     

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