Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读

摘要

这篇论文提出了一种新的视觉 Transformer——Swin Transformer,它能够作为通用的计算机视觉骨干网络。将 Transformer 从语言领域转移到视觉领域面临诸多挑战,这些挑战源于两者之间的差异,例如视觉实体尺度的巨大变化以及图像中像素的高分辨率与文本中单词相比的差异。为了解决这些问题,我们提出了一种分层 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,在 ADE20K 上提高了 3.2 的 mIoU,展示了基于 Transformer 的模型作为视觉骨干网络的巨大潜力。分层设计和移位窗口方法对全 MLP 架构同样有益。代码和模型已在 https://github.com/microsoft/Swin-Transformer 上公开发布。

引言

长期以来,计算机视觉中的建模一直由卷积神经网络(CNN)主导。从 AlexNet [39] 及其在 ImageNet 图像分类挑战赛上的革命性表现开始,CNN 架构通过更大规模 [30, 76]、更广泛的连接 [34] 以及更复杂的卷积形式 [70, 18, 84] 得到了不断发展。随着 CNN 作为各种视觉任务的骨干网络,这些架构上的进步大大提升了整个领域的性能。另一方面,自然语言处理(NLP)中的网络架构演进则走了一条不同的道路,如今广泛使用的架构是 Transformer [64]。Transformer 设计用于序列建模和转换任务,其利用注意力机制来对数据中的长距离依赖进行建模而著称。它在语言领域取得的巨大成功促使研究者开始探讨其在计算机视觉中的应用,最近在图像分类 [20] 和视觉-语言联合建模 [47] 等任务上展示出了良好的效果。

在本文中,我们旨在扩展 Transformer 的适用性,使其能够像在 NLP 中一样成为计算机视觉领域的通用骨干网络,就像 CNN 在视觉中的角色一样。我们观察到,将其在语言领域的高性能迁移到视觉领域面临着显著挑战,这些挑战可以归因于两种模态之间的差异。其中一个差异涉及尺度问题。与在语言 Transformer 中作为基本处理单元的词标记不同,视觉元素的尺度可能有很大变化,这一问题在目标检测等任务中尤为受到关注 [42, 53, 54]。在现有的基于 Transformer 的模型 [64, 20] 中,所有的标记都具有固定的尺度,这一特性并不适用于这些视觉应用。另一个差异是图像中像素的分辨率远高于文本中的单词。许多视觉任务(例如语义分割)需要在像素级别进行密集预测,而对于高分辨率图像来说,这对 Transformer 来说将会变得不可行,因为其自注意力机制的计算复杂度与图像尺寸呈二次增长。为了解决这些问题,我们提出了一种通用的 Transformer 骨干网络,称为 Swin Transformer,该网络构建了分层特征图,并且其计算复杂度与图像尺寸呈线性关系。如图 1(a) 所示,Swin Transformer 通过从小尺寸的 patch(灰色轮廓)开始,逐渐在更深的 Transformer 层中合并相邻的 patch,从而构建出分层表示。借助这些分层特征图,Swin Transformer 模型可以方便地利用先进的密集预测技术,如特征金字塔网络(FPN) [42] 或 U-Net [51]。通过在划分图像(红色轮廓)内的非重叠窗口中局部计算自注意力,实现了计算复杂度相对于图像尺寸的线性增长。由于每个窗口中的 patch 数量是固定的,复杂度便与图像尺寸线性相关。这些优点使得 Swin Transformer 作为各种视觉任务的通用骨干网络具有很大的优势,这与之前基于 Transformer 的架构 [20](其生成单一分辨率的特征图且计算复杂度为二次)形成了鲜明对比。
在这里插入图片描述

