Transformer论文解读五(Swin Transformer)

本文中要介绍的Swin Transformer全名为Swin Transformer: Hierarchical Vision Transformer using Shifted Windows,是2021年微软研究院发表在ICCV上的一篇文章,在多项视觉任务中展现出优异性能。

1. 改进

相比于Vision Transformer(讲解),Swin Transformer做出了几点改进:

  1. 层次化构建方法:使用了类似卷积神经网络中的层次化构建方法(Hierarchical feature maps),比如特征图尺寸中有对图像下采样4倍的,8倍的以及16倍的,这样的backbone有助于在此基础上构建目标检测,实例分割等任务。而Vision Transformer中直接下采样16倍,后面的特征图也是维持这个下采样率不变。
  2. 特征图划分:在Swin Transformer中使用了Windows Multi-Head Self-Attention(W-MSA)的概念,比如在下图的4倍下采样和8倍下采样中,将特征图划分成了多个不相交的窗口,并且Multi-Head Self-Attention只在每个窗口内进行。相对于Vision Transformer中直接对整个特征图进行Multi-Head Self-Attention,这样做的目的是减少计算量,尤其是在浅层特征图很大的时候。
  3. 窗口变换:特征图划分虽然减少了计算量,但会隔绝不同窗口之间的信息传递,因此所以在论文中作者又提出了Shifted Windows Multi-Head Self-Attention(SW-MSA)的概念,目的在于使信息在相邻窗口中传递

在这里插入图片描述

2. 网络架构

论文中给出了Swin Transformer(Swin-T)网络的架构图。可以看出整个框架的基本流程如下:

在这里插入图片描述

  1. 图片分块:首先将图片输入到Patch Partition模块中进行分块,即每 4 × 4 4\times4 4×4相邻的像素为一个Patch,然后在channel方向展平。由于每个patch就有 4 × 4 = 16 4\times4=16 4×4=16个像素,每个像素有R、G、B三个值,所以展平后的深度是 16 × 3 = 48 16\times3=48 16×3=48,所以通过Patch Partition后图像shape由 [ H , W , 3 ] [H, W, 3] [H,W,3]变成了 [ H 4 , W 4 , 48 ] [\frac{H}{4}, \frac{W}{4}, 48] [4H,4W,48]
  2. 线性变换:通过Linear Embeding层对每个像素的channel数据做线性变换,由 48 48 48变成 C C C,即图像shape再由 [ H 4 , W 4 , 48 ] [\frac{H}{4}, \frac{W}{4}, 48] [4H,4W,48]变成了 [ H 4 , W 4 , C ] [\frac{H}{4}, \frac{W}{4}, C] [4H,4W,C]。在源码中通过一个卷积层实现。
  3. 网络模块堆叠:通过四个Stage构建不同大小的特征图,除了Stage1中先通过一个Linear Embeding层外,剩下三个stage都是先通过一个Patch Merging层进行下采样。然后都是重复堆叠Swin Transformer Block。注意,Transformer Block有两种结构,如图(b)中所示,这两种结构的不同之处仅在于一个使用了W-MSA结构,一个使用了SW-MSA结构。而且这两个结构是成对使用的,先使用一个W-MSA结构再使用一个SW-MSA结构。所以堆叠Swin Transformer Block的次数都是偶数(因为成对使用)。
  4. 分类头:最后,对于分类网络,在后面接上一个Layer Norm层、全局池化层以及全连接层,得到最终输出。

3. Patch Merging

除了Stage1以外的Stage中,首先要通过一个Patch Merging层进行下采样,如下图所示

在这里插入图片描述
假设输入Patch Merging的是一个4x4大小的单通道特征图,Patch Merging的过程如下:

  1. 将每个2x2的相邻像素划分为一个patch
  2. 将每个patch中相同位置(同一颜色)像素拼在一起,就得到了4个feature map
  3. 将四个feature map在深度方向进行concat拼接
  4. 通过一个LayerNorm层
  5. 通过一个全连接层在feature map的深度方向做线性变化,将feature map的深度由C变成C/2。

可以看出,通过Patch Merging层后,feature map的高和宽会减半,深度会翻倍。

4. W-MSA

引入Windows Multi-head Self-Attention(W-MSA)模块是为了减少计算量。

如下图所示,在Self-Attention计算过程中,普通的Multi-head Self-Attention(MSA)模块将feature map中的每个patch和所有的像素去计算。但Windows Multi-head Self-Attention(W-MSA)模块首先将feature map按照MxM(例子中的M=2)大小划分成一个个Windows,然后单独对每个Windows内部进行Self-Attention。

