Swin Transformer:使用滑动窗口的层次化视觉Transformer

摘要

本文提出了一种新的视觉Transformer,称为 Swin Transformer,它能够作为计算机视觉中的通用主干网络。将Transformer从语言领域迁移到视觉领域时面临诸多挑战,主要源于两个领域之间的差异,例如视觉实体在尺度上的巨大变化,以及图像中像素的高分辨率与文本中词汇的相对稀疏之间的差别。为了解决这些问题,我们提出了一种层次化的Transformer,其表示通过滑动窗口(Shifted Windows)计算得出。滑动窗口机制通过将自注意力计算限制在**非重叠的局部窗口中,从而提高了计算效率,同时又能够实现跨窗口的连接。

该层次化架构具备灵活的多尺度建模能力,并且其计算复杂度相对于图像大小是线性的。这些特性使得Swin Transformer能够广泛应用于多种视觉任务,包括图像分类(在ImageNet-1K上达到87.3的Top-1准确率)、密集预测任务如目标检测(在COCO test-dev上分别达到58.7的Box AP和51.1的Mask AP)以及语义分割(在ADE20K val上达到53.5的mIoU)。Swin Transformer在这些任务中显著超越了此前的最新技术,在COCO上分别提升了+2.7的Box AP和+2.6的Mask AP,在ADE20K上提升了+3.2的mIoU,展示了Transformer作为视觉主干网络的巨大潜力。此外,层次化设计和滑动窗口机制对于纯MLP结构同样具有积极影响。代码和模型已公开,地址为:https://github.com/microsoft/Swin-Transformer

1. 引言

在计算机视觉领域,建模长期以来一直由卷积神经网络(CNN)主导。从 AlexNet [39] 在 ImageNet 图像分类挑战中取得突破性成绩开始,CNN 架构通过更大规模 [30, 76]、更复杂的连接结构 [34] 以及更先进的卷积形式 [70, 18, 84] 不断发展壮大。CNN 作为多种视觉任务的主干网络,这些架构上的进步显著提升了模型性能,并在整个领域产生了广泛影响。

在这里插入图片描述

另一方面,自然语言处理(NLP)中的网络架构演进则沿着另一条路径展开,如今的主流架构是 Transformer [64]。Transformer 专为序列建模和转换任务设计,以其能够建模数据中长距离依赖的注意力机制而著称。在语言领域取得巨大成功后,研究者开始探索其在计算机视觉中的应用,近期在某些任务上已展现出有希望的成果,尤其是在图像分类 [20] 和视觉-语言联合建模 [47] 方面。

本文旨在扩展 Transformer 的适用性,使其能够像在 NLP 中那样,成为计算机视觉中的通用主干网络,类似于 CNN 在视觉任务中的作用。我们注意到,将其在语言领域的优异表现迁移到视觉领域时,面临着显著的挑战,这些挑战主要来自两种模态之间的差异。其中之一是尺度问题。与语言 Transformer 中用于处理的基本元素——词 token 不同,视觉元素在尺度上可能差异巨大,这在诸如目标检测 [42, 53, 54] 等任务中尤为突出。而现有基于 Transformer 的模型 [64, 20] 中的 token 尺度是固定的,这一特性不适用于视觉任务。

另一个差异在于图像的像素分辨率远高于文本段落中的词语。许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的 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 能够输出多分辨率特征图,并拥有更优的计算效率。

Swin Transformer 的一个关键设计元素是在相邻的自注意力层之间对窗口划分进行偏移,如图 2 所示。通过这种“移动窗口”机制,后续层的窗口能够跨越前一层的窗口边界,从而在不同窗口之间建立连接,显著增强模型的表达能力(详见表 4)。这一策略在实际延迟方面也非常高效:一个窗口中的所有查询 patch 共享相同的 key 集合,这有助于硬件中高效的内存访问。相比之下,早期基于滑动窗口的自注意力方法 [33, 50] 在通用硬件上表现出较高的延迟,这是由于不同的查询像素²会使用不同的 key 集合所致。我们的实验表明,所提出的移动窗口方法相较于滑动窗口方法具有显著更低的延迟,同时其建模能力也非常接近(详见表 5 和表 6)。此外,移动窗口机制对全 MLP 架构 [61] 也同样带来积极的影响。