在这里插入图片描述
Swin Transformer 的一个关键设计元素是在连续的自注意力层之间对窗口划分进行移位,如图 2 所示移位窗口连接了前一层的窗口,为它们之间提供了联系,从而显著增强了建模能力(见表 4)。这一策略在实际延迟方面也十分高效:同一窗口内的所有查询 patch 共享相同的键集合,这有利于硬件的内存访问。相比之下,以前基于滑动窗口的自注意力方法 [33, 50] 因为不同查询像素拥有不同的键集合而在通用硬件上延迟较高。我们的实验表明,所提出的移位窗口方法在延迟上远低于滑动窗口方法,但在建模能力上却相当(见表 5 和 6)。移位窗口方法对全 MLP 架构 [61] 同样有益。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所提出的 Swin Transformer 在图像分类、目标检测和语义分割等识别任务上均取得了出色的性能。它在三个任务上均以相似的延迟显著超越了 ViT/DeiT [20, 63] 和 ResNe(X)t 模型 [30, 70]。在 COCO test-dev 集合上,其 58.7 的 box AP 和 51.1 的 mask AP 超越了之前最先进的方法,分别提高了 +2.7 的 box AP(Copy-paste [26],未使用外部数据)和 +2.6 的 mask AP;在 ADE20K 语义分割上,其在验证集上达到了 53.5 的 mIoU,比之前最先进的 SETR [81] 提高了 +3.2 的 mIoU;在 ImageNet-1K 图像分类上,top-1 准确率达到了 87.3%。

我们相信,在计算机视觉和自然语言处理领域采用统一的架构能够使两者互利,因为这将促进视觉和文本信号的联合建模,并使两种领域的建模知识得以更深入地共享。我们希望 Swin Transformer 在各种视觉问题上所展现出的强大性能能够进一步坚定社区对这一理念的信心,并鼓励视觉与语言信号的统一建模。

相关工作

CNN及其变体

CNN 及其变体作为计算机视觉领域的标准网络模型已被广泛应用。虽然 CNN 已经存在了数十年 [40],但直到 AlexNet [39] 的问世,它才真正崛起并成为主流。从那时起,更深层次和更高效的卷积神经网络架构不断被提出,以进一步推动计算机视觉中深度学习的发展,例如 VGG [52]、GoogleNet [57]、ResNet [30]、DenseNet [34]、HRNet [65] 和 EfficientNet [58]。除了这些架构上的进步,还有许多工作致力于改进单个卷积层,如深度可分离卷积 [70] 和可变形卷积 [18, 84]。

尽管 CNN 及其变体仍然是计算机视觉应用中的主要骨干网络,我们强调 Transformer 类架构在视觉和语言之间实现统一建模方面具有巨大潜力。我们的工作在多个基础视觉识别任务上取得了出色的性能,我们希望它能推动骨干网络模型的建模转变。

基于自注意力的骨干网络架构

受 NLP 领域中自注意力层和 Transformer 架构成功的启发,一些工作尝试用自注意力层替换流行的 ResNet [33, 50, 80] 中的一部分或全部空间卷积层。在这些工作中,自注意力是在每个像素的局部窗口内计算,以加速优化 [33],并且在准确率与 FLOPs 的权衡上略优于对应的 ResNet 架构。然而,由于昂贵的内存访问开销,这些方法的实际延迟显著高于卷积网络 [33]。而我们的方法则不使用滑动窗口,而是在连续层之间进行窗口移位,从而在通用硬件上实现更高效的实现。

用于补充 CNN 的自注意力/Transformer

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

基于 Transformer 的视觉骨干网络

与我们的工作最相关的是 Vision Transformer (ViT) [20] 及其后续工作 [63, 72, 15, 28, 66]。ViT 的开创性工作直接将 Transformer 架构应用于非重叠的中等尺寸图像 patch 的图像分类任务,并在图像分类中取得了令人印象深刻的速度-准确率权衡。虽然 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.1. 总体架构

在这里插入图片描述

