论文阅读:Swin Transformer:Hierarchical Vision Transformer using Shifted Windows
Abstract
本文提出一种新的Transform,Swin Transformer,可以作为计算机视觉的通用骨干。将Transformer从语言领域转换到视觉领域的存在着挑战,这些挑战来自两个领域之间的差异,这种差异分别是: (1)尺度差异,与语言转换器中处理基本元素的单词标记不同,视觉元素在尺度上具有很大的变化; (2)与文本段落中的单词相比,图像像素的分辨率要高得多。 为了克服这两个差异问题,本文提出一种分层的Transformer,其表示使用Shifted Windows计算。Shifted Windows的作用方式有两点:(1)将self-attention 限制在non-overlapping的本地窗口内进行计算,(2)允许跨窗口连接,带来了更高的效率。本文中提出的分层结构,对于图像不同的尺度变化能够较灵活应对,另外,在计算复杂度上,其计算复杂度相对图像大小是线性级别的。
Introduction
在本文中,作者试图扩大Transform的适用性,使其能够作为计算机视觉的一个通用backbone.但是将Transformer从语言领域转用到计算机视觉领域存在一些问题,在摘要中已经写到两点差异问题,另外,在许多计算机视觉任务中,类似于语义分割这种需要在密集像素进行预测的任务,其self-attention的计算复杂性是与图像尺寸的二次方成正比的。 为了解决以上诸多问题,本文提出了一个通用的Transformer,称为Swin Transformer,其构建分层特征映射并且具有对图像尺寸大小成正比的线性计算复杂性。线性计算复杂度是通过在non-overlapping的本地窗口内计算自注意力来实现的。
图1: 如图1所示:Swin Transformer从图中小尺寸的patches开始合并,也就是从灰色小块的patches开始合并,逐渐在更深级的Transformer层中合并相邻patches来构建分层表示。通过这些分层特征图,Swin Transformer模型可以有效利用先进技术进行密集像素视觉任务的预测。 由于每个窗口中的补丁数量是固定的,所以复杂度与图像大小成线性关系。 这些优点使 Swin Transformer 适合作为各种视觉任务的通用主干,与之前基于 Transformer 的架构形成对比,后者产生单一分辨率的特征图并具有二次复杂度。
图2:
如图 2 所示,Swin Transformer 的关键设计元素是:它在连续self-arrention层之间窗口分区的移动,移动的窗口桥接前一层的窗口,提供它们之间的连接,有着显着增强建模能力。 这种策略在解决延迟问题也很有效,因为,窗口内的所有query patches共享相同的key。
Related work
基于self-attention的backbone架构: 同样受到 NLP 领域自注意力层和 Transformer 架构成功的启发,一些作品采用self-attention层来替换流行的 ResNet 中的部分或全部空间卷积层。在这些工作中,自注意力是在每个像素的局部窗口内计算的,以加速优化,并且它们实现了比对应的 ResNet 架构稍好一些的准确率/FLOPs 权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络 。我们建议不使用滑动窗口,而是在连续层使用shift窗口,这允许在通用硬件中更有效地实现。
self-attention/transformer增强CNNs: 另一项工作是增强标准的 CNN 架构带有self-attention层或 Transformers self-attention层可以通过提供编码远程依赖或异构交互的能力来补充主干或头部网络。最近,Transformer 中的编码器-解码器设计已应用于目标检测和 实例分割任务 ,我们的工作探索了 Transformers 对基本视觉特征提取的适应性,并且是对这些工作的补充。
基于transformer的视觉backbones: 与我们的工作最相关的是 Vision Transformer (ViT) ,ViT 的开创性工作直接将 Transformer 架构应用于不重叠的中等大小图像块上进行图像分类。与卷积网络相比,它在图像分类方面实现了令人印象深刻的速度-准确度权衡。 ViT 在图像分类上的结果令人鼓舞,但其架构不适合用作密集视觉任务或输入图像的通用backbone,另外其低分辨率特征图以及复杂性随图像大小的二次增加。根据经验,我们发现我们的Swin Transformer 架构可在这些图像分类方法中实现最佳速度与准确度权衡。
Method
图3:模块整体架构
图3显示了Swin Transdormer的架构,首先通过patch partition分割模块将输入的RGB图像分割成不重叠的patch,将每个patch看做一个token,其值被设置为原始RGB值的串联。在本文方法的实现中,我们使用一个4x4 的patch大小,因此每个patch的特征维度是443=48。将patch partition的输出结果输入到Linear Embebdding层,这个层应用于原始特征,将原始特征变换到任意通道,在本文中用C表示。然后,在Linear Embebdding层的输出结果上应用几个具有修改self-attention计算的Swin Transform块。到此,为图3中“stage1”。
为了生成分层表示,通过合并patch减少token的数量。第一个补丁合并层连接每组 2 × 2大小的相邻块的特征,以及在 4C 维级联上应用线性层特征。这样的数量减少的倍数为2×2 = 4,并且输出维度为 2C。在这之后应用Swin Transformer块进行特征变换,分辨率保持在H/8xW/8。到此,为图3中的"stage2"。
重复这个过程两次,分别为图3中的“stage3”和“stage4”,其分辨率分别为H/16xW/16,H/32xW/32。
Swin Transformer 模块: Swin Transformer 将传统标准 Transformer 块中的标准多头自注意力 (MSA) 模块替换为基于Shifted Windows的模块,其他层保持不变。 Swin Transformer模块由一个基于移动窗口的 MSA 模块组成,后跟一个 2 层 MLP,其具有 GELU 非线性。在每个 MSA 模块和每个 MLP 之前,应用了 LN)层,在每个模块之后应用一个残差连接。
基于移位窗口的self-attention 标准的 Transformer 架构都进行全局自注意力,计算token与所有其他token之间的关系。全局计算导致相对于token数量的二次复杂性,使其不适用于许多需要大量token进行密集预测或表示高分辨率图像的视觉问题。
非重叠窗口中的self-attention 为了有效建模,本文在局部窗口内计算自注意力,使用不重叠的方式均匀地划分图像。 假设每个窗口包含 M × M 个补丁,全局 MSA 模块和基于 h × w 补丁图像的窗口的计算复杂度为: 其中(1)复杂度是patch数量hw的二次方增长,而(2)是线性增长,其中M是固定的,全局self-attention是负担不起一个很大的hw,然而在本文中基于窗口的self-attention是可以的。
连续块中的移位窗口分区 为了在保持non-overlapping窗口的高效计算的同时引入跨窗口连接,我们提出了一种移位窗口分区方法,该方法在连续的 Swin Transformer 块中的两个分区配置之间交替。 如图2所示,在layer L中使用常规窗口分割策略,从左上角像素开始,将 8 × 8 特征图均匀分割成 2 × 2 个大小为 4 × 4 (M = 4) 的窗口。 然后,在Layer L+1中,采用一个shifted的窗口,移动M/2的像素,使用移位窗口分区方法,连续的 Swin Transformer 块计算为: 其中W-MSA和SW-MSA分别代表使用整齐分割和shifted的self-attention;
移位配置的高效批量计算
图4 本文作者提出了一个更高效的batch计算方法,我们通过向左上方向循环移位提出了一种更有效的批量计算方法,如图 4 所示。 在这种转变之后,一个批处理窗口可能由特征图中不相邻的几个子窗口组成,因此采用掩蔽机制将自注意力计算限制在每个子窗口内。使用循环移位,批处理窗口的数量与常规窗口分区的数量相同,因此也是有效的。 相对偏置bias 在计算自注意力时, 通过在计算相似度时将相对位置偏差包含到每个头部: 架构变种 本文作者建立了基础模型Swin-B,还介绍了 Swin-T、Swin-S 和 Swin-L,它们是模型大小和计算复杂度分别约为 0.25 倍、0.5 倍和 2 倍的版本。 对于所有实验,每个头部的query维度为 d = 32,每个 MLP 的扩展层为 α = 4。 这些模型变体的架构超参数是:
Experiments
本文对 ImageNet-1K 图像分类进行实验、COCO 对象检测 和 ADE20K语义分割。首先将提议的 Swin Transformer 架构与之前在这三个任务上的最新技术。然后,我们消解了 Swin Transformer 的重要设计元素。
Conclusion
本文介绍了 Swin Transformer,Swin Transformer 实现了在 COCO 对象检测和ADE20K语义分割,明显超越以前最好的方法。 我们希望 Swin Transformer 的在各种视觉问题上的强大表现将鼓励视觉和语言信号的统一建模。作为 Swin Transformer 的一个关键元素,基于移动窗口的自注意力在视觉问题上被证明是有效和高效的,我们也期待研究它在自然语言处理中的应用。
如果文章对您有帮助,请点个赞再走啦,谢谢啦!
尊重原创,转载请注明出处!
|