论文精读-Swin Transformer Hierarchical Vision Transformer using Shifted Windows

论文精读-Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

优点:

1、提出了新的模型设计-Swin Transformer,它通过分层设计与移位窗口实现了跨窗口的连接,增强了模型的建模能力,且将计算时间复杂度压缩至线性。

2、提出了多种变体以适应各种情况

图没有可看:论文精读-Swin Transformer Hierarchical Vision Transformer using Shifted Windows

概述

Swin可以作为计算机视觉的通用骨干。将Transformer从语言适应到视觉的挑战来自于这两个领域之间的差异,例如视觉实体的规模差异很大,以及图像中像素与文本中的单词相比的高分辨率。为了解决这些差异,我们提出了一个分层Transformer,其表示是用移位窗口计算的。移位窗口方案通过将自关注计算限制在非重叠的局部窗口,同时还允许跨窗口连接,从而提高了效率。这种分层架构具有在各种尺度上建模的灵活性,并且相对于图像大小具有线性计算复杂性。Swin transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K上的精度为87.3 top-1)和密集预测任务,如物体检测(COCO测试开发上的58.7盒AP和51.1掩模AP)和语义分割(ADE20K val上的53.5 mIoU)。其性能在COCO上大幅超过了+2.7盒AP和+2.6掩模AP,在ADE20K上超过了+3.2 mIoU,显示了基于transformer的模型作为视觉骨干的潜力。分层设计和移位窗口方法也被证明对全mlp架构是有益的。

背景介绍

在计算机视觉建模中,卷积神经网络(cnn)一直是主导。从AlexNet[35]及其在ImageNet图像分类挑战上的革命性表现开始,CNN 架构通过更大的尺度[27,69]、更广泛的连接[31]和更复杂的卷积形式[64,17,75],变形已经进化得越来越强大。随着cnn作为各种视觉任务的骨干网络,这些架构上的进步已经导致了性能的提高,并广泛地提升了整个领域。

另一方面,自然语言处理(NLP)中网络架构的演变走了一条不同的道路,今天流行的架构取而代之的是Transformer[58]。专为序列建模和转导任务而设计,Transformer因其对数据中的远程依赖关系建模的关注而引人注目。

将其在语言领域的高性能转移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。

1)其中一个差异涉及尺度。与作为语言变形中处理的基本元素的词标记不同,视觉元素在尺度上可以有很大差异,这是一个在物体检测等任务中受到关注的问题[38,49,50]。在现有的基于transformer的模型中[58,19],标记都是固定的尺度,这一属性不适合这些视觉应用。(分层设计+移动窗口)

2)另一个区别是,与文本段落中的单词相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是难以处理的,因为其自关注的计算复杂性是图像大小的二次元。(分层设计+移动窗口)

Swin Transformer, 它构建分层特征映射,并且具有与图像大小相关的线性计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的补丁(用灰色表示)开始,并逐渐合并更深Transformer层中的相邻补丁来构建分层表示。有了这些分层特征映射,Swin Transformer模型可以方便地利用高级技术进行密集预测,如特征金字塔-中间网络(FPN)[38]或U-Net[47]。线性计算复杂性是通过在分割图像的非重叠窗口(用红色标出)内局部计算自关注来实现的。每个窗口中的补丁数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而以前基于Transformer的架构[19]只能生成单一分辨率的特征图,并且具有二次复杂度。

image-20240520102817594

Swin Transformer的一个关键设计元素是它在连续的自关注层之间的窗口分区的移位,如图2所示。移位的窗口桥接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(见表4)。这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁共享相同的键集1,这有助于硬件中的内存访问。相比之下,早期基于滑动窗口的自注意方法[30,46]在一般硬件上由于不同的键集而遭受低延迟查询像素。我们的实验表明,所提出的移位窗口方法具有比滑动窗口方法低得多的延迟,但在建模能力上是相似的(见表5和表6)。移位窗口方法也被证明对所有mlp架构[56]有益。

image-20240520102805581

相关工作