图 3 展示了 Swin Transformer 架构的整体概览,以其 Tiny 版本(SwinT)为例。首先,类似于 ViT,输入的 RGB 图像通过一个 patch 分割模块被划分为不重叠的 patch。每个 patch 被视为一个“token”,其特征由原始像素 RGB 值的拼接构成。在我们的实现中,采用的 patch 大小为 4×4,因此每个 patch 的特征维度为 4×4×3 = 48随后,使用一个线性嵌入层将这一原始特征投影到任意维度(记为 C)。接下来,多个经过改进的自注意力计算(即 Swin Transformer 块)的 Transformer 块被应用于这些 patch token。Transformer 块保持了 token 数量为 H/4 × W/4,并与线性嵌入层一起被称为“阶段 1”。为了生成分层表示,随着网络加深,通过 patch 合并层减少 token 数量。第一个 patch 合并层将每组 2×2 相邻 patch 的特征进行拼接并在 4C 维的拼接特征上应用一个线性层这样可以将 token 数量减少 2×2 = 4 倍(相当于分辨率降低 2 倍),且输出维度被设置为 2C之后,再应用 Swin Transformer 块进行特征变换,此时分辨率保持为 H/8 × W/8。这一轮 patch 合并和特征变换被称为“阶段 2”。该过程重复两次,分别构成“阶段 3”和“阶段 4”,其输出分辨率分别为 H/16 × W/16 和 H/32 × W/32。这些阶段共同产生了一个分层表示,其特征图分辨率与典型卷积网络(如 VGG [52] 和 ResNet [30])相同。结果是,所提出的架构能够方便地替换现有方法中用于各种视觉任务的骨干网络。
在这里插入图片描述

3.2. 基于移位窗口的自注意力

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

非重叠窗口内的自注意力

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

连续块中的移位窗口划分

在这里插入图片描述

高效批量计算用于移位配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
做完masked MSA后,我们再把A、B、C还原回原来的位置,就可以了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相对位置偏置

在这里插入图片描述

在这里插入图片描述

3.3. 架构变体

我们构建了一个基础模型,称为 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 代表第一阶段的隐藏层通道数。Swin 变体的模型大小、理论计算复杂度(FLOPs)和在 ImageNet 图像分类任务中的吞吐量列在 表 1 中。

4. 实验

我们在 ImageNet-1K 图像分类 [19]、COCO 目标检测 [43] 和 ADE20K 语义分割 [83] 数据集上进行实验。下面,我们首先将 Swin Transformer 架构与当前最先进的方法在这三个任务上进行比较。然后,我们分析 Swin Transformer 的关键设计元素。

4.1. ImageNet-1K 图像分类

实验设置
在图像分类任务中,我们在 ImageNet-1K [19] 数据集上评估 Swin Transformer,该数据集包含 128 万张训练图像 和 5 万张验证图像,涵盖 1000 个类别。我们报告 单裁剪(single crop) 下的 top-1 准确率。考虑了以下两种训练设置:

常规 ImageNet-1K 训练

训练配置大部分遵循 [63]。
优化器:AdamW [37]
训练时长:300 轮
学习率调度:余弦衰减(cosine decay)+ 20 轮线性预热(linear warm-up)
批量大小:1024
初始学习率:0.001
权重衰减:0.05
数据增强:采用 [63] 中的大部分数据增强和正则化策略,但 不使用重复增强(Repeated Augmentation)[31] 和 EMA(Exponential Moving Average)[45],因为它们 不会提升性能。
与 ViT 训练的不同点:在 ViT [63] 的训练过程中,重复增强至关重要,以稳定训练过程,但在 Swin Transformer 训练中并不需要。

ImageNet-22K 预训练 + ImageNet-1K 微调

预训练:
采用 ImageNet-22K 数据集,包含 1420 万张图像 和 22K 个类别。
AdamW 优化器,训练 90 轮。
学习率调度:线性衰减(linear decay)+ 5 轮线性预热(linear warm-up)。
批量大小:4096
初始学习率:0.001
权重衰减:0.01
微调(fine-tuning):
在 ImageNet-1K 数据集上训练 30 轮。
批量大小:1024
学习率:10⁻⁵(恒定)
权重衰减:10⁻⁸

常规 ImageNet-1K 训练的结果

表 1(a) 对比了 Swin Transformer 与 主流 Backbone(包括 Transformer 和 CNN)在 ImageNet-1K 训练 上的表现。

与 DeiT(Transformer-based 模型)对比:

Swin-T(81.3%) 相比 DeiT-S(79.8%) 提高了 1.5%(输入 224×224)。
Swin-B(83.3%/84.5%) 相比 DeiT-B(81.8%/83.1%) 提高了 1.5% / 1.4%(分别使用 224×224 / 384×384 输入)。
与当前最先进的 CNN(如 RegNet 和 EfficientNet)对比:

