Swin Transformer(论文阅读): Hierarchical Vision Transformer using Shifted windows

Swin Transformer: Hierarchical Vision Transformer using Shifted windows

研究问题

文提出swin transformer是一种新的vision transformer,它可以作为计算机视觉的通用骨干。将 transformer从语言应用到视觉的挑战来自于两个领域之间的差异,比如视觉实体规模的巨大变化,以及与文本中的单词相比图像中像素的高分辨率。为了解决这些差异,我们提出了由移位窗口计算的分层transformer。移位窗口通过限制不重叠局部窗口的自注意力计算,且允许跨窗口连接,从而提高了效率。这个分层架构可以很灵活的在不同规模上建模,并且相对图像大小有线性计算复杂度。Swin Transform的特性使它和大量的视觉任务都兼容,包括图像分类和密集预测任务,比如物体检测和语义分割。其性能在各种任务上表现的都不错,展示了基于transformer的模型作为视觉骨干的潜力。分层设计和移位窗口的方法也都被证明了对所有的mlp架构都是有益的。

摘要

本文提出Swin Transformer。将Transformer从语言应用到视觉的巨大挑战来自于两个区域之间的差异。(有两方面差异,一方面来自于CV领域中各物体规模差异大,举例:一张图片中一辆公交车的大小和一个人的大小差异很大。另一方面是CV领域中计算复杂度和图片中分辨率呈二次方关系,限制了图片的分辨率)
为了解决上述问题,本文提出的Swin Transformer有两方面的改善,分别为分层结构和移位窗口。其中移位窗口将自注意力计算限制在不重叠的局部窗口内,同时允许跨窗口连接。分层结构的好处为建模更加自由且使得计算复杂度与图像呈线性关系,便于处理高分辨率的视觉问题。

一.Introduction

图1:ViT就是将图片打成多个patch,且ViT中patch_size为16*16,所以图片中16×为16倍的下采样率。自始至终token和patch所代表的尺寸大小都是固定的,所以每一层的Transformer block看到的token都是16倍的下采样率。ViT通过全局的自注意力操作实现全局的建模,但是在多尺寸特征上的把握会弱很多。
下游任务对于多尺寸特征的把握很敏感,通常使用FPN.

第一段:CNN在视觉领域长期处于主导地位,从AlexNet及其在ImageNet图像分类上的革命性表现开始,CNN通过更大的规模、更广泛的连接和更复杂的卷积形式发展地更好。随着CNN作为视觉任务中的骨干网络,CNN架构上的改善导致了性能的提升,并广泛提升了整个领域。
第二段:NLP领域中广泛使用Transformer,它是为序列建模和转导任务而设计的。Transformer在NLP领域中的巨大成功促使向CV领域的适应转换,且已经表现出较好的效果。
第三段:本文探索如何将提升Transformer的适用性,将其成为CV领域的骨干网络,就像在NLP领域一样。本文认为Transformer在两个领域中性能有巨大差异的原因在于两种模态之间的区别。其中一个差异涉及规模,与NLP领域中作为基本处理元素的单词不同,CV领域中元素在规模上具有很大的变动性,且现有的基于Transformer的架构中令牌都是固定规模的,这一点不适合CV领域。另一种差异来自于图像比文本单词的像素分辨率高很多,当前很多视觉任务中,比如语义分割,要求像素级别上的密集预测,对于高分辨率的图像很难处理,因为自注意力机制的复杂度是图片的二次方的关系。


为解决上述问题,提出Swin Transformer,它构建分层特征映射,且与图像大小具有线性的计算复杂度。一方面,Swin Transformer使用合并深层次的图像patches来构建分层特征映射。另一方面,由于仅在非重叠局部窗口中进行自注意力计算,且每个窗口中patches的数量是固定的,所以和输入图像有线性相关的计算复杂度。


第四段:介绍移动窗口方法。移动窗口连接前一层的窗口,显著增强建模能力。该方法在实际延迟方面也有显著提升,局部窗口内所有的query patches共享一个key,有助于硬件的内存访问。
移动窗口:将整张特征图分成不重叠的窗口,减少了序列长度,也就降低了计算复杂度。具体操作就是在当前的窗口处向右下方移动2个patch,在移动后产生新的特征图中再次分成窗口。优点为窗口之间可以进行互动,shift之后新窗口内的patch来自原来旧窗口,与原来旧窗口中patch有交互,现在可以和新窗口中的patch进行交互,所以实现了窗口与窗口之间的连接。最后通过patch merging进行合并,到最后几层时,每个patch的感受野(携带与其他patch交互的信息)已经很大了,此时局部窗口中自注意力已经相当于全局注意力。                                                