在这里插入图片描述

所提出的 Swin Transformer 在图像分类、目标检测和语义分割等识别任务中表现出色。在这三项任务上,其性能在延迟相近的情况下显著优于 ViT / DeiT [20, 63] 和 ResNe(X)t 模型 [30, 70]。在 COCO test-dev 数据集上,Swin Transformer 获得了 58.7 的 box AP 和 51.1 的 mask AP,分别超过此前的最新成果(在不使用额外数据的前提下,Copy-paste [26] 的 box AP 和 DetectoRS [46] 的 mask AP)+2.7 和 +2.6。在 ADE20K 语义分割任务中,该模型在验证集上取得了 53.5 的 mIoU,较之前的最优方法 SETR [81] 提高了 +3.2。在 ImageNet-1K 图像分类任务中,Swin Transformer 也达到了 87.3% 的 top-1 准确率。

我们相信,在计算机视觉和自然语言处理领域之间建立统一的架构将对两者都有益处,因为它有助于联合建模视觉与文本信号,同时也能更深入地共享两个领域中的建模知识。我们希望 Swin Transformer 在各种视觉任务中所展现的强大性能,能够进一步推动这一理念在学术界的发展,并鼓励对视觉与语言信号的统一建模研究。

2. 相关工作

CNN 及其变体
CNN 长期以来一直是计算机视觉领域的标准网络模型。尽管 CNN 已存在数十年 [40],但直到 AlexNet [39] 的提出,CNN 才真正腾飞并成为主流。此后,研究者提出了更深更强大的卷积神经网络架构,进一步推动了计算机视觉中的深度学习浪潮,例如 VGG [52]、GoogleNet [57]、ResNet [30]、DenseNet [34]、HRNet [65] 和 EfficientNet [58]。除了这些架构上的进展,也有大量工作致力于改进单个卷积层,如 depthwise convolution [70] 和 deformable convolution [18, 84]。尽管 CNN 及其变体仍然是计算机视觉任务中的主要骨干网络,我们认为 Transformer 类架构在视觉与语言之间实现统一建模方面具有强大潜力。我们的工作在多个基础视觉识别任务中取得了优异表现,希望能推动建模范式的转变。

基于 self-attention 的骨干网络架构
受自然语言处理领域 self-attention 和 Transformer 架构成功经验的启发,一些研究尝试用 self-attention 层替代流行 ResNet 架构中的部分或全部空间卷积层 [33, 50, 80]。这些方法通常在每个像素的局部窗口内计算 self-attention,以加速模型优化 [33],并在准确率/FLOPs 权衡上略优于对应的 ResNet 架构。然而,由于内存访问代价高昂,它们的实际延迟显著高于卷积网络 [33]。我们提出采用 shift window 替代滑动窗口,在连续层间移动窗口位置,从而在通用硬件上实现更高效的执行。

将 self-attention/Transformer 用于增强 CNN
另一类工作是在标准 CNN 架构中加入 self-attention 层或 Transformer,用于增强模型表达能力。这些 self-attention 层可以用于增强骨干网络 [67, 7, 3, 71, 23, 74, 55],或用于增强头部结构 [32, 27],提升对长距离依赖或异构交互的建模能力。近期,也有研究将 Transformer 中的 encoder-decoder 架构应用于目标检测和实例分割任务 [8, 13, 85, 56]。我们的工作探索了 Transformer 在视觉基础特征提取中的适应性,与上述工作形成互补。

基于 Transformer 的视觉骨干网络
与我们工作最相关的是 Vision Transformer (ViT) [20] 及其后续研究 [63, 72, 15, 28, 66]。ViT 的开创性工作直接将 Transformer 架构应用于非重叠的中等尺寸图像 patch,用于图像分类任务。与卷积网络相比,ViT 在图像分类中达成了令人印象深刻的速度-准确率权衡。虽然 ViT 需要大规模训练数据集(如 JFT-300M)才能获得良好性能,但 DeiT [63] 提出了一些训练策略,使 ViT 在较小的 ImageNet-1K 数据集上也能有效训练。尽管 ViT 在图像分类中结果令人鼓舞,但由于其输出特征图分辨率较低,且计算复杂度随图像尺寸呈二次增长,其架构并不适合作为密集视觉任务中的通用骨干网络。当输入图像分辨率较高时尤其如此。