Swin Transformer 在速度-准确率的权衡上表现略优。
需要注意的是,RegNet 和 EfficientNet 是通过自动架构搜索(NAS)得到的,而 Swin Transformer 只是从标准 Transformer 适配而来,仍有很大的优化空间。
在这里插入图片描述
ImageNet-22K 预训练的结果
我们还在 ImageNet-22K 数据集上 预训练 了更大容量的 Swin-B 和 Swin-L 模型,并在 ImageNet-1K 上进行 微调(fine-tuning)。表 1(b) 显示了 微调后的图像分类结果。

对于 Swin-B,ImageNet-22K 预训练相比 从零开始训练,带来了 1.8%∼1.9% 的准确率提升。
与此前 ImageNet-22K 预训练的最佳结果相比,Swin Transformer 在计算效率-准确率(speed-accuracy trade-off)上表现更优:
Swin-B:
Top-1 准确率:86.4%(比 ViT 高 2.4%)。
推理吞吐量:84.7 vs. 85.9 images/sec(与 ViT 相当)。
计算复杂度(FLOPs):47.0G vs. 55.4G(比 ViT 低)。
Swin-L:
Top-1 准确率:87.3%,比 Swin-B 提高 0.9%。
在这里插入图片描述

4.2. COCO目标检测

设置
目标检测和实例分割实验均在 COCO 2017 数据集上进行,该数据集包含 118K 张训练图像、5K 张验证图像以及 20K 张 test-dev 图像。对于消融实验,我们使用验证集;对于系统级比较,则在 test-dev 上报告结果。
在消融研究中,我们考虑了四种典型的目标检测框架: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 个 epoch)。
在系统级比较中,我们采用了改进的 HTC [9](记为 HTC++),结合 instaboost [22]、更强的多尺度训练 [7]、6× 训练计划(72 个 epoch)、soft-NMS [5],并使用在 ImageNet-22K 上预训练的模型进行初始化。

我们将 Swin Transformer 与标准卷积网络(例如 ResNe(X)t)以及之前的 Transformer 网络(例如 DeiT)进行对比。对比实验仅更换骨干网络,其他设置保持不变。需要注意的是,由于 Swin Transformer 和 ResNe(X)t 均具有分层特征图,因此可以直接应用于上述所有框架,而 DeiT 仅产生单一分辨率的特征图,不能直接应用。为了公平对比,我们按照 [81] 的方法,使用反卷积层为 DeiT 构造分层特征图。

与 ResNe(X)t 的对比

表 2(a) 列出了 Swin-T 和 ResNet-50 在四个目标检测框架下的结果。我们的 Swin-T 架构在 box AP 上稳定地比 ResNet-50 提高了 +3.4~4.2 个百分点,尽管模型大小、 FLOPs 和延迟略大。
表 2(b) 展示了在 Cascade Mask R-CNN 框架下,不同模型容量下 Swin Transformer 与 ResNe(X)t 的对比。Swin Transformer 达到了 51.9 的 box AP 和 45.0 的 mask AP,相比模型大小、 FLOPs 和延迟相近的 ResNeXt101-64x4d,分别提高了 +3.6 和 +3.3 个百分点。
在这里插入图片描述
在更高基线下(使用改进的 HTC 框架得到 52.3 的 box AP 和 46.0 的 mask AP),Swin Transformer 分别提高了 +4.1 个 box AP 和 +3.1 个 mask AP(见表 2©)。关于推理速度,虽然 ResNe(X)t 是基于高度优化的 Cudnn 函数构建的,而我们的架构是使用内置 PyTorch 函数实现的(未完全高度优化),全面的内核优化超出了本文的讨论范围。
在这里插入图片描述

与 DeiT 的对比

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

与之前最先进方法的对比

表 2© 比较了我们的最佳结果与之前最先进模型的结果。我们的最佳模型在 COCO test-dev 上获得了 58.7 的 box AP 和 51.1 的 mask AP,分别比之前的最先进结果高出 +2.7 个 box AP(Copy-paste [26],未使用外部数据)和 +2.6 个 mask AP(DetectoRS [46])

4.3. ADE20K 语义分割

