Swin Transformer论文解读

Swin Transformer简介

背景

Swin Transformer是一种新型的神经网络架构,专为处理视觉任务设计。它的出现标志着从传统的卷积神经网络(CNN)到基于Transformer的模型在计算机视觉领域的重要转变。这种转变源于Transformer模型在自然语言处理(NLP)领域取得的巨大成功,尤其是在序列建模和长范围依赖捕获方面的优势。

从CNN到Transformer

  • CNN的局限性: 虽然CNN在图像识别任务中取得了巨大成功,但它们通常局限于局部感受野,这限制了它们捕获长距离依赖的能力。此外,CNN在处理高分辨率图像时面临着效率和性能的挑战。

  • Transformer的优势: Transformer结构,最初用于NLP任务,以其自注意力机制著称,可以有效处理长距离的依赖关系。这一特性使得Transformer在理解复杂的、全局性的数据结构方面表现出色。

Swin Transformer的动机

将Transformer从语言领域适配到视觉领域时面临的挑战源于这两个领域之间的差异,例如视觉实体的尺度变化大,以及图像中像素的高分辨率与文本中词语相比。

转变动机

  • 尺度变化和分辨率问题: 在计算机视觉领域,尤其是处理高分辨率图像时,面临的主要挑战之一是视觉实体尺度的大变化和像素的高分辨率。这些特点与语言处理中的情况截然不同,因为在文本中,词汇的“分辨率”(即明确性和区分度)相对较低。

  • 传统Transformer结构的局限: 由于这些差异,传统的Transformer结构(如在自然语言处理中使用的那样)直接应用于视觉任务时会遇到效率和性能的挑战。尤其是在处理需要细致像素级预测的高分辨率图像时,传统Transformer的全局自注意力机制导致计算复杂度过高,不适合直接应用于视觉任务。

Swin Transformer的创新

  • 结合CNN与Transformer的优点: Swin Transformer设计旨在结合CNN的高效性与Transformer的长范围依赖处理能力。它通过层级结构和滑动窗口技术,有效地将Transformer应用于图像处理任务。

  • 解决视觉任务的挑战: 通过其独特的设计,Swin Transformer能够更有效地处理高分辨率图像,并在各种视觉任务中展现出优异的性能,包括图像分类、目标检测和语义分割。

Swin Transformer的方法部分

图1.这是完整的 Swin Transformer
其中演示了小型版本(SwinT)。它首先通过像ViT一样的patch分割模块将输入的RGB图像分割成不重叠的patch。每个patch被视为一个“标记”,其特征被设置为原始像素RGB值的串联(即flatten操作)。在我们的实现中,我们使用4 × 4的patch大小,因此每个patch的特征维数为4 × 4 × 3 = 48。在此原始值特征上应用线性embedding layer,将其投影到任意维度(记为C)。

在这些patch token上应用了几个具有改进的自注意力Transformer块(Swin Transformer块)。Transformer块维护token的数量(H/4 ×W/4),并与线性embedding一起被称为“第1阶段”。
为了产生分层表示,随着网络的深入,通过patch merging layer来减少token的数量。第一个patch merging layer将每组2 × 2相邻patch的特征进行拼接(见下图2),并在拼接后的4c维特征上应用线性层。这将token的数量减少了2× 2 = 4的倍数(分辨率降低了2倍),输出维度设置为2C。之后应用Swin Transformer块进行特征变换,分辨率保持在H/8 ×W/8。这第一个块的patch merging 和特征转换被称为“第二阶段”。
这些阶段共同产生一个分层表示,具有与典型卷积网络相同的特征映射分辨率,例如VGG和ResNet。因此,该结构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。
图2,展示了Swin transformer中如何产生层级表示

Swin Transformer block

