论文阅读笔记:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
论文阅读笔记:Swin Transformer
-
摘要
-
1 简介
-
2 相关工作
-
3 方法论
-
- 3.1 总览
-
- Swin Transformer block
-
3.2 基于移位窗口的Self-注意力机制
-
- 在非重叠区域上执行Self-注意力计算
- 通过移位的方式划分模块间的窗口划分
- 通过移位配置实现高效的批量处理计算
- 读了,但是只能读一点,仅作涉猎
Author: Yue Cao et.al.
Translate from: arXiv:2103.14030v2
Cite as: Liu, Z., Lin, Y., Cao, Y., Hu, H., Wei, Y., Zhang, Z., Lin, S.C., & Guo, B. (2021). Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. ArXiv, abs/2103.14030.
Open source: https://github. com/microsoft/Swin Transformer
摘要
该文开发了一款新型ViT架构,并命名为Swin Transformer模型。它可充当计算机视觉领域的通用后端模型,在多个应用场景中展现出显著优势。然而由于计算机视觉与自然语言处理之间存在本质性的技术差异——如物体尺寸与图像像素密度较高的特点——因此直接将现有的Transformer技术从自然语言处理应用到计算机视觉面临适应性问题。为此目的,在现有架构基础上我们设计了另一种结构:一种分层次(层次式的)Transformer模型,在滑动窗口机制上进行了优化改进。
移位窗口的设计上受到限制,使得Self-attention运算仅局限于非重叠局部窗口范围之内;然而,在保持跨窗层信息传递的基础上实现了高效的运算。
这种层次结构能够有效建模不同尺度特征,并且其计算复杂度与图像尺寸呈线性关系。
其独特的特性使其能够很好地适应各种视觉任务。该方法适用于多种重要的视觉任务如图像分类、密集预测、目标检测以及语义分割等。在性能方面显著超越了现有的顶尖模型。其分层架构及滑动窗口机制展示了在各类MLP架构中具有显著优势。
1 简介
在计算机视觉领域中,默认采用的是卷积神经网络(CNN)这一模型架构。基于其不断扩展的规模、广泛且深入的连接以及日益复杂的结构设计,CNN体系展现出卓越的能力。卷积神经网络已被公认为多种视觉任务的基础架构。
事实上,Shifted windows的思想就和CNN中Conv的计算方法很像
从另一个角度来看,在自然语言处理领域(NLP),体系结构的发展经历了截然不同的路径。其中,最具代表性的网络架构是Transformer。该架构旨在满足序列建模与转换任务的需求,并显著特点在于对长距离依赖关系的关注。其在NLP领域的卓越表现推动了研究人员探索其适用于计算机视觉的可能性。最近研究表明,在某些关键应用中该架构取得了令人鼓舞的结果,特别适用于图像分类以及联合视觉与语言模型的任务。
在本文中, 我们致力于优化Transformer架构, 使其能够作为计算机视觉领域的统一基础模型发挥作用, 如CNN所做. 我们发现, 将Transformer从自然语言处理领域迁移至视觉感知领域所面临的困难可归因于两种不同的工作模式间的差异
- 其中一个差异可能因规模不同而显著变化。与作为语言转换器处理的基本元素如单词token相比,在现有基于Transformer的语言模型中token通常具有固定的尺寸或比例关系这一特性并不适用于视觉应用。
- 另一个区别在于图像中的像素分辨率远高于文本中的单词级别。例如,在需要对像素级别进行密集预测的任务如语义分割中由于Self-attention计算复杂度与图像尺寸平方成正比这一特性使得处理高分辨率图像变得极为困难。
- 因此针对高分辨率图像是一个极具挑战性的任务。
- 因为在这种情况下 Self-attention机制的时间复杂度与输入图像像素数量呈平方关系

图1(a)中,Swin Transformer通过将图像块嵌入到更深的层级并结合这些嵌入后的区域,从而生成层次化的特征映射.值得注意的是,该方法仅在每个局部区域(以红色方框标注)内执行自注意力机制,因此其整体计算复杂度与输入尺寸呈线性关系. 图1(b)对比而言,传统的ViT架构仅能生成统一分辨率下的单一层特征映射.此外,它依赖于全局自注意力机制,导致其整体计算复杂度与输入尺寸呈平方关系.
我们提出了一种通用的Swin-Transformer作为深度学习模型的基础架构,在该架构中构建了层次化的特征映射网络。这些特征映射网络能够有效地提取图像中的高层次表示信息,并且其计算复杂度与图像尺寸呈线性关系(如图1所示)。具体而言,在构建特征映射的过程中,模型从较小尺寸的patch单元开始逐步构建多分辨率表示。这种构建过程不仅能够有效提升模型对细节特征的关注能力[1],而且还能显著降低整体计算开销(如图2所示)。通过在分割图像时采用非重叠窗口的方式并结合自注意力机制进行局部特征融合,在保证计算效率的同时实现了对多尺度信息的有效捕捉[2]。值得注意的是,在Swin Transformer的设计中,默认设置下每个区域内的patch数量是固定的这一特点使得该模型能够在不同分辨率输入下展现出良好的适应性(如图3所示)。此外,在计算复杂度方面与传统的基于Patch-Merging策略的方法相比Swin Transformer采用了更加简洁高效的架构设计从而进一步降低了整体算法的时间复杂度[3]。