设置
ADE20K [83] 是一个广泛使用的语义分割数据集,涵盖 150 个语义类别,共计 2.5 万张图像,其中 2 万张用于训练,2K 张用于验证,另外 3K 张用于测试。我们采用 mmseg [16] 中的 UperNet [69] 作为基础框架,因为它具有很高的效率。更多细节请参见附录。

结果
表 3 列出了不同方法/骨干网络组合下的 mIoU、模型大小(参数量)、 FLOPs 和 FPS。从这些结果可以看出,Swin-S 的 mIoU 比计算量相近的 DeiT-S 高出 +5.3(49.3 对 44.0)。同时,它比 ResNet-101 高 +4.4 mIoU,比 ResNeSt-101 [78] 高 +2.4 mIoU。我们的 Swin-L 模型经过 ImageNet-22K 预训练,在验证集上达到了 53.5 mIoU,比之前最好的模型(SETR [81],其模型规模更大,mIoU 为 50.3)高出 +3.2 mIoU。
在这里插入图片描述

4.4. 消融实验

在本节中,我们对 Swin Transformer 的关键设计元素进行了消融研究,使用了 ImageNet-1K 图像分类、COCO 目标检测中的 Cascade Mask R-CNN 以及 ADE20K 语义分割中的 UperNet。

移位窗口

表 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 box AP 以及 +1.1 / +1.3 mask AP,在 ADE20K 上分别提高了 +2.3 / +2.9 mIoU,表明相对位置偏置的有效性。需要注意的是,虽然加入绝对位置编码可以使图像分类准确率提高 (+0.4%),但它会对目标检测和语义分割产生负面影响(在 COCO 上降低 0.2 box/mask AP,在 ADE20K 上降低 0.6 mIoU)。

尽管近期的 ViT/DeiT 模型在图像分类中放弃了平移不变性(尽管长期以来平移不变性已被证明对视觉建模至关重要),我们发现,鼓励一定平移不变性的归纳偏置对于通用视觉建模仍然是更优的,尤其是在目标检测和语义分割等密集预测任务中。
在这里插入图片描述

不同自注意力方法

表 5 对比了不同自注意力计算方法及其实现的实际速度。**我们的循环实现(cyclic implementation)比简单填充(naive padding)**更具硬件效率,尤其是在更深的阶段。总体上,它在 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-T、Swin-S 和 Swin-B,基于移位窗口的架构比基于滑动窗口的变体分别快 4.1/1.5、4.0/1.5、3.6/1.5 倍。表 6 对比了它们在三个任务上的准确率,显示它们在视觉建模方面的精度相近。

与 Performer [14](这是目前最快的 Transformer 架构之一,参见 [60])相比,所提出的基于移位窗口的自注意力计算方法和整体 Swin Transformer 架构速度略快(参见表 5),同时在 ImageNet-1K 上使用 Swin-T 模型的 top-1 准确率比 Performer 高 +2.3%(参见表 6)。
在这里插入图片描述

结论

本文提出了 Swin Transformer,这是一种新型视觉 Transformer,能够生成分层特征表示,其计算复杂度相对于输入图像尺寸呈线性增长。Swin Transformer 在 COCO 目标检测和 ADE20K 语义分割任务上均取得了最先进的性能,显著超越了以往最好的方法。我们希望 Swin Transformer 在各种视觉问题上展现出的强大性能能促进视觉与语言信号的统一建模。作为 Swin Transformer 的关键组成部分,基于移位窗口的自注意力在视觉任务中证明了其高效性与有效性,我们也期待未来探索其在自然语言处理中的应用。

附录

A1. 详细架构

表 7 中展示了详细的架构规格,其中所有架构均假设输入图像大小为 224×224。“Concat n × n” 表示将一个 patch 内相邻的 n × n 个特征进行拼接。该操作会使特征图下采样,采样率为 n。“96-d” 表示一个输出维度为 96 的线性层。“win. sz. 7 × 7” 指的是一个多头自注意力模块,其窗口大小为 7 × 7。
在这里插入图片描述

A2. 详细实验设置

A2.1. ImageNet-1K 图像分类