CNN及其变体CNN在整个计算机视觉中都是标准的网络模型。虽然CNN已经存在了几十年[36],但直到AlexNet[36]的引入,CNN才起飞并成为主流。

为了进一步推动计算机视觉领域的深度学习浪潮,已经提出了进化神经架构,例如VGG[48]、GoogleNet[53]、ResNet[27]、DenseNet[31]、HRNet[59]和EfficientNet[54]。除了这些架构上的进步,在改进单个卷积层方面也做了很多工作,比如深度卷积[64]和可变形卷积[17,75]。虽然CNN及其变体仍然是计算机视觉应用的主要骨干架构,但我们强调了类似变形金刚的架构在视觉和语言之间统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了很强的表现,我们希望它将有助于建模的转变。

1)传统的MSA

同样受到自注意层和Trans-former结构在自然语言处理领域成功的启发,一些作品使用自注意层来取代流行的ResNet中的部分或全部空间卷积层[30,46,72]。在这些工作中,自关注是在每个像素的局部窗口内计算的,以加速优化[30],并且它们比对应的ResNet架构实现了更好的精度/FLOPs权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络[30]。

相邻特征融合。我们不使用滑动窗口,而是建议在连续层之间移动窗口,这允许在一般硬件中更有效地实现。(只需要循环,不需要填充和保存中间数据,也避免了复杂的复原过程)

另一条工作路线是用自关注层或变压器来增强标准CNN体系结构。自注意层可以通过提供编码远程依赖关系或异构交互的能力来补充主干网络[61,7,3,65,21,68,51]或头部网络[29,24]。最近,Transformer中的编码器-解码器设计已被应用于对象检测和实例分割任务[8,13,76,52]。我们的工作探索了变压器的基本视觉特征提取,是对这些工作的补充。

与我们的工作最相关的是vision Transformer (ViT)[19]及其后续研究[57,66,15,25,60]。ViT的开创性工作直接将Transformer架构应用于无重叠的中等大小图像块上进行图像分类。与卷积网络相比,它在图像分类上实现了令人印象深刻的速度-精度权衡。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT[57]引入了几种训练策略,使ViT在使用较小的ImageNet-1K数据集时也能有效。ViT在图像分类的结果令人鼓舞,但由于其低分辨率特征图和复杂度随图像大小的二次增长,其架构不适合用作密集视觉任务或输入图像分辨率较高时的通用骨干网络。有一些研究通过直接上采样或反卷积将ViT模型应用于对象检测和语义分割的密集视觉任务,但性能相对较低[2,73]。

另一个任务,探索了在transformer上构建多分辨率特征映射的类似思路。它的复杂性仍然是图像大小的二次元,而我们的是线性的,也在局部运行,这已被证明有利于建模视觉信号中的高相关性[32,22,37]。

方法

image-20240520105037715

为了产生分层表示,随着网络的深入,通过补丁合并层来减少令牌的数量。第一个补丁合并层将每组2个×2相邻补丁的特征进行拼接,并在4c维拼接特征上应用线性层。这将令牌的数量减少2×2 = 4的倍数(分辨率的2倍downsampling),输出维数设置为2C。之后应用Swin Transformer块进行特征变换,分辨率保持在H/8 × W/8 。这第一个补丁合并和特征变换的块被记为“Stage 2”.并重复两次,得到stage3和stage4.

