【论文笔记】Swin Transformer:一种优异的计算机视觉骨干网络

这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

深度学习小白第一次写论文阅读笔记,可能会有比较多的错误和疏漏,请见谅。
期待自己在不断输出的过程中有所长进,能与大家分享更有价值的内容。

原文链接:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Motivation

  1. 过去的视觉transformer如ViT只做了分类任务,没有检测和分割等。Swin Transformer 证明了Transformer可以作为普适的计算机视觉骨干网络。
  2. Transformer用在CV中有两个方面:
    • 尺度问题:不同图片中的同一个视觉对象的尺寸差距可能会很大,NLP中不存在此问题;
    • 图像resolution太大:如果直接用像素作为输入序列,长度太大。
    Swin Transformer提出了一种新的方案,即移动窗口,降低了计算复杂度,又保证了全局建模能力。

Related Works

  1. ViT每一层token的尺寸都是16x下采样率,可以通过全局SA达到全局建模能力,但是对多尺度特征的把握较弱,不适合处理dense recognition tasks;
  2. ViT的自注意力始终在整图上进行(全局建模),复杂度随图像尺寸平方增长。

1.png

Ideas

移动窗口

  1. 层级式结构可以提供各个尺度的特征信息,更好地应用到下游任务中;
  2. SA在小窗口内算,计算复杂度随图片尺寸线性增长,而不是平方级增长;
  3. 通过窗口的移动让相邻两个窗口之间有交互,上下层之间可以有cross-window connection,变相达到全局建模能力。

2.png

Model

模型结构

3.png

  1. Patch Partition:先把输入打成 4 × 4 4\times4 的patch,比如一个 224 × 224 × 3 224\times224\times3 的图像,经过第一层后,维度变成 56 × 56 × 48 56\times56\times48
  2. Stage1:
    • 先经过一个Linear Embedding层,将图片patchs转换transformer的输入, 56 × 56 56\times56 会被拉成长度为 3136 3136 的线性序列,至于通道数,如图所示,常数 C C 依赖于transformer对输入的限制,这里为 96 96 ,因此经过Linear Embedding后,输入的维度变为 3136 × 96 3136\times96
    • 需要注意的是,这个 3136 × 96 3136\times96 的矩阵并不直接作为Swin Transformer Block的输入,而是基于本文移动窗口的思想,拆分成 7 × 7 7\times7 大小的窗口,每个patch长度只有 49 49
    • transformer本身不改变输入的维度。
  3. Stage2:Patch Merging就是对stage1中transformer的输出进行进一步的变形,后面的操作有点类似于CNN。Patch Merging就是对前面的输出做一个上采样,把 56 × 56 × 96 56\times56\times96 拆分成四个 28 × 28 × 96 28\times28\times96 ,并组合成 28 × 28 × 384 28\times28\times384 , 再经过一个 1 × 1 × 384 × 192 1\times1\times384\times192 的滤波器(卷积),得到 28 × 28 × 192 28\times28\times192
  4. stage3和stage4与stage2同理,都是缩小张量大小(每次缩小为1/4),得到更多的通道数(增大为4倍)。为了跟CNN保持一致,即池化操作后通道数翻倍,而不是变成原来的4倍,故采用 1 × 1 1\times1 的卷积核将通道数从4倍变为2倍。stage4结束后,输出维度为 7 × 7 × 768 7\times7\times768

窗口

关于计算复杂度,作者估算了全局自注意力和基于窗口的自注意力的计算复杂度,如图,后者往往比前者低很多。

6.png

然而,如果仅仅有窗口机制,窗口之间无法进行自注意力,无法进行全局建模。因此引入移动窗口,在上下两层中引入shifted windows机制,可以实现窗口之间的通信。
在本文的Swin Transformer Block中,先做一次基于窗口的多头自注意力(W-MSA),再做一次基于移动窗口的多头自注意力(SW-MSA),如图。

4.png

Experiments

  1. ImageNet上的图片分类任务
  2. COCO上的目标检测
  3. ADE20K上的语义分割
  4. 消融实验(探究了移动窗口和绝/相对位置编码对模型效果的影响)

5.png

Limitations

论文的结论中提到,基于shifted windows 的自注意力作为本文的一个关键思路,目前只能用于图像领域而不能用于NLP领域。其实,相比于ViTSwin Transformer虽然达到了更好的效果,但是后者更偏向于为图像专门设计的工作,用了一些视觉里的先验知识,所以效果有所提升是理所应当的。而ViT才是把最原始的Transformer直接拿过来用,在CV和NLP两个领域都工作地很好。大一统的模型有利于两个领域的共同发展,这是Swin Transformer目前的局限之处,而让Swin Transformer同样能用在NLP领域,也是作者希望进一步努力的方向之一。

猜你喜欢

转载自juejin.im/post/7054943584016924709