Swin Transformer是通过将Transformer块中的标准多头自注意力(MSA)模块替换为基于移位窗口的模块而构建的,其他层保持不变。如图1(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块组成,其次是一个2层MLP,中间是GELU非线性。在每个MSA模块和每个MLP模块之前应用一个LN (LayerNorm)层,在每个模块之后应用一个残差连接。

基于窗口滑动的自注意力机制(Shifted Window based Self-Attention)

标准Transformer体系结构及其对图像分类的适应都进行全局自注意力,其中计算一个token与所有其他token之间的关系。全局计算导致token数量的二次复杂度,使得它不适合许多需要大量token进行密集预测或表示高分辨率图像的视觉问题。

非重叠窗口中的自注意力机制(Self-attention in non-overlapped windows)

为了提高建模效率,我们建议在局部窗口内计算Self-attention。所述窗口被布置成以非重叠方式均匀地分割图像。假设每个窗口包含M × M块,则全局MSA模块和基于h × w块图像的窗口的计算复杂度为:
Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C , \Omega(MSA) = 4hwC^2 + 2(hw)^2C, Ω(MSA)=4hwC2+2(hw)2C,
这个公式中:

  • hw 是特征图的宽度和高度的乘积,即特征图中元素的总数。
  • c 是特征图的通道数。

公式的第一部分 ( 4hwc^2 ) 对应于自注意力计算中的两个主要矩阵乘法操作,每个操作的复杂度为 ( 2hwc^2 )(两个是因为有键(Key)和值(Value)矩阵)。这部分是与序列长度(这里是特征图的平面尺寸)和特征维度的平方相关的,表示自注意力权重的计算。

第二部分 ( 2(hw)^2c ) 是自注意力计算中输出的复杂度,它涉及到每个位置对所有其他位置的注意力得分的加权求和。这表示在所有 ( hw ) 位置上计算自注意力的成本,它与特征图中元素的平方数成正比。

总的来说,这个公式反映了在全局范围内进行自注意力计算时的高计算复杂度,这也是为什么 Swin Transformer 使用局部窗口来降低计算量的原因。

Ω ( W − M S A ) = 4 h w C 2 + 2 M 2 h w C \Omega(W-MSA) = 4hwC^2 + 2M^2hwC Ω(WMSA)=4hwC2+2M2hwC

这里的 ( hw ) 是每个窗口的面积(即窗口内的像素数),( C ) 是每个窗口的通道数,而 ( M ) 是每个窗口中的patch数目。

  • 第一项 ( 4hwC^2 ) 来自于在每个窗口中计算 Q, K, V 向量的两次矩阵乘法操作(每个头一次),因为每个通道都有一个独立的 Q, K, V 计算,所以这个操作与通道数的平方成正比。

  • 第二项 ( 2M^2hwC ) 是基于这样一个事实:在每个窗口内,我们需要计算每个 patch 与窗口内其他所有 ( M^2 ) 个 patches 的关系,这个操作需要与窗口内的patch数目的平方成正比,同时还需要乘以窗口的数量 ( hw ) 和每个窗口的通道数 ( C )。

因此,W-MSA 的计算复杂度与窗口大小和通道数的平方成正比,而不是整个特征图尺寸的平方,这大大降低了计算复杂度,尤其是对于大尺寸的图像。

在连续的块中进行偏移窗口划分(Shifted window partitioning in successive blocks)

基于窗口的 Self-attention 模块缺乏跨窗口的连接,这限制了它的建模能力。为了引入跨窗口连接,同时保持非重叠窗口的高效计算,我们提出了一种移位窗口分区方法,该方法在连续的Swin Transformer块中交替使用两种分区配置。
如图3所示,第一个模块采用从左上角像素开始的规则窗口划分策略,将8 × 8特征图均匀划分为大小为4 × 4 (M = 4)的2 × 2个窗口。然后,下一个模块采用与前一层不同的窗口配置,从规则划分的窗口中移动[M/2,M/2](这里如果不整除就向下取整)个像素。
图3
最终的swin Transformer的计算流程:
在这里插入图片描述
W-MSA和SW-MSA分别使用常规和移位的窗口分区配置表示基于窗口的多头 self-attention。

移位构型的高效批处理计算(Efficient batch computation for shifted configuration)

移位的窗口分区的一个问题是,它将导致更多的窗口,在移位的配置中,从[h/M,w/M] (如果不整除就向上取整)到 (h/M +1) × (w/M +1),并且一些窗口将小于M x M。一个简单的解决方案是将较小的窗口填充到M × M的大小,并在计算注意力时mask填充值。当常规分区中的窗口数量很小时,例如2 × 2,使用这种朴素解决方案增加的计算量是相当大的(2 × 2→3 × 3,这是2.25倍)。在这里,我们提出一种更有效的批处理计算方法,即向左上方向循环移位,如图4所示。在此转换之后,批处理窗口可能由特征映射中不相邻的几个子窗口组成,因此采用屏蔽机制将自关注计算限制在每个子窗口内。通过循环移位,批处理窗口的数量与常规窗口分区的数量保持一致,因此也是高效的。
注意:你可以理解为窗口在h,w上整体向左上移动了两格,移动后超出图像原本位置的元素,循环的来到图片的右方和下方。但是在计算的过程中呢,为了保持每个窗口还是只处理原来的信息,要将循环移动到右下方的那部分的信息给mask掉。
图4

相对位置偏移(Relative position bias)

在计算自注意力时,我们遵循文献 [45, 1, 29, 30],通过在计算相似度时为每个头包含一个相对位置偏差 ( B \in \mathbb{R}{M2 \times M^2} ):

Attention ( Q , K , V ) = SoftMax ( Q K T d + B ) V ( 4 ) \text{Attention}(Q, K, V) = \text{SoftMax}\left(\frac{QK^T}{\sqrt{d}} + B\right)V \quad (4) Attention(Q,K,V)=SoftMax(d QKT+B)V(4)

其中 ( Q, K, V \in \mathbb{R}{M2 \times d} ) 分别是查询(query)、键(key)和值(value)矩阵;( d ) 是查询/键的维度,( M^2 ) 是窗口中的 patch 数。由于沿每个轴的相对位置在区间 ([-M + 1, M - 1]) 内,我们参数化了一个更小尺寸的偏差矩阵 ( \hat{B} \in \mathbb{R}^{(2M-1) \times (2M-1)} ),并且 ( B ) 中的值来自于 ( \hat{B} )。

总结

Swin transformer是一种新的视觉transformer,它产生层次特征表示,并且对输入图像大小具有线性计算复杂度。Swin Transformer在COCO对象检测和ADE20K语义分割方面实现了最先进的性能,大大超过了以前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大表现将鼓励视觉和语言信号的统一建模。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

懒惰才能让科技进步

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

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

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

打赏作者

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

抵扣说明:

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

余额充值