Swin Transformer 模块 Swin Transformer 是通过将Transformer模块中的标准多头自关注(MSA)模块替换为基于移位窗口的模块(见3.2节)而构建的,其他层保持不变。如图3(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块组成,其次是一个两层MLP,中间是GELU非线性。在每个MSA模块和MLP模块之前应用一个LayerNorm (LN)层,在每个模块之后应用一个残余连接。

基于移位窗口的自注意

**概述:**通过窗口MSA(W-MSA)每次计算M x M个patches,将时间复杂度缩减为线性。为了提高相邻模块间的关系连接,我们使用移动窗口MSA(SW-MSA)建立关系。

image-20240520110950544

1、复杂度估计:

image-20240520111043766
h、w是原始图像长、宽patches数量

前者与补丁数hw是二次的,而后者在M固定时(默认设置为7)是线性的。对于一个大的hw,全局自关注计算通常是负担不起的,而基于窗口的自关注是可扩展的。

如图2所示,第一个模块使用从左上角像素开始的常规窗口划分策略,将8 ×8特征映射均匀地划分为2个大小为4 ×4 (M = 4)的×2窗口。然后,下一个模块采用从前一层偏移的窗口配置,通过从规则划分的窗口中移动(M/2, M/2)个像素来替换窗口。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

STL (swin transformer layer)成对出现因为需要一层做W-MSA,一层做SW-MSA。

image-20240520111426068

2、计算过程如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、填充方案:

1、使用0填充+mask+复原。设计中间结果保存,增加了内存和时间开销。(旧)

2、使用循环+mask+逆循环移位。硬件效率高(数据都在一个地方,搬运也方便)(ours)

4、相对位置偏差B:

image-20240520112303458

image-20240520112440111

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20240520112507445

与没有此偏差项或使用绝对位置嵌入的对应项相比,有了显著的改进。

5、架构变体:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

实验

image-20240520112848351

image-20240520112902270

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络结构消融

位置嵌入与偏置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

填充方法:

image-20240520113207673

滑动窗口与移位窗口:

image-20240520113251312

QA

上采样与反卷积?

Transformer因其对数据中的远程依赖关系建模的关注而引
人注目?

填充后使用mask,为什么计算量大,直接填充0不行吗??

填充完之后,复原原矩阵需要时间,将原始数据补充。应该是写入和存储消耗大。。。计算量并不大

基于窗口的自关注模块缺乏跨窗口的连接,限制了其建模能力。为了引入跨窗口连接,同时保持非重叠窗口的高效计算,我们提出了一种移位窗口分区方法,该方法在连续的Swin Transformer块中交替使用两种分区配置。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Swin Transformer是一种新型的层次化视觉Transformer模型,它在Vision Transformer(ViT)的基础上进行了改进,并在多个视觉任务上取得了更好的效果。本文将对Swin Transformer论文进行精读,详细介绍其创新点和实验结果。 ## 创新点 Swin Transformer主要有以下三个创新点: ### 1. 层次化注意力 Swin Transformer引入了层次化注意力机制,将图像分成多个块进行处理,每个块内部使用全局自注意力机制,不同块之间使用局部注意力机制。这种层次化的注意力机制可以减少全局自注意力机制的计算量,同时保持局部信息的传递。 ### 2. Shifted Window 传统的ViT使用固定大小的图像块进行处理,而Swin Transformer使用了一种称为Shifted Window的方法,将每个块按照一定的步长进行平移,使得每个块都包含了周边的信息。这种方法可以更好地捕捉到图像中的全局信息。 ### 3. Swin Transformer Block Swin Transformer引入了一个新的Swin Transformer Block,它是由多个Shifted Window构成的,每个Shifted Window内部使用了类似于ViT的注意力机制。这种新的Transformer Block可以更好地捕捉到局部和全局的信息。 ## 实验结果 Swin Transformer在多个视觉任务上都取得了很好的效果,比如ImageNet分类、COCO目标检测、Cityscapes语义分割等。在ImageNet上,Swin Transformer比ViT-Large模型具有更好的性能,同时参数数量更少,计算效率更高。在COCO目标检测任务中,Swin Transformer在使用相同的backbone的情况下,比ViT-Large模型具有更高的AP值。在Cityscapes语义分割任务中,Swin Transformer在使用相同的backbone的情况下,比DeiT-base模型具有更高的mIoU值。 ## 总结 Swin Transformer是一种新的层次化视觉Transformer模型,它引入了层次化注意力机制、Shifted Window和Swin Transformer Block等创新点,并在多个视觉任务上取得了很好的效果。这些创新点可以更好地捕捉到图像中的局部和全局信息,同时减少了计算量,提高了计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见的罗辑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值