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

文章目录

  • 1、前言
  • 2、Introduction
  • 3、Method
    • 3.1、Overall Architecture
    • Swin Transformer block
    • 3.2、Shifted Window based Self-Attention
    • Self-attention in non-overlapped windows
    • Shifted window partitioning in successive blocks
    • Relative position bias
  • 总结


1、前言

本文提出了一种新的视觉Transformer,称为Swin Transformer,它可以很好地作为计算机视觉的通用主干。将Transformer从语言转换为视觉的挑战来自这两个领域之间的差异,例如视觉实体的大小差异很大,图像中的像素与文本中的文字相比分辨率较高。为了解决这些差异,我们提出了一种hierarchical Transformer,其表示是通过移位窗口来计算的。移位窗口方案通过将自注意计算限制到非重叠的局部窗口,同时还允许跨窗口连接,带来了更高的效率。这种分层结构具有在不同尺度上建模的灵活性,并且具有关于图像大小的线性计算复杂度。Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K上的86.4 TOP-1准确率)和密集预测任务,如目标检测(COCO TEST-DEV上的58.7 box AP和51.1 MASK AP)和语义分割(ADE20K Val上的53.5 mIou)。其性能大大超过了之前最先进的产品,COCO上的+2.7box AP和+2.6 MASK AP,以及ADE20K上的+3.2mIou,显示了基于Transformer的机型作为视觉主干的潜力。

2、Introduction

自然语言处理(NLP)中网络体系结构的演变走了一条不同的道路,今天流行的体系结构是Transformer。Transformer专为序列建模和转换任务而设计,以其对数据中的远程依赖关系进行建模而著称。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近它在某些任务上展示了令人振奋的结果,特别是图像分类和联合视觉-语言建模。

在本文中,作者试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干,就像它在NLP中所做的那样,也可以像CNNs在视觉中所做的那样。作者观察到,将其在语言领域的高性能转换到视觉领域的重大挑战可以用这两种模式之间的差异来解释。这些不同之处之一涉及到规模。与作为语言Transformer中处理的基本元素的单词标记不同,视觉元素在尺度上可以有很大的变化,这是在诸如物体检测之类的任务中引起注意的问题。在现有的基于Transformer的模型中,tokens都是固定比例的,这一特性不适合这些视觉应用。另一个不同之处在于,与文本段落中的文字相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是很困难的,因为它的self-attention的计算复杂度是图像大小的平方。为了克服这些问题,我们提出了一种通用的Transformer骨干网,称为Swin Transformer,它构造了分层的特征映射,并且计算复杂度与图像大小成线性关系。如图1(A)所示,Swin Transformer通过从小块(灰色轮廓)开始,逐渐合并更深的Transformer层中的相邻块来构建分层表示。有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算自我关注来实现的。每个窗口中的补丁数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构,后者生成单一分辨率的特征地图,并且具有二次复杂度。
论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第1张图片
Swin Transformer的一个关键设计元素是在连续的 self-attention层之间移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(参见表4)。该策略在实际延迟方面也是有效的:一个窗口内的所有query patches共享相同的key 集,这便于硬件中的内存访问。相反,较早基于滑动窗口的self-attention方法由于不同query 像素的不同键集而在一般硬件上受到低等待时间的影响。我们的实验表明,所提出的移位窗口方法比传统的移位窗口方法具有更低的时延。
论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第2张图片

图2.在建议的Swin Transformer架构中,展示了用于计算self-attention的移位窗口方法。在l层(左),采用规则的窗口划分方案,在每个窗口内计算self-attention。在下一层l+1(右)中,窗口分区被移位,从而产生新窗口。新窗口中的self-attention计算跨越了层l中先前窗口的边界,从而提供了它们之间的连接

3、Method

3.1、Overall Architecture

图3显示了Swin Transformer体系结构的概述,其中演示了微型版本(Swin-T)。它首先通过patch分割模块(如VIT)将输入的RGB图像分割成不重叠的patch。每个patch都被视为一个“token”,其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用了4×4的patch大小,因此每个patch的特征维数是4×4×3=48。将线性嵌入层应用于该原始值特征以将其投影到任意维度(表示为C)。
论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第3张图片

图3.(A)Swin Transformer(Swin-T)的架构;(B)两个连续的Swin Transformer块(用公表示)。W-MSA和SW-MSA分别是具有规则和移位窗口配置的多头自注意模块。

在这些patch token上应用了经过修改的自我self-attention的几个Transformer块(Swin Transformer块)。Transformer patch保持token数(H/4×W/4),与线性嵌入一起称为“阶段1”。

为了产生分层表示,随着网络的深入,通过patch合并层来减少token的数量。第一个patch合并层将每组2×2相邻面片的特征进行拼接,并在4C维拼接的特征上应用线性层。这将令牌数减少2×2=4的倍数(分辨率的2倍下采样),并且输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持为H/8×W/8。这第一个块的拼接和特征变换称为“Stage2”。该过程重复两次,分别为“阶段3”和“阶段4”,输出分辨率分别为H/16×W/16和H/32×W/32。这些阶段共同产生具有与典型卷积网络(例如,VGG和ResNet)相同的特征映射分辨率的分层表示。因此,该体系结构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。

Swin Transformer block

Swin Transformer是通过将Transformer模块中的multi-head self attention(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述)而构建的,其他层保持不变。如图3(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块和一个中间带有Gelu非线性的2层MLP组成。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并且在每个模块之后应用残差连接。

3.2、Shifted Window based Self-Attention

标准Transformer体系结构及其用于图像分类的适配都进行self-attention注意,其中计算token和所有其他token之间的关系。全局计算导致了关于token数量的二次方复杂性,使得它不适合于许多需要大量token集来进行密集预测或表示高分辨率图像的视觉问题。

Self-attention in non-overlapped windows

为了有效地建模,我们建议在局部窗口内计算self-attention注意。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M个patches,则全局MSA模块和基于h×w块图像的窗口的计算复杂度为:
在这里插入图片描述
其中,前者与patches 数量HW是平方的,后者在M固定时是线性的(默认情况下设置为7)。全局self-attention计算对于大型硬件来说通常是负担不起的,而基于窗口的自我注意是可伸缩的。

Shifted window partitioning in successive blocks

基于窗口的self-attention模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,我们提出了一种移位窗口划分方法,该方法在连续的Swin Transformer块中交替使用两种划分结构。

如图2所示,第一个模块使用从左上角像素开始的常规窗口划分策略,将8×8特征图均匀划分为大小为4×4(M=4)的2×2个窗口。然后,下一模块通过将窗口从规则划分的窗口移位( ⌊ M 2 ⌋ \left \lfloor \frac{M}{2}\right \rfloor 2M ⌊ M 2 ⌋ \left \lfloor \frac{M}{2}\right \rfloor 2M)像素来采用从前一层的窗口移位的窗口配置。

Relative position bias

在计算self-attention时,遵循,在计算相似度时包括每个头部的相对位置偏差 B ∈ R M 2 × M 2 B\in \mathbb{R}^{M^{2}\times M^{2}} BRM2×M2
在这里插入图片描述

总结

在Vit的基础上,改进成分层transformer的。给我感觉像是CNN中从全连接进化到卷积网络一样。vit相当于粗暴的全连接,swim就有点cnn的感觉了。果然微软亚研的工作都是神仙级别的工作

你可能感兴趣的:(论文笔记,计算机视觉,人工智能,深度学习)