【文献阅读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

题目:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
时间:2021
会议/期刊:ICCV 2021
研究机构:微软
代码:GitHub - microsoft/Swin-Transformer: This is an official implementation for “Swin Transformer: Hierarchical Vision Transformer using Shifted Windows”.

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

摘要

本文介绍了一种名为 Swin Transformer 的新视觉 Transformer,它能够作为计算机视觉的通用主干。将 Transformer 从语言适应到视觉的挑战来自两个领域之间的差异,例如large variations in the scale of visual entities and the high resolution of pixels in images compared to words in text。为了解决这些差异,我们提出了一种分层 Transformer,其representation是用 Shifted windows 计算的。The shifted windowing scheme通过将 self-attention 计算限制在不重叠的本地窗口上,同时还允许跨窗口连接,从而带来更高的效率。这种分层架构具有在各种尺度上建模的灵活性,并且具有相对于图像大小的线性计算复杂性。 Swin Transformer 的这些品质使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K 上 87.3 的 top-1 准确率)和密集预测任务,例如对象检测(COCO testdev 上的 58.7 box AP 和 51.1 mask AP)和语义分割(ADE20K val 为 53.5 mIoU)。它的性能大大超过了之前的 state-of-the-art,在 COCO 上 +2.7 box AP 和 +2.6 mask AP,在 ADE20K 上 +3.2 mIoU,展示了基于 Transformer 的模型作为视觉骨干的潜力。分层设计和 shifted window 方法也证明对全 MLP 架构有益。代码和模型可在 https://github.com/microsoft/Swin-Transformer上公开获得。

1. Introduction

1.1 视觉和语言Transformer的比较

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

另一方面,自然语言处理 (NLP) 中网络架构的演变采取了不同的路径,如今流行的架构是 Transformer [64]。 Transformer 专为序列建模和转导任务而设计,以使用注意力来建模数据中的长期依赖关系而著称。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近它在某些任务上展示了有希望的结果,特别是图像分类 [20]引文20正是ViT 和联合视觉语言建模 (joint vision-language modeling) [47]。

在本文中,我们寻求扩展 Transformer 的适用性,使其可以作为计算机视觉的通用主干,就像它对 NLP 和 CNN 在视觉中所做的那样。我们观察到,将其在语言领域的高性能转移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。这些差异之一涉及规模。与作为language Transformers中处理的基本元素的word tokens不同,视觉元素的规模可以有很大的不同,这是在对象检测等任务中受到关注的问题 [42,53,54]。在现有的基于 Transformer 的模型 [64, 20] 中,tokens都是固定规模的,这是不适合这些视觉应用的属性。另一个区别是与文本段落中的单词相比,图像中的像素分辨率要高得多。存在许多视觉任务,例如语义分割,需要在像素级别进行密集预测,这对于 Transformer 在高分辨率图像上的处理来说是难以处理的,因为其自注意力的计算复杂度与图像大小成二次方。

1.2 Swin Transformer

为了克服这些问题,我们提出了一个通用的 Transformer 主干,称为 Swin Transformer,它构建分层特征图,并且对图像大小具有线性计算复杂度。如图 1(a) 所示,Swin Transformer 通过从small-sized patches灰色轮廓)开始并逐渐 merging neighboring patches in deeper Transformer layers来构建分层表示。借助这些分层特征图,Swin Transformer 模型可以方便地利用高级技术进行dense prediction,例如特征金字塔网络 (feature pyramid networks, FPN) [42] 或 U-Net [51]。线性计算复杂度is achieved by computing self-attention locally within non-overlapping windows that partition an image(红色轮廓)。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。这些优点使 Swin Transformer 适合作为各种视觉任务的通用主干,与以前基于 Transformer 的架构 [20] 形成对比,后者产生单一分辨率的特征图并具有二次复杂度。
在这里插入图片描述
Swin Transformer 的一个关键设计元素是its shift of the window partition between consecutive self-attention layers,如图 2 所示。移动的窗口桥接前一层的窗口,提供它们之间的连接,从而显著增强模型能力(见表4)。这种策略在实际延迟方面也很有效:一个窗口内的所有query patches共享相同的key set(The query and key are projection vectors in a self-attention layer),这有助于硬件中的内存访问。In contrast, earlier sliding window based self-attention approaches [33, 50] suffer from low latency on general hardware due to different key sets for differentquery pixels (While there are efficient methods to implement a sliding-window based convolution layer on general hardware, thanks to its shared kernel weights across a feature map, it is difficult for a sliding-window based self-attention layer to have efficient memory access in practice). 我们的实验表明,所提出的移位窗口shifted window方法的延迟比滑动窗口sliding window方法低得多,但modeling power相似(见表 5 和表 6)。移位窗口方法也证明对 all-MLP 架构有益 [61]。
在这里插入图片描述
所提出的 Swin Transformer 在图像分类、目标检测和语义分割的识别任务上取得了强大的性能。它显着优于 ViT / DeiT [20, 63] 和 ResNe(X)t 模型 [30, 70],在三个任务上具有相似的延迟。它在 COCO 测试开发集上的 58.7 box AP 和 51.1 mask AP 以 +2.7 box AP(没有外部数据的复制粘贴 [26])和 +2.6 mask AP(DetectoRS [ 46])。在 ADE20K 语义分割上,它在 val 集上获得了 53.5 mIoU,比之前的最新技术(SETR [81])提高了 +3.2 mIoU。它还在 ImageNet-1K 图像分类上实现了 87.3% 的 top-1 准确率。

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