二.Related work

CNN and variants:
CNN卷积神经网络在视觉领域存在之久,AlexNet出现后,卷积神经网络获得突飞猛进的发展,后也有更深层次的网络,同时也出现对单个卷积层进行改进的方法。尽管CNN仍处于主导地位,但Transformer在统一建模方法有强大潜力。
Self-attention based backbone architectures(基于自注意力的骨干架构):
    受到自注意力机制和Transformer在NLP领域的启发,一些网络将自注意力层取代部分或者全部卷积层,在局部窗口中进行自注意力计算以加快优化,但是滑动窗口增加了延迟。
Self-attention/Transformers to complement CNNs自注意力机制/Transformer对CNN进行补充:
自注意力层可以通过提供编码远程依赖或异构交互的能力来补充主干网络或头部网络。
Transformer based vision backbones(基于transformer的视觉主干):
与当前最相关的是ViT及其后续工作,ViT就是将Transformer架构直接应用到图像分类中大小适中且不重叠的图像patches上,相比CNN来说ViT取得了效率与精度令人震惊的均衡。尽管ViT需要大规模的数据集才能实现不错的效果,DeiT引入了几种训练策略使得较小的数据集也有不错的效果。尽管在视觉领域取得了不错的效果,由于其低分辨率特征映射和复杂度与图片呈二次方,其架构不适合作为密集视觉任务和高分辨率输入图像的通用骨干。

三.Method

3.1. Overall Architecture

第一段:Swin Transformer架构使用patches分割模块将输入的RGB图像分割为若干不重叠的patches。  每个patch被视为一个令牌,特征为原始像素RGB值的串联。本文中patch大小为4*4,所以每个patch的特征维数为4*4*3=48.在此原始值特征上应用线性投影层,将其投影到任意维度(符号为C)。
第二段:对token使用具有改进的自注意力计算的Transformer块,并维护令牌数目
(前两段为stage1:线性投影和使用更新的transformer块)
第三段:为了产生分层表示,随着网络的深入,通过图像块合并层来减少token的数目。第一个图像块合并层将2*2相邻的的patch进行拼接,并在拼接后的4C维特征上应用线性层。token的数目会减少2*2=4倍,并将输出维度调整为2C,之后进行特征变换使得分辨率保持在h/8 * w/8。
(第三段为stage2:第一个图像块合并层和特征转换****重复有stage3,stage4)
将这个步骤重复两次,分别作为stage3和stage4。输出分辨率分别为16/h * 16/w和32/h * 32/w。  这些阶段共同产生一个分层表示。
Swin Transformer Block:
Swin Transformer 是将原来Transformer中标准的多头自注意力模块(MSA)替换为基于移动窗口的模块,而其他层保持不变。Swin Transformer是由一个基于移位的MSA模块组成,其次是一个两层MLP,还有GELU非线性层。在每个MSA模块和每个MLP模块之前应用一个LN (LayerNorm)层,在每个模块之后应用一个残差连接。

3.2. Shifted Window based Self-Attention(基于移动窗口的自注意力)

标准的Transformer架构及其在图像分类的应用都进行全局的自注意力,其中计算token和其他所有tokens的关系。全局计算导致token数目二次方的计算,所以不适合需要密集预测或者高分辨率的视觉问题。

Self-attention in non-overlappedd windows

为了高效建模,采取在局部窗口进行自注意力计算,所有窗口以不重叠且均匀的方式分割图像。对比全局窗口和局部窗口内进行自注意力计算,前者计算复杂度是patch数目的二次方,后者是线性关系。

Shifted window partitioning inn successive blocks

