Swin Transformer阅读笔记


一、介绍

  该论文最终修订于2021年3月25日,全名为《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》,题目展示了该论文的两个创新点,第一点是Hierarchical表示用分层结构,第二点是Shifted Window。
  从语言到视觉主要面临两个问题:在之前基于transformer的计算机视觉任务中,token有固定的大小,而不同的视觉任务规模变化大,因此需要改进;另一个区别是像素分辨率比文本的单词多很多,有许多视觉任务,如语义分割,需要预测像素级别的任务,而self-attention的计算复杂度是图像大小的二次方,增加了计算量。因此作者提出了Swin Transformer,它通过构造层次特征映射,使计算复杂度对图像大小呈线性关系。
  Swin Transformer在图像分类、目标检测和语义分割等任务具有较强的性能,可以作为计算机视觉的backbone。在时延相似的情况下,它的性能显著优于ViT/DeiT和ResNe(X)t。作者认为构建计算机视觉和自然语言处理的统一体系结构有利于这两个领域的发展。
作为backbone的模型:
  CNN及其变体:是计算机视觉领域的主流backbone。
  self-attention:受self-attention层和transformer在nlp领域应用成功的启发,一些人使用self-attention层来替代ResNet的部分或全部卷积层。在这些工作中,self-attention在每个像素的局部窗口内计算,以加快优化,并比同等体量的ResNet有更好的准确率/FLOPs权衡。但是昂贵的内存访问导致其实际延迟明显大于卷积网络。作者建议在连续的层之间使用shift window,而不是slide windows,以便在硬件实现中更有效。
  用self-attention/transformer补充CNN:比如用self-attention可以补充backbone或头网络。
  基于transformer的backbone:之前提出的ViT是该领域的开山之作,与卷积网络相比,它在图像分类上取得了优秀的速度/准确率权衡。而ViT需要大规模的训练数据集,DeiT引入了几种训练策略,使ViT在更小的数据集上也有效。但它的架构不适合作为一个通用的骨干网络,因为其feature map是低分辨率的,并且随着图片尺寸的增大,计算复杂度成平方关系增大。有一些人对ViT进行上采样或反卷积进行目标检测和语义分割,但是效果不好。该论文通过修改ViT架构,取得了更好的效果,并且在图像分类任务中实现了最佳速度/准确率权衡。

二、实现细节

  Swin Transformer和ViT的特征图计算区别如下
在这里插入图片描述
  ViT把一张图片分成若干patch,然后提取patch embedding,每层transformer计算patch之间相互的self-attention,一层层传递下去,原ViT中,每个patch大小是1616,传递过程中大小并未改变。ViT产生单一低分辨率的特征图,由于是全局self-attention的计算,导致了计算复杂度与图像大小呈二次关系。
  如果要看到更多细节,则必须缩小patch尺寸,但是随着patch尺寸的缩小,patch的数量就增大了,会极大拖慢transformer的self-attention计算速度,因此Swin Transformer通过合并patch来构建层次特征映射,由于只在每个局部窗口内计算self-attention,对输入图像大小具有线性计算复杂度,因此它可以作为图像分类和密集识别任务的通用backbone。
  Swin Transformer架构如下
在这里插入图片描述
  首先像ViT那样将RGB图像切成不重叠的patch,由于每个patch的大小为4
4,所以每个patch的特征维度为443=48;将该特征通过linear embedding层映射到任意维度(记为C);然后在swin transformer block计算,swin transformer block计算的token数量为(H/4)(W/4),和linear embedding一起称为阶段一。
  为了实现hierarchical,随着层数的增加通过合并patch减少token的数量,第一个patch合并层将每4(2
2)个相邻patch的特征拼接起来,此时特征变为4C维,然后在4C维上应用一个线性层,使其变为2C维,解决了“而self-attention的计算复杂度是图像大小的二次方”的问题;然后在swin transformer block计算,swin transformer block计算的token数量为(H/8)*(W/8),patch合并、线性变换、swin transformer block合称为阶段二;阶段三和阶段四是同一个道理。
  如果做分类,就把class对应的token的feature输入后面的网络处理;如果做检测或者分割,就可以充分利用Hierarchical结构把不同尺度的feature输入处理网络。
  Swin transformer block将两个transformer串接了起来,这两个transformer的区别为W-MSA(Window-MSA)和SW-MSA(Shifted Window-MSA)。
  W-MSA和SW-MSA
在这里插入图片描述
  左图是W-MSA,右图是SW-MSA,在左图中,采用规则的窗口划分方案,在每个窗口内计算self-attention。在右图中,窗口分区被移动(即使用shifted window),产生了新的窗口,新窗口的self-attention计算跨越了右图窗口的边界,提供了不同窗口的连接。
  当尺寸不够时采用如下方法:
在这里插入图片描述

三、实验

  作者分别在ImageNet(用于图像分类)、COCO(用于目标检测)、ADE(用于语义分割)数据集上做实验,得到了不错的效果,与先进的CNN相比,Swin Transformer实现了稍微更好的速度-准确率权衡。
  作者还进行了一系列消融实验,比如是否使用shift window、使用哪种position embedding(使用相对position embedding效果最好,虽然加入绝对position embedding可以提高图像分类准确率,但会降低目标检测和语义分割效果)、怎么滑动窗口(以计算量、计算效果衡量)。
  下公式的B表示position embedding。

在这里插入图片描述

  作者还发现,有助于平移不变性的归纳偏置对于通用视觉建模仍然是可取的,特别是对于目标检测和语义分割的密集预测任务。

四、结论

  Swin Transformer在COCO目标检测和ADE20K语义分割任务上实现了最佳性能,明显优于以往的最佳方法,作者希望Swin Transformer能促进计算机视觉和自然语言处理的统一建模,作者还认为基于shifted window的self-attention在计算机视觉上是有效的,他期待着shifted window在自然语言处理的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值