图像分类任务通过在最后阶段的输出特征图上应用全局平均池化层,然后接一个线性分类器来实现。我们发现这种策略的准确性与在 ViT [20] 和 DeiT [63] 中使用额外类别 token 的方法一样。在评估时,报告的是单裁剪下的 top-1 准确率。

常规 ImageNet-1K 训练

训练设置大部分遵循 [63]。对于所有模型变体,我们采用默认输入图像分辨率 224×224。对于其他分辨率(例如 384×384),我们在 224×224 分辨率下训练的模型上进行微调,而非从头开始训练,以减少 GPU 消耗。

当使用 224×224 输入从头训练时,我们采用 AdamW [37] 优化器训练 300 个 epoch,使用余弦衰减学习率调度器和 20 个 epoch 的线性预热。
批量大小为 1024,初始学习率为 0.001,权重衰减为 0.05,并使用最大范数为 1 的梯度裁剪。
训练中我们采用了 [63] 中大部分的数据增强和正则化策略,包括 RandAugment [17]、Mixup [77]、Cutmix [75]、随机擦除(random erasing)[82] 和随机深度(stochastic depth)[35],但不采用重复增强(Repeated Augmentation)[31] 和指数移动平均(EMA)[45],因为它们并未提升性能。需要注意的是,这与 [63] 中的做法相反,在 ViT 的训练中重复增强对于稳定训练至关重要。
对于更大模型,采用了更高程度的随机深度增强:Swin-T、Swin-S 和 Swin-B 分别使用 0.2、0.3、0.5 的比例。
对于较大分辨率的输入微调,我们采用 AdamW [37] 优化器训练 30 个 epoch,使用恒定学习率 10⁻⁵,权重衰减为 10⁻⁸,其余数据增强和正则化设置与第一阶段相同,但将随机深度比率设置为 0.1。

ImageNet-22K 预训练

我们还在更大的 ImageNet-22K 数据集(包含 1420 万张图像和 22K 个类别)上进行预训练。预训练分为两个阶段:

第一阶段:使用 224×224 输入,采用 AdamW 优化器训练 90 个 epoch,使用线性衰减学习率调度器和 5 个 epoch 的线性预热。批量大小为 4096,初始学习率为 0.001,权重衰减为 0.01。
第二阶段:在 ImageNet-1K 上微调,输入分辨率为 224×224 或 384×384,训练 30 个 epoch,批量大小为 1024,恒定学习率为 10⁻⁵,权重衰减为 10⁻⁸。

A2.2. 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 个 epoch,在第 27 和 33 个 epoch 时学习率下降 10 倍。

对于系统级比较,我们采用了改进版 HTC [9](记为 HTC++),结合 instaboost [22]、更强的多尺度训练 [7](调整输入图像使短边在 400 至 1400 之间,长边最大为 1600)、6× 训练计划(72 个 epoch,在第 63 和 69 个 epoch 时学习率下降 0.1 倍)、soft-NMS [5],并在最后阶段的输出上附加了额外的全局自注意力层,同时使用 ImageNet-22K 预训练模型进行初始化。所有 Swin Transformer 模型均采用 0.2 的随机深度比例。

A2.3. ADE20K 上的语义分割

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

训练设置:

优化器采用 AdamW [44],初始学习率为 6×10⁻⁵,权重衰减为 0.01。
学习率调度器使用线性衰减,并有 1500 次迭代的线性预热。
模型在 8 个 GPU 上训练,每个 GPU 2 张图像,总计 160K 次迭代。
数据增强采用 mmsegmentation 的默认设置,包括随机水平翻转、在比例范围 [0.5, 2.0] 内的随机重缩放以及随机光度失真。
所有 Swin Transformer 模型均采用 0.2 的随机深度。
Swin-T 和 Swin-S 按照与之前方法相同的标准设置进行训练,输入尺寸为 512×512。
Swin-B 和 Swin-L(带有 “z” 标记)表示这两种模型在 ImageNet-22K 上预训练,并使用 640×640 的输入进行训练。
推理设置:

使用多尺度测试,测试分辨率为训练分辨率的 [0.5, 0.75, 1.0, 1.25, 1.5, 1.75] 倍
报告测试分数时,训练时同时使用训练图像和验证图像进行训练,这符合常规做法 [71]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值