基于窗口的自注意力计算缺乏窗口之间连接,为了加强窗口之间的连接且保持不重叠窗口的高效,引入了移动窗口分区方法。移动窗口分区引入了前一层相邻非重叠窗口之间的关系。
移动窗口对Transformer block的安排有明确的要求,先做一次基于窗口的多头自注意力,再做一次基于移位窗口的多头自注意力,从而实现窗口之间的互相通信。详细的说,输入首先进入第一个Transformer block,做一次LN后计算基于窗口的多头自注意力,然后再一次LN后进入MLP,然后移位窗口进入第二个相同的block,两个block加起来成为Swin Transformer中一个基本的计算单元。

Efficient batchatch computation for shifted configuration效率

移动窗口引入了更多的窗口,同时导致窗口的大小小于M*M。最简单的解决方法就是将较小的窗口填充到M*M,同时在计算注意力时屏蔽掉填充的数据。在常规窗口分区窗口数量较少时计算比较可观。
本文提出一种更高效的批处理方法,就是向左上方(移位后多余部分)循环移位。转换后,批处理窗口可能由几个特征映射中不相邻的子窗口组成,因此采用屏蔽机制将子注意力计算限制在子窗口内。通过循环移位,批处理窗口的数量个常规窗口分区的数目是一致,因此也是高效的。

Relative positionon bias

3.3. Architecture Variants

架构变体

四.Experiments

4.1. Image Classification on ImageNet-1K
4.2. Object Detection on COCO
4.3. Semantic Segmentation on ADE20K
4.4. Ablation Study
Shifted windows :
Relative position bias:
Different self-attention methods:

五.Conclusion

本文提出了Swin Transformer,它是一种新的vision transformer。它提出了分层的特征映射,且对输入图像大小具有线性计算复杂度。Swin transform也在coco目标检测和语义分割上也实现了当前最好的结果。我们希望Sin Transformer在视觉问题中强大的效果,将会鼓励视觉和语言信号的统一建模。

创新点

1.
2.为了处理密集预测性任务,提出在局部窗口内计算自注意力和移位窗口(Shifted windows)
3.引入Patch Merging,使得能够像CNN一样分成多个阶段stage,从而实现分层架构。

知识点补充

1.“58.7 box AP”指的是在某个特定的数据集上使用某种特定的方法或模型得到的平均精度为58.7。其中box指的是目标检测任务中的边界框,所以box AP特指目标检测任务上的平均精度。
2.“53.5 mIoU”指的是在某个特定的数据集上使用某中特定的方法或模型得到的平均交并比。交并比IoU用来衡量预测分割和真实分割之间相似度,计算的是预测分割和真实分割交集和并集的比值。mIoU表示所有类别的平均交并比。53.5 mIoU表示预测分割和真实分割在平均意义上有53.5的重叠。
3.编码远程依赖:将代码工具类打包成库,并将库放到一个远程仓库,当需要这些库时,可以通过添加引用代码的方式从远程仓库下载所需的库。
4.视觉领域中图像块patch和token的关系:patch是图像中的小块或区域,为了便于计算,不会直接处理整张图像,而是打散成若干patch进行处理。token是图像的表示单位,不仅仅是一个区域,还包含了丰富的信息。token是通过某种编码方式(patch embedding)从patch中生成的,每个token都是一个向量,包含颜色纹理等信息。
5.下采样率:通过减少图像的分辨率或尺寸来降低数据量。下采样率为原始图像和下采样之后图像的比例关系。通常用于图像压缩、特征提取和图像处理等多个任务中。通过下采样,可以减少数据量,从而提高计算速率。但是下采样的同时可能会丢失一些细节信息,因此需要权衡数据量减少和信息保留之间的关系。
6.FPN:是视觉中一种网络结构,用于解决物体检测中多尺度问题,。该网络结构通过构造一系列不同尺度的特征图,将低层特征和高层特征进行融合,提高算法对不同尺度的目标的鲁棒性。

核心结论

1.Swin Transformer有两个重点突破,分别为分层特征映射和线性相关的复杂度。
2.对比Swin Transformer与ViT:
同:

(1)都是基于Transformer的模型,都是用自注意力机制和多头自注意力机制处理数据(2)都将图片打成patch
异:

(1)ViT使用全局自注意力计算,而另一在局部窗口内计算自注意力(2)ViT全局计算导致计算复杂度与图像大小成二次关系,而另一在局部窗口内计算自注意力,计算复杂度是线性关系(3)Swin Transformer相对网络层数较多,能捕捉不同尺寸的特征

  • 36
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值