Swin Transformer: Hierarchical Vision Transformer using Shifted Windows.
Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang Stephen Lin, Baining Guo
Computer Vision and Pattern Recognition (2021)
Microsoft Research Asia
https://github.com/microsoft/Swin-Transformer
Swin: Shifted Windows
swin-transformer是什么?
swin-transformer是可以用于计算机视觉任务的通用主干网络,可以用于图像分类、图像分割、目标检测等一系列视觉下游任务。
下面是swin-transformer在各个领域的一些应用
解决了什么问题?
优点是什么?
结论是什么?
Transformer完全可以在各个领域取代CNN
效果怎么样?
在ImageNet上并非SOTA,仅与EfficientNet的性能差不多
swin-transformer的优点不是在于分类,在分类上的提升不是太多,而在检测、分割等下游任务中,有巨大的提升.
在目标检测数据集COCO上,比当时的SOTA提高了2.7点左右的mAP
下面是paper with code上的最新截图,几乎全是Swin-Transformer的变体
在语义分割数据集ADE20K上,比当时的SOTA提高了3.2点左右的mAP
下面是paper with code上的最新截图,也几乎全是Swin-Transformer的变体
Bengio团队于2014年提出Attention机制,用于机器翻译中,使模型自动寻找原文本中与预测目标单词相关的内容
Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.
谷歌团队于2017年提出基于注意力机制的Transformer架构代替RNN
Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need [C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.
2018年Momenta提出SENet,开始将Attention机制与CNN结合,用于图像领域
Jie Hu et al. Squeeze-and-Excitation Networks. Computer vision and Pattern recognition (2018)
谷歌大脑于2020年提出第一篇应用于图像领域纯Attention网络ViT
Alexey Dosovitskiy et al. “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale” arXiv: Computer Vision and Pattern Recognition (2020)
以商品搜索为例
Query:搜索引擎上输入的内容,例如商品名称
Key:搜索引擎根据Query为你匹配Key,例如商品的种类,颜色,描述
Value:搜索引擎根据Query和Key的相似度得到匹配的内容
参考链接:https://jalammar.github.io/illustrated-transformer
将图像划分成16x16的patch,每一层的transformer得到的特征图都是16倍下采样的大小, 没有多尺寸特征,感受野相同;
可以通过全局的自注意力机制达到全局的建模能力,但是对多尺寸特征的提取能力弱,不利于目标检测、分割等下游任务,检测分割时只能从bottleneck上提取特征,无法从主干提取浅层特征;
自注意力始终在整图上进行,计算复杂度是图像尺寸的平方,无法使用大分辨率的图像;
swin-transformer:
在小窗口内计算自注意力,而不是在整图上计算自注意力,当窗口大小固定,自注意力的复杂度就固定,整图的计算复杂度与图像尺度呈线性增长关系,利用了图像的局部性的先验知识;
局部性:同一个物体不不同部位,或语义相近的不同物体,大概率会出现在相邻的地方,所以对视觉任务来说,在小窗口内计算自注意力是合理的,在全局计算会造成计算的浪费;
Stage2
Stage3与Stage4重复Stage2,仅是swin-transformer block数量不同
Pixel Shuffle的逆操作
将patch块合并,特征图大小减半,通道数翻倍
起到类似pooling层的作用,增大感受野,形成特征金字塔
有利于检测、分割等下游视觉任务
常规解决方案:
将小窗口padding后进行批运算,但是会造成计算资源的巨大浪费
Swin-transformer解决方案:掩码机制
优点:没有增加额外的窗口数量,只需要一次计算就可以得到自注意力矩阵,提高了shifted-window的批计算效率;
普通多头自注意力:
基于窗口的多头自注意力:
计算复杂度由图像大小的二次函数变为了图像大小的一次函数
不同参数量的Swin-Transformer仅是stage3的swin-block
Swin相较于ViT有较大的提升,单仅与EffNet相差不多
提升数据集规模,ViT与Swin都有较大提升
Swin-transformer在分类上提升不多,但在检测与分割等下游任务上有巨大提升。
不同算法框架下,Swin与CNN的比较
结论:Swin可以当作通用的骨干网络使用
相同同算法框架下,Swin与不同骨干网络的比较
结论:相似参数量下,Swin的性能更好
极致性能的比较(各种方法都用上)
结论:Swin-L的性能最优