尽管已有一些工作尝试通过上采样或反卷积的方式将 ViT 应用于目标检测和语义分割等密集视觉任务,但整体性能仍相对较弱 [2, 81]。在我们工作的同时,也有一些研究对 ViT 架构进行修改以提升图像分类性能 [72, 15, 28]。尽管我们的研究并不专注于分类任务,但我们实证发现 Swin Transformer 在图像分类中仍能取得最佳的速度-准确率权衡。

另一项与我们同时进行的工作 [66] 也尝试在 Transformer 上构建多分辨率特征图,其计算复杂度仍与图像尺寸呈二次关系。而我们的设计则为线性复杂度,且采用局部运算方式,这种方法在建模视觉信号中的高相关性方面被证明是有效的 [36, 25, 41]。我们的 Swin Transformer 架构兼具高效性与高表现力,在 COCO 目标检测和 ADE20K 语义分割任务中均达成了最先进的精度水平。

3. 方法

3.1. 整体架构

Swin Transformer 架构的概览如图 3 所示,展示的是其 tiny 版本(Swin-T)。它首先通过一个 patch 划分模块将输入的 RGB 图像分割为不重叠的 patch,就像 ViT 一样。每个 patch 被视为一个“token”,其特征设置为原始像素 RGB 值的拼接。在我们的实现中,我们使用的 patch 大小为 4 × 4 4 \times 4 4×4,因此每个 patch 的特征维度为 4 × 4 × 3 = 48 4 \times 4 \times 3 = 48 4×4×3=48。在线性嵌入层中,我们将该原始值特征投影到一个任意维度(记为 C)。

几个带有修改后的 self-attention 计算的 Transformer 块(Swin Transformer blocks)会作用于这些 patch token。这些 Transformer 块保持 token 的数量为 ( H 4 × W 4 ) ( \frac{H}{4} \times \frac{W}{4} ) (4H×4W),这些模块与线性嵌入层共同构成了 Stage 1

为了生成层次化的表示,随着网络的加深,token 的数量会通过 patch merging 层减少。第一个 patch merging 层将每组 2 × 2 2 \times 2 2×2 相邻 patch 的特征拼接起来,并在这个 4C 维的拼接特征上应用一个线性层。这将 token 的数量减少为原来的 2 × 2 = 4 2 \times 2 = 4 2×2=4 倍(分辨率下采样 2 倍),输出维度设为 2C。接着应用 Swin Transformer block 进行特征转换,分辨率保持在 H 8 × W 8 \frac{H}{8} \times \frac{W}{8} 8H×8W。这个 patch merging 和特征转换的模块被称为 Stage 2

这个过程重复两次,得到 Stage 3Stage 4,对应的输出分辨率分别为 H 16 × W 16 \frac{H}{16} \times \frac{W}{16} 16H×16W H 32 × W 32 \frac{H}{32} \times \frac{W}{32} 32H×32W。这些阶段共同生成了一个层次化的表示,

在这里插入图片描述

其特征图的分辨率与典型的卷积网络(例如 VGG [52] 和 ResNet [30])相同。因此,所提出的架构可以方便地替代现有方法中用于各种视觉任务的 backbone 网络。

Swin Transformer 块是通过将标准 Transformer 块中的多头自注意力(MSA)模块替换为基于移动窗口(shifted windows)的模块(详见第3.2节),而保持其他层不变来构建的。如图3(b)所示,一个 Swin Transformer 块由一个基于移动窗口的多头自注意力模块组成,后面跟着一个包含 GELU 非线性激活的两层多层感知机(MLP)。在每个 MSA 模块和每个 MLP 之前,都应用了层归一化(LayerNorm,LN)层,并且在每个模块之后都有残差连接。

温馨提示:
阅读全文请访问"AI深语解构" Swin Transformer:使用滑动窗口的层次化视觉Transformer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI专题精讲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值