深度学习之NLP学习笔记(六)——Swin Transformer

深度学习之NLP学习笔记(六)——Swin Transformer_第1张图片
Project code

Abstract

本文提出了一种新的Vision Transformer,称为Swin Transformer,它可以作为计算机视觉的通用骨干。将Transformer从语言转换到视觉方面的挑战来自于这两个领域之间的差异,例如视觉实体规模的很大变化和图像中的像素与文本中的文字相比的高分辨率。为了解决这些差异,我们提出了一个hierarchical Transformer,其表示是计算移位窗口。移位窗口方案通过将自注意计算限制在不重叠的局部窗口上,同时也允许跨窗口连接,带来了更大的效率。

这种层次结构具有在不同尺度上建模的灵活性,并且对图像大小具有线性的计算复杂度。 Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K,86.4% top-1)和密集的预测任务,如目标检测(58.7 box AP and 51.1 mask AP on COCO test-dev)和语义分割((53.5 mIoU on ADE20K val)。它的性能超过了之前最先进的+2.7 box AP and +2.6 mask AP on COCO,and +3.2 mIoU on ADE20K,展示了基于Transformer的模型作为视觉骨干的潜力。


1. Introduction

计算机视觉建模一直由卷积神经网络主导。从AlexNet和它在图像分类挑战上的革命性性能开始,CNN架构已经通过更大规模的、更广泛的连接和更复杂的卷积形式变得越来越强大。CNNs作为各种视觉任务的骨干网络,这些架构的进步导致了性能的改进,并广泛地提升了整个领域。

另一方面,在自然语言处理(NLP)中,网络体系结构的发展已经采取了一条不同的道路,即今天流行的体系结构是Transformer。为序列建模和转化任务而设计的Transformer,因其注意力机制对数据中的长期依赖性进行建模而闻名。它在语言领域的巨大成功使研究人员研究了它对计算机视觉的适应,最近它在某些任务上展示了良好的结果,特别是图像分类和联合视觉语言建模。

在本文中,我们试图扩大Transformer的适用性,使它可以作为计算机视觉的通用主干,就像它在NLP和CNNs在视觉中所做的一样。我们注意到将其在语言领域的高性能转移到视觉领域的具有较大挑战,可以用两种模式之间的差异来解释。

其中一个差异涉及到Scale。与在语言Transformer中作为处理的基本元素的词标记不同,视觉元素在scale上可能有很大的差异,这是一个在对象检测等任务中受到注意的问题。在现有的基于Transformer模型中,标记都是固定的,不适合这些视觉应用。另一个区别是,图像中的像素分辨率比文本段落中的文字要高得多。存在许多视觉任务 ,如语义分割,需要在像素水平上进行密集的预测,这对于高分辨率图像上的Transformer是难以处理的,因为它的自我注意的计算复杂度是对图像大小的二次化。

深度学习之NLP学习笔记(六)——Swin Transformer_第2张图片
为了克服这些问题,我们提出了一种通用的transformer backbone,称为Swin transformer,它构造层次特征图,并对图像大小具有线性计算复杂度。如图1(a)所示,Swin transformer从小块(灰色概述)开始,并逐渐合并相邻的深层patch来构造分层表示。利用这些层次特征图,Swin transformer可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。

线性计算的复杂度是通过在分割图像的不重叠的窗口中局部计算自注意来实现的。每个窗口中的patch的数量是固定的,因此复杂性与图像大小呈线性关系。这些优点使得Swin transformer适合作为各种视觉任务的通用主干,而不是以前基于transformer的体系结构,它生成单分辨率的特征图并具有二次复杂度。

Swin Transformer的一个关键设计元素是它在连续自注意层之间的窗口分区,如图2所示。移位的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力

深度学习之NLP学习笔记(六)——Swin Transformer_第3张图片
我们相信,跨计算机视觉和自然语言处理的统一架构可以有利于这两个领域,因为它将促进视觉和文本信号的联合建模,而来自这两个领域的建模知识可以更深入地共享。我们希望Swin transformer在各种视觉问题上的强大性能能推动这种信念在社区中更深入,并鼓励对视觉和语言信号的统一建模。


2. Related Work

CNN and variants: AlexNet、ResNet、DenseNet、HRNet、EfficientNet, depthwise convolution 与 deformable convolution。

Self-attention based backbone architectures:我们建议不使用滑动窗口,而是在连续层之间移动窗口,这允许在一般硬件中更有效地实现窗口。

Self-attention/Transformers to complement CNNs:另一项工作是用自我注意层或Transformer来增强标准的CNN架构。自我注意层可以通过提供编码远程依赖关系或异构交互的能力来补充主干或头网络。

Transformer based vision backbones:与我们的工作最相关的是Vision Transformer及其后续工作。ViT的开创性工作直接将Transformer架构应用于不重叠的中型图像Patch上进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度-精度权衡。另一个并行工作探索了一个类似的思路,以在Transformer上构建多分辨率特征图。它的复杂性对图像大小仍然是二次的,而我们的复杂性是线性的,也在局部运行,这已经证明有利于建模视觉信号的高相关性。


3. Method

3.1. Overall Architecture

图3概述了Swin-Transformer的体系结构,说明了小型版本(SwinT)。它首先通过一个补丁分割模块将一个输入的RGB图像分割成不重叠的补丁,类似ViT。每个补丁都被视为“标记”,其功能被设置为原始像素RGB值的连接。在我们的实现中,我们使用的补丁大小为4×4,因此每个补丁的特征尺寸为4×4×3=48。在该原始值特征上应用线性嵌入层,将其投影到任意维数(表示为C)。

在这些补丁tokens上应用了几种具有改进的自注意计算方法的Transformer模块。Transformer保持tokens的数量(H/4×W/4),连同线性嵌入一起被称为“阶段1”。

为了产生层次表示,随着网络的深入,补丁合并层减少了tokens的数量。第一补丁合并层连接每组2×2相邻补丁的特征,并在4c维连接特征上应用线性层。这将tokens数量减少2×2=4的倍数(2×分辨率下采样),并且输出尺寸设置为2C。之后应用Swin Transformer进行特征转换,分辨率保持在H/8×W/8。补丁合并和特征转换的第一个数据块表示为“第二阶段”。该过程重复两次,分别为“第阶段3”和“第4阶段”,输出分辨率分别为H/16×W/16和H/32×W/32。这些阶段共同产生一个层次表示,具有与典型卷积网络(如VGG[51]和ResNet)相同的特征映射分辨率。因此,所提出的架构可以方便地将主干网络置于现有的各种视觉任务的方法中。

深度学习之NLP学习笔记(六)——Swin Transformer_第4张图片
Swin Transformer block
Swin Transformer是通过利用基于移动窗口的模块替换Transformer中的标准的多头注意力来构建的,其他层保持不变。

如图3(b)所示,Swin Transformer由一个基于移动窗口的MSA模块组成,然后是一个中间具有GELU非线性的2层MLP。在每个MSA模块和每个MLP之前应用一个层规范(LN)层,并在每个模块之后应用一个残余连接。

3.2. Shifted Window based Self-Attention

Self-attention in non-overlapped windows
为了实现有效的建模,我们建议在局部窗口内计算自我注意。窗口被排列成以不重叠的方式均匀地分割图像。假设每个窗口都包含MxM补丁,全局MSA模块和基于hxw补丁图像的窗口的计算复杂度是:
深度学习之NLP学习笔记(六)——Swin Transformer_第5张图片
其中前者是补丁数 hxw 的二次方,当M是固定的时,后者是线性的(默认设置为7)。对于尺寸为hw的全局自我注意计算通常是无法承受的,而基于窗口的自我注意是可扩展的。

Shifted window partitioning in successive blocks
基于窗口的自我注意模块缺乏跨窗口的连接,这限制了其建模能力。为了在引入跨窗口连接的同时保持不重叠窗口的有效计算,我们提出了一种移位窗口分区方法,该方法在连续Swin Transformer块中的两种分区配置之间交替。

第一个模块使用从左上角像素开始的常规窗口划分策略,并将8×8特征图均匀划分为2x2个大小为4×4窗口。然后,下一个模块采用窗口配置,该窗口配置通过将窗口从规则划分的窗口中移开(M/2,M/2)像素而与前一层的配置不同。

采用移位窗口划分方法,连续的Swin Transformer计算为:
深度学习之NLP学习笔记(六)——Swin Transformer_第6张图片
移位的窗口划分方法在上一层中引入了相邻的不重叠窗口之间的连接,并且被发现在图像分类,对象检测和语义分割方面很有效,如表4所示。


Efficient batch computation for shifted configuration
移动窗口分区的一个问题是,它将导致更多的窗口,从从移位配置中的(h/M) x (w/M) 到(h/M+1)x(w/M+1),而且有些窗户将会小于M×M。一个简单的解决方案是将较小的窗口填充到M×M的大小,并在计算注意时屏蔽填充的值。当常规分区中的窗口数量很少时,例如2×2,增加的计算相当可观(2×2→3×3,大2.25倍)。在这里,我们提出了一种更有效的批处理计算方法,通过循环向左上角的方向移动,如图4所示。在这种Shift之后,批窗口可以由特征图中不相邻的子窗口组成,因此使用掩蔽机制将自我注意计算限制在每个子窗口内。通过循环位移,批处理窗口的数量仍然与常规窗口分区的数量相同,因此也是有效的。该方法的低延迟率见表5所示。
深度学习之NLP学习笔记(六)——Swin Transformer_第7张图片


3.3. Architecture Variants

我们构建了我们的基础模型,称为Swin-B,以具有与ViTB/DeiT-B相似的模型大小和计算复杂度。我们还介绍了Swin-t、Swin-s和Swin-l,它们分别为约0.25×、0.5×和2×的模型大小和计算复杂度。默认情况下,窗口大小设置为M=7。对于所有的实验,每个头的查询维度为d=32,每个MLP的扩展层为α=4。这些模型变体的体系结构超参数包括:
深度学习之NLP学习笔记(六)——Swin Transformer_第8张图片
其中,C是第一阶段的隐藏层的通道数。表1中列出了模型网图像分类的模型变量的模型大小、理论计算复杂度(FLOP)和吞吐量。
深度学习之NLP学习笔记(六)——Swin Transformer_第9张图片

4. Experiments

我们在ImageNet-1K图像分类[18]、COCO对象检测[42]和ADE20K语义分割[80]上进行了实验。在下面的文章中,我们首先比较了提出的Swin Transformer架构与之前的三个任务上最先进的技术。然后,我们阐述了Swin Transformer的重要设计元素。

深度学习之NLP学习笔记(六)——Swin Transformer_第10张图片

5. Conclusion

本文提出了一种新的Swin Transformer,它产生分层特征表示,具有对输入图像大小的线性计算复杂度。Swin Transformer在COCO对象检测和ADE20K语义分割方面取得了最先进的性能,显著超过了以往的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大性能将鼓励对视觉和语言信号的统一建模。

作为Swin Transformer的一个关键元素,基于移位窗口的自我注意在视觉问题上是有效的,并期待着研究其在自然语言处理中的应用。

Acknowledge

详细的体系结构规范见表7,其中假设所有体系架构的输入图像大小为224×224。“n×n”表示补丁中相邻特征的串联。此操作导致特征图的向下采样。“96-d”表示输出维数为96的线性层。7×7”表示一个窗口大小为7×7的多头自注意力模块。
深度学习之NLP学习笔记(六)——Swin Transformer_第11张图片

你可能感兴趣的:(NLP,计算机视觉,NLP,Transformer,SwinTransformer,ViT)