在这里插入图片描述

4. SW-MSA详解

采用W-MSA模块时,只会在每个窗口内进行自注意力计算,所以窗口与窗口之间是无法进行信息传递的。为了解决这个问题,作者引入了Shifted Windows Multi-Head Self-Attention(SW-MSA)模块,即进行偏移的W-MSA。

如下图所示,W-MSA和SW-MSA是成对使用,假设第L层使用W-MSA,那么第L+1层使用的就是SW-MSA。根据左右两幅图对比能够发现窗口(Windows)发生了偏移。偏移后的窗口使得之前的临近窗口之间进行交流,就解决了不同窗口之间无法进行信息交流的问题。

在这里插入图片描述
但是,可以发现通过将窗口进行偏移后,原来的4个窗口变成9个窗口了。为了解决这个麻烦,作者又提出而了Efficient batch computation for shifted configuration,一种更加高效的计算方法:

在这里插入图片描述
主要思想是将左上角的小窗口移动到右下角,和右下角的小窗口合并在一起,这样又和原来一样是4个4x4的窗口了,所以能够保证计算量是一样的。

为了防止将不同的区域合并在一起导致信息混淆的问题,在实际计算中使用的是masked MSA,通过设置蒙板隔绝其他区域的信息,使得每个像素只与自己所在区域的像素进行计算,从而解决了这个问题。

参考文献

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Swin Transformer 是一种改进版的 Transformer 模型,它通过采用小型的子网络和结构化的跳跃连接来提高计算效率。这样做的好处是减少了模型的参数数量,并且能够更好地利用跨层的信息。在实际应用中,Swin Transformer 已经证明能够取得较好的性能。 ### 回答2: Swin Transformer是一种新型的Transformer模型,它在图像识别任务中表现出了出色的性能。该模型通过将输入图片分割成小的块,并在这些小块上进行自注意力计算,以实现高效的图像特征提取。 虽然Swin Transformer已经在图像识别领域取得了很大的成功,但是它仍然存在一些改进空间。以下是对Swin Transformer的一些改进建议: 1. 更好的块划分方式 目前Swin Transformer采用的是固定大小的块进行分割,这可能会导致一些边缘像素被切分到不同的块中,进而导致不连续的特征。应该考虑采用更精细的块划分方式,以实现更准确的特征提取。 2. 添加局部连接 局部连接是指在模型中引入一些局部的连接,以促进局部信息的传递和特征提取。在Swin Transformer中,由于全局自注意力机制的存在,可能会导致一些局部信息被忽略。因此,可以考虑添加一些局部连接,以便更好地综合全局和局部信息。 3. 改进跨层连接 Swin Transformer的跨层连接采用了类似于ResNet的残差结构,但在不同尺度的特征融合上存在一些问题。可以考虑采用更先进的跨层连接方式,如SENet或SKNet,以实现更好的特征融合和捕捉。 4. 引入多尺度特征 当前Swin Transformer只关注单个尺度的特征,忽略了多个尺度的特征对于图像识别的贡献。因此,可以考虑引入多尺度特征,通过同时关注不同尺度的特征,以提高模型的性能。 综上所述,Swin Transformer已经成为了图像识别领域的研究热点之一,随着模型的不断改进,我们相信Swin Transformer在这一领域中将持续发挥重要作用。 ### 回答3: Swin Transformer(Shifted Window Transformer)是一种新型的Transformer模型结构,它在自然语言处理、图像识别和目标检测等领域中取得了显著的成果。Swin Transformer至少有两个改进。 首先,Swin Transformer结构中引入了移位操作(shift operation),可以将输入数据划分为多个子块,然后在两个相邻子块之间进行转移学习。移位操作有助于扩大Swin Transformer的视野,从而允许模型在应对不同尺度的输出张量时具有更强的表现力。 其次,Swin Transformer还引入了分组卷积机制(group convolution),这种技术可以将卷积层分为多个组,其中每个组有自己的权重参数。在Swin Transformer中,适当的分组卷积可以减少计算量、提高并行度,从而使得模型在不牺牲精度的前提下实现更高的效率。值得一提的是,Swin Transformer中的分组卷积也有助于增强模型的跨模态表现能力,从而更好地解决了多模态数据的问题。 综上所述,Swin Transformer具有移位操作和分组卷积的两项改进,这些改进使得Swin Transformer具有更长的视野和更强的表现能力,而且更加高效。 它的广泛应用,加速了图像识别、语音识别、自然语言处理等模型的发展,将为人工智能和机器学习技术的不断进步提供更加强大的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值