2. Related Work

CNN and variants

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 based architectures

同样受到 NLP 领域中自注意力层和 Transformer 架构成功的启发,一些工作采用自注意力层来替换流行的 ResNet [33、50、80] 中的部分或全部空间卷积层。 在这些工作中,自注意力是在每个像素的局部窗口内计算以加速优化(the self-attention is computed within a local window
of each pixel to expedite optimization)[33],并且它们比对应的 ResNet 架构实现了更好的准确率/FLOPs 权衡。 然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络的延迟[33]。Instead of using sliding windows, we propose to shift windows between consecutive layers, which allows for a more efficient implementation in general hardware.

Self-attention/Transformers to complement CNNs

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

Transformer based vision backbones

与我们的工作最相关的是 Vision Transformer (ViT) [20] 及其后续工作 [63, 72, 15, 28, 66]。 ViT 的开创性工作直接将 Transformer 架构应用于不重叠的中型图像块上进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度-准确度权衡。虽然 ViT 需要大规模的训练数据集(即 JFT-300M)才能表现良好,但 DeiT [63] 引入了几种训练策略,使 ViT 也可以有效地使用较小的 ImageNet-1K 数据集。 ViT 在图像分类上的结果令人鼓舞,但其架构不适合用作密集视觉任务(dense vision tasks)或输入图像分辨率较高时的通用骨干网络,due to its low-resolution feature maps and the quadratic increase in complexity with image size. 有一些工作通过直接上采样或反卷积将 ViT 模型应用于对象检测和语义分割的密集视觉任务,但性能相对较低 [2, 81]。与我们的工作同时进行的是一些修改 ViT 架构 [72,15,28] 以获得更好的图像分类。Empirically, 我们发现我们的 Swin Transformer 架构可以在这些图像分类方法中实现最佳的速度准确度权衡,尽管我们的工作侧重于通用性能而不是专门用于分类。另一项并行工作 [66] 探索了类似的思路,以在 Transformer 上构建多分辨率特征图。它的复杂性仍然是图像大小的二次方,而我们的复杂性是线性的并且也在局部操作,这已证明有利于对视觉信号中的高相关性进行建模[36,25,41]。我们的方法既高效又有效,在 COCO 对象检测和 ADE20K 语义分割方面都达到了最先进的准确性。

3. Method

3.1 Overall Architecture

图 3 展示了 Swin Transformer 架构的概述,该图说明了微型版本 (Swin-T)。它首先通过像 ViT 这样的patch splitting module将输入的 RGB 图像分割成不重叠的patches。每个patch都被视为一个“token”,and its feature is set as a concatenation of the raw pixel RGB values. 在我们的实现中,我们使用 4 × 4 的patch大小,因此每个patch的特征维度是 4 × 4 × 3 = 48。A linear embedding layer应用于这个原始值特征,以将其投影到任意维度(记为 C)此时,每个token(patch)的维度从1×48变为1×C
在这里插入图片描述
Several Transformer blocks with modified self-attention computation (Swin Transformer blocks) are applied on these patch tokens. Transformer 块保持tokens的数量(H/4 × W/4),并与线性嵌入一起被称为“Stage 1”。

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

Swin Transformer block

和标准的transformer结构类似,只是替换了Multi-head self attention (MSA)为基于移动窗口的模块W-MSA(Window-based MSA)和SW-MSA(Shfit Window-based MSA),其他层保持不变,这在3.2节叙述。如图3(b),1个Swin Transformer block由一个shifted window based MSA模块组成,然后是一个中间带有GELU激活层的的两层MLP。在每个MSA模块和MLP之前应用LayerNorm(LN)层,在每个模块之后应用残差连接。

3.2 Shifted Window based Self-Attention

写的时候看到了这篇文章,感觉已经讲的很全了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值