图2展示了基于滑动窗口机制实现Self-attention的一种典型示例。在第l层(左侧),我们遵循固定的window划分策略,并在每个window内部实现Self-attention机制。对于下一层l+1(右侧),我们通过平移window的位置来生成新的window区域。由此,在新window区域内的Self-attention计算跨越了原有window分界线,并建立起各区域间的关联关系。
Swin Transformer的核心组件是基于连续滑动窗口划分的一种创新架构。该策略特别针对真实世界中的时延问题进行了优化:通过确保硬件能够高效访问内存。与早前提出的基于滑动窗口的自注意力机制[33,50]相比,在常规硬件环境下存在显著延迟问题不同的是,在这种新方法中,所有查询patch共享同一组key集合。实验证明该方法较传统滑动窗口方法降低了延迟水平(latency),但其建模能力与之相当。
请注意!基于窗口划分的变化被称为shifted window;而传统的滑动窗口法则是通过滑动窗口本身来实现操作。
这种改进带来的优势显而易见:通过采用互不重叠且共同拥有一个键集合的方式,在优化后可显著降低计算复杂度。
具体而言,在前后连续的SWN Transformer模块中轮流采用两种划分配置 ,如第3.2节所述。
2 相关工作
略
3 方法论
3.1 总览
图3介绍了Swin Transformer体系结构,并详细说明了该体系中tiny版本(Swin-T)的具体实现过程。该架构首先将输入的RGB图像被划分为非重叠的小块patch(即小矩阵),每个这样的patch都被视为一个token并被提取其特征信息。在我们的实现方案中选择使用大小为4×4像素的小块作为每个patch单元,在此设置下计算得到每个这样的小块具有4×4×3=48个特征维度。随后,在原始特征向量上应用线性嵌入层将其映射到任意指定的目标维度空间C中以完成后续处理步骤

图3(a)中展示了Swin Transformer的结构;前后的两个Swin Transformer模块分别由W-MSA和SW-MSA代表,其中W-MSA对应于具有标准窗口尺寸的多头自注意力机制,而SW-MSA则代表具有移位窗口尺寸的多头自注意力机制。
接着,在这些patch上应用了几项改进的Swin Transformer模块。每个转换器模块都维持着token数量为\frac{H}{4}\times \frac{W}{4}的数量,并与Linear embedding结合在一起被归类为‘stage 1’。
为了生成层次化的表示,在深入研究网络的过程中,并通过将patch进行合并以减少token的数量。首先,在第一个融合层中将每组相邻的2×2 patch特征进行结合,并在经过4C维特征融合后的空间上应用线性变换。这使得token数量减少至原来的1/4(相当于分辨率降低至原来的1/2),输出空间维度变为C的一半。随后,在进入‘stage 2’阶段后应用SW Transformer块进行特征变换,在此过程中保持了\frac{H}{8}\times \frac{W}{8}的空间分辨率。随后‘stage 3’和‘stage 4’阶段依次展开,在这两个阶段中输出分辨率分别降采样为\frac{H}{16}\times \frac{W}{16}和\frac{H}{32}\times \frac{W}{32}。这些层次化的表示与传统卷积网络具有相同的分辨率特性,在此基础之上所提出的架构能够方便地替换现有方法中的backbone模块,并适用于多种视觉任务处理
Swin Transformer block
基于标准多头自关注机制中的MSA组件被替换成采用平移窗口设计的新结构而构建而成的Swin Transformer系统,在其余层维持原有结构不变的情况下实现了模型的整体架构设计。参考图3(b),该系统主要由单个SW-MSA组件构成,在其后依次接入了一种经过GELU激活函数处理的两层MLP结构。在每一个MSA组件与MLP组件之间配置了标准化处理环节,并在每个组件之后加入了残差链接以促进信息传递流通。
3.2 shifted window-based Self-attention
整个视觉系统中的全局自注意力机制其自注意力机制计算复杂度与其参与计算的token数量呈平方增长这一特性显著限制了其在处理高分辨率图像时的应用效果
非重叠的窗口上计算Self-attention
为实现有效的建模目标, 我们建议仅在局部区域进行Self-attention计算, 将图像划分为若干互不重叠且均匀分布的区域, 每个区域包含M×M个patch. 假设整个图像划分为h \times w个patch, 则基于全局和分块自注意力机制的计算复杂度分别为(假设每个子块包含K= M×N个通道信息):

其中前者涉及的patch总数为hw平方,在这种情况下后者与hw呈线性关系;然而全局MSA通常具有较高的计算开销,在这种情况下基于窗口划分的方法(W-MSA)却表现出良好的可扩展性。
模块间的移位窗口划分
到目前为止基于窗口W-MSA模块存在跨窗口连接方面的不足, 这种缺失严重影响了其建模能力. 为此, 我们提出了一种移位窗口划分的方法, 这种方法能够在前后相继的SWN transformer模块中灵活切换两种不同的划分配置.
如图所示, 该模块遵循从左上角像素出发的标准划分方式, 将8x8特征图像均分为每块大小为4x4(其中M=4)的小块, 这些小块又进一步被划分为数量相同的子区域以实现目标功能。随后采用不同划分策略
使用移位窗口划分方法,整体的SWN transformer模块计算如下(对应图2b):

使用shifted配置的高效批处理计算
移位窗口分区存在一个问题:它会产生更多的小尺寸 window,并且位于图像边缘的小尺寸 window会比常规 window要小一些。为了提高效率,在此我们提出了一种高效的批量处理方法。具体来说,在这种方法中, 我们会先对原始数据进行按左上方方向进行循环移动(如图4所示)。经过移动后的小区域可能包含多个非连续的小区域, 这些小区域会在 feature maps 中彼此不相邻, 因此我们需要利用 mask 机制来限制 Self-attention 计算仅考虑每个小区域内自注意力机制的结果. 这样一来, 批处理 window 的数量与常规 window 的数量是一样的, 并且这种方法也能保证计算的有效性。

