【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

目录

Abstract & Introduction

Related Work

Method

“Overall Architecture”

“Shifted Window based Self-Attention”

“Self-attention in non-overlapped windows”

“Shifted window partitioning in successive blocks”

“Efficient batch computation for shifted configuration”

mask掩码操作

“Relative position bias” 相对位置偏差

Experiments

Abstract & Introduction

  1. swin transformer 是一种计算机视觉的通用主干框架。
  2. Transformer应用在机器视觉领域遇到的问题:
    1. 图片的scale变化非常大,非标准固定的
    2. 相比较于文本信息,图片有更大的像素分辨率,Transformer的计算复杂度是token数量的平方,如果将每个像素值算作一个token,其计算量非常大,不利于在多种机器视觉任务中的应用
  3. 解决方法:
    1. 通过分层结构来处理图片,使得模型能够灵活处理不同尺度的图片,其中涉及到窗口self-attention计算,不重叠窗口间的联系,mask的计算,相对位置编码的计算【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第1张图片
    2. Swin Transformer 采用的是window self-attention,降低了计算复杂度。【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第2张图片
    3. 采取移动窗口的方式,允许跨窗口连接。(中心向右下角移)

    【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第3张图片

Related Work

  1. CNN及其变体:“VGG [51], GoogleNet [56], ResNet [29], DenseNet [33], HRNet [62], and EfficientNet [57].” [1, 页 2]
  2. 基于自注意力的骨干架构:使用自注意力层来替换流行的ResNet [ 32、49、77]中的部分或全部空间卷积层。
  3. Self-attention/Transformers to complement CNNs
  4. Transformer based vision backbones

Method

“Overall Architecture”

  1. patch partition:224x224x3->56x56x48 [H , W , 3] -> [H/4 , W/4 , 48],a patch size is 4x4, the feature dimension of each patch is 4 × 4 × 3 = 48
  2. 然后在通过Linear Embedding 层对每个像素的channel数据做线性变换,由48变成C,即图像shape再由 [H/4, W/4, 48]变成了 [H/4, W/4, C]以上两点和VIT几乎一致,为了缩小序列,便于进行transformer,不同点在于
    1. ​​​​​​a patch size is 4x4,更细粒度,以实现多重任务
    2. 一个窗口里面进行self-attention,而非全局,减少复杂度。
    3. 无cls token, 因为不全是分类任务。
  3. 然后就是通过四个Stage构建不同大小的特征图,除了Stage1中先通过一个Linear Embedding层外,剩下三个stage都是先通过一个Patch Merging层进行下采样,通道数翻倍。patch merge: 【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第4张图片原因
    1. 为了生成分层的特征层,实现多重任务
    2. 和卷积神经网络保持一致,下采样,通道数x2.
  4. 然后都是重复堆叠Swin Transformer Block注意这里的Block其实有两种结构,如图(b)中所示,这两种结构的不同之处仅在于一个使用了W-MSA结构,一个使用了SW-MSA结构。而且这两个结构是成对使用的,先使用一个W-MSA结构再使用一个SW-MSA结构。

补充:Layer-Norm作用:【机器学习】LayerNorm & BatchNorm的作用以及区别_敲代码的quant的博客-CSDN博客_layernorm的作用

“Shifted Window based Self-Attention”

“Self-attention in non-overlapped windows”

动机:全局自注意力复杂度过大,而窗口自注意力是基于窗口数量的,因此是线性的。

 【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第5张图片

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第6张图片

“Shifted window partitioning in successive blocks”

动机:基于窗口的自注意力模块缺少跨窗口的连接,这限制了它的建模能力。

 【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第7张图片

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第8张图片

“Efficient batch computation for shifted configuration”

“we propose a more efficient batch computation approach by cyclic-shifting toward the top-left direction” [1, 页 5] 我们通过循环向左上方移动提出了一种更有效的批处理计算方法。

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第9张图片

动机:按照第一个格图划分,会分成九个窗口,增加计算复杂度。因此需要保持四个窗口。

步骤:将原图的ABC模块,平移到第二个图的位置,然后分别做masked MSA。以右下格窗口为例,其中包含ABC和灰块四个模块,但这四个模块联系不大,因此不需要做自注意力,因此需要用到mask掩码,使其各自做self-attention.最后再将ABC还原。

mask掩码操作

下图是已平移后的图片,已左下窗口为例,3属于灰块(4x7 patches),6属于C (3x7 patches),二者无关。点积自注意力计算就是自身乘以自身的转置,而我们只需要计算移位之前在相同window里的patch之间的自注意力权重,因此对左下和右上加上掩码(mask)忽略掉即可.

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第10张图片

 【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第11张图片

掩码就是给需要掩码的位置加上-100,不需要掩码的位置不变,由于计算得到的自注意力权重是一个非常小的值(由于LN、weight decay等的约束作用,一般模型中间的输入输出都比较小,防止过拟合),因此加上-100就会变成一个绝对值很大的负数,这样经过softmax以后,对应位置就会变成0了。

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第12张图片

 同理可得其他模块~

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第13张图片

“Relative position bias” 相对位置偏差

对于图片分类任务而言,Transformer架构无论采用是一维、二维还是相对位置编码,效果都差不多。但如果去做检测、分割这类密集型预测任务的话,就需要特征对位置信息更敏感,而且更需要周围的上下文关系,在每个Transformer block都做更准确的相对位置编码,肯定是会对这类型的下游任务大有帮助的。

求相对位置索引:例如黄色像素的绝对位置索引是( 0 , 1 ),则它相对蓝色像素的相对位置索引为( 0 , 0 ) − ( 0 , 1 ) = ( 0 , −1 )。接下来将每个相对位置索引矩阵按行展平,并拼接在一起可以得到下面的4x4矩阵 。

【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第14张图片

为了方便处理,把二维索引给转成了一维索引。

  1. 在原始的相对位置索引上加上M-1(M为窗口的大小,在本示例中M=2),加上之后索引中就不会有负数了。 【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第15张图片 
  2. 接着将所有的行标都乘上2M-1。【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第16张图片
  3. 最后将行标和列标进行相加。这样即保证了相对位置关系,而且不会出现上述0 + ( − 1 ) = ( − 1 ) + 0的问题了。【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第17张图片
  4. 真正使用到的可训练参数B^ 是保存在relative position bias table表里的,这个表的长度是等于( 2 M − 1 ) × ( 2 M − 1 ) 的。那么上述公式中的相对位置偏执参数B是根据上面的相对位置索引表根据查relative position bias table表得到的,如下图所示。【Swin Transformer 论文笔记】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows_第18张图片

Experiments

two training settings:

  1. “Regular ImageNet-1K training.” [1, 页 5]
  2. “Pre-training on ImageNet-22K and fine-tuning on ImageNet-1K.” [1, 页 6]

参考笔记:Swin Transformer 学习笔记_lansfair的博客-CSDN博客

Swin-Transformer网络结构详解_太阳花的小绿豆的博客-CSDN博客_swin transformer

论文精读视频:Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili

你可能感兴趣的:(#,论文笔记,深度学习,人工智能)