论文链接:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
源码地址:https://github.com/microsoft/Swin-Transformer
参考资料:Swin Transformer:Hierarchical Vision Transformer using Shifted Windows (论文阅读笔记)_酉意铭的博客-优快云博客
(51条消息) Swin-Transformer网络结构详解_霹雳吧啦Wz-优快云博客_swin transformer结构
目录
self-attention / transformer 补充CNNs
基于shifted window 的self-attention
Efficient batch computation for shifted configuration
摘要
CV中使用transformer挑战:
- 目标尺寸多变。不像NLP任务中token大小基本相同,目标检测中的目标尺寸不一,用单层级的模型很难有好的效果。
- 图片的高分辨率。尤其是在分割任务中,高分辨率会使得计算复杂度呈现输入图片大小的二次方增长。
相比于Vision Transformer(讲解),Swin Transformer做出了几点改进:
- 层次化构建方法:使用了类似卷积神经网络中的层次化构建方法(Hierarchical feature maps),比如特征图尺寸中有对图像下采样4倍的,8倍的以及16倍的,这样的backbone有助于在此基础上构建目标检测,实例分割等任务。而Vision Transformer中直接下采样16倍,后面的特征图也是维持这个下采样率不变。
- 特征图划分:在Swin Transformer中使用了Windows Multi-Head Self-Attention(W-MSA)的概念,比如在下图的4倍下采样和8倍下采样中,将特征图划分成了多个不相交的窗口,并且Multi-Head Self-Attention只在每个窗口内进行。相对于Vision Transformer中直接对整个特征图进行Multi-Head Self-Attention,这样做的目的是减少计算量,尤其是在浅层特征图很大的时候。
- 窗口变换:特征图划分虽然减少了计算量,但会隔绝不同窗口之间的信息传递,因此所以在论文中作者又提出了Shifted Windows Multi-Head Self-Attention(SW-MSA)的概念,目的是在相邻窗口中传递信息。
Introduction
Transformer 是专为序列建模和转导任务而设计,以其对数据中的长期依赖关系建模的关注而著称。 它在语言领域的巨大成功促使研究人员研究其对计算机视觉的适应性,最近它在某些任务上展示了有希望的结果,特别是图像分类和联合视觉语言建模。
如图 1(a) 所示,Swin Transformer 通过从小尺寸的patches(灰色轮廓)开始并逐渐合并更深的 Transformer 层中的相邻patches来构建分层表示。通过这些分层特征图,Swin Transformer 模型可以方便地利用先进的技术进行密集预测,例如特征金字塔网络 (FPN) 或U-Net。线性计算复杂度是通过在分割图像的非重叠窗口中局部计算self-attention来实现的(以红色标出)。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。这些优点使 Swin Transformer 适合作为各种视觉任务的通用backbone,与之前基于 Transformer 的架构形成对比,后者产生单一分辨率的特征图并具有二次复杂性。
Swin Transformer 的一个关键设计元素是它在连续自注意力层之间的窗口分区的移动(shift),如图 2 所示。移动的窗口(shifted windows)桥接前一层的窗口,提供它们之间的连接,显着增强建模能力(见表 4)。 这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁(qu