backbone之CSwin Transformer论文阅读

CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows

论文地址:CSwin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows
代码:GitHub—CSwin Transformer

一、背景和挑战

基于transformer的架构通过利用多头自注意力机制,在建模远程依赖方面表现出了很强的能力,这对于处理下游任务中的高分辨率输入尤其有用,在各种视觉任务上都取得了不错的效果。但是,transformer也有某些缺陷。比如transformer中在进行计算时global self-attention的计算成本非常高,典型的方法是将每个token的注意区域从global self-attention限制为local self-attention,但是local self-attention又会限制token之间的信息交互(交互领域)。针对后面这个问题swin transformer提出了shifted window操作,但是这种方法随着深度的增加,感受野的大小提升的很慢,并且需要堆叠更多的 blocks 来实现全局的self-attention。然而,下游任务往往都需要足够大的感受野,所以在获得大的感受野的同时保证计算量较低是很重要的。本文采用的方法是随着stage的加深以及条纹宽度变宽来迅速扩大感受野。

二、方法

1、针对self-attention的计算的问题提出十字窗口注意力的方法:
①在水平和垂直条纹中执行自注意力计算,每个条纹通过将输入分割为等宽条纹sw获得。sw是十字形窗口的一个重要参数,因为它允许模型实现强大的建模能力,同时限制计算成本。更大的sw鼓励远程元素之间建立更强的连接(长距离依赖)。论文中根据网络的深度来调整条纹宽度:浅层的宽度较小,深层的宽度较大。
②多头注意力分为2组,并行做横纵向的自注意力(图中k是head的个数,一般都是偶数;输入图像的通道C平均分给k个head)。
下图中e也是一种高效自注意力机制,它是轴向self-attention,它沿水平或垂直轴顺序应用局部窗口以实现全局注意。然而,它的顺序机制和有限的窗口大小限制了它在表征学习中的性能。
backbone之CSwin Transformer论文阅读_第1张图片
③计算复杂度:
每个条纹的宽度都是sw,通道为C。且映射矩阵 W q 、 W k 、 W v ∈ R C × C / k 。 W^{q}、W^{k}、W^{v}∈R^{C×C/k}。 WqWkWvRC×C/k(输入图像的通道C平均分给k个head)。将输入图像的H均分为若干个宽度为sw的水平条纹,将输入图像的W均分为若干个宽度为sw的垂直条纹。
backbone之CSwin Transformer论文阅读_第2张图片
水平条纹自注意力计算如上,竖直自注意力同理,且都是一个结果。最后在拼接所有head之后要通过映射矩阵 W o ∈ R C × C W^{o}∈R^{C×C} WoRC×C映射到最终输出维度C上,这个计算复杂度为HWC²。所以最终总的计算复杂度为:
在这里插入图片描述
计算方法:
backbone之CSwin Transformer论文阅读_第3张图片backbone之CSwin Transformer论文阅读_第4张图片
2、总体结构:①convolutional token embedding;②在相邻的stage间使用卷积。
分层设计的主要优点是利用多尺度特征,通过逐步减少token数量来降低计算复杂度。能快速提升感受野。为了输入图像大小为224能被sw整除,sw在4个块中分别设置成了[1,2,7,7],因此可见浅层的宽度较小,深层的宽度较大。逐渐由局部感受野变为全局感受野。Swin transformer与CSwin transformer结构对比如下:
backbone之CSwin Transformer论文阅读_第5张图片
图像首先经过一组步长为4大小为7×7的卷积,得到的Feature Map的尺寸为 H/4 × W/4 × C,与Swin Transfoemer中直接拆分成不重叠的patch不同。之后CSWin Transformer也分成4个Stage,Stage之间通过步长为2大小为3×3的卷积来进行降采样,这一点和VGG等CNN网络结构非常像。
backbone之CSwin Transformer论文阅读_第6张图片
3、增强下游任务在各种输入分辨率下的局部位置信息:
APE(absolute positional encoding)和CPE(conditional positional encoding)直接将位置信息添加到self-attention的input token,然后送入transformer块中进行self-attention计算。为了引入局部归纳偏置,LePE被作为一个并行模块添加到自我注意分支。CSWin Transformer采用的也是一种relative positional encoding(RPE),不过不同于常规RPE将位置信息加在attention的计算上,这里考虑将位置信息直接施加在V上,然后通过残差的方式将添加了位置编码的V和通过自注意力加权的V加到一起。注意:APE和CPE是直接作用在输入上,是用于某个特定尺寸的,因此不适合不同分辨率的图像;RPE则可以生成任意输入分辨率的位置编码。
backbone之CSwin Transformer论文阅读_第7张图片但是考虑到的计算量较大,这里用一个depthwise convolution来替换。因此LePE可以友好地应用于以任意输入分辨率作为输入的下游任务(比如:检测和分割)。backbone之CSwin Transformer论文阅读_第8张图片

三、实验结果

论文中比较了CSwin Transformer与其他模型在相同FLOPs下的对比以及CSwin Transformer的几种变体,结果可见原论文。
imagenet-21K预训练后的imagenet-1k结果:
backbone之CSwin Transformer论文阅读_第9张图片
Object Detection-COCO:
backbone之CSwin Transformer论文阅读_第10张图片Semantic Segmentation-ADE20K:
backbone之CSwin Transformer论文阅读_第11张图片

四、消融实验

针对以下几个方法或参数来进行试验:
1、增大sw→固定sw大小;
2、并行self-attention→顺序self-attention;
3、架构的“深窄”→“浅宽”;
4、Convolutional Token Embedding→non-overlapped token embedding;
5、十字窗口与滑动窗口、移动窗口、空间可分离和顺序轴向的self-attention比较;
6、Positional Encoding Comparison.(No PE、APE、CPE、LePE与CPE的变体对比实验)
具体对比实验结果可见原论文,就不再一一赘述了。

五、相关文献

1、Swin transformer: Hierarchical vision transformer using shifted windows.
2、Cvt: Introducing convolutions to vision transformers.
3、Early Convolutions Help Transformers See Better.

你可能感兴趣的:(论文阅读,深度学习,计算机视觉)