论文阅读笔记 | 分类网络——CSWin Transformer


如有错误,恳请指出。


paper:CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows
code:https://github.com/microsoft/CSWin-Transformer
在这里插入图片描述
摘要:

Transformer设计中一个具有挑战性的问题是,全局自注意力的计算成本非常高,而局部自注意力通常会限制每个token的交互域。为了解决这个问题,作者提出了Cross-Shaped Window的自注意机制,可以并行计算十字形窗口的竖直与水平中的自注意力,其中通过将输入特征分割成等宽的条带来得到每个条带。

其中条带的宽度必然会对视野产生影响,为此作者对条带宽度的影响进行了详细的数学分析,并根据Transformer网络的不同层改变条带宽度,从而在限制计算成本的同时实现了较强的建模能力。

此外,作者还引入了局部增强位置编码(local -enhanced Positional Encoding, LePE),它比现有的编码方案能更好地处理局部位置信息,而且其能适应不同大小输入特征,支持任意输入解决方案,因此对下游任务特别有效和友好。

结合这些设计(Cross-Shaped Window 和 LePE)和层次结构,CSWin Transformer在常见视觉任务上展示了具有竞争力的性能。实现的效果:

  • 85.4%Top-1 accuracy on ImageNet-1K without extra data
  • 53.9box AP and 46.4 mask AP on the COCO detection task
  • 51.7mIOU on the ADE20K semantic segmentation task
  • 87.5%Top1 accuracy on ImageNet-1K with pretraining on ImageNet-21K
  • segmentation performance on ADE20K with 55.7mIoU with pretrain(SOTA)

1. Introduction


尽管Transformer-based的架构在各方面取得了成功,但是全局注意力机制的Transformer体系结构在计算效率方面是低效的。为了提高效率,一种典型的方法是将每个token的注意区域从全局注意限制为局部/窗口(local/windowed)注意。而为了让不同的窗口进行联系,研究人员进一步提出了halo和shift操作,通过附近的窗口交换信息。但是,这样的交互信息使得感受野的扩大比较缓慢,需要堆叠大量的块来实现全局的自注意力,而足够多的全局信息对性能是比较重要的。因此,在保持较低的计算成本的同时,有效地实现大接收域是非常重要的。

为此,作者提出了Cross-Shaped Window(CSWin)自注意力,其结构如下所示,并与现有的自注意机制进行了比较:
在这里插入图片描述
利用CSWin自注意力机制,实现并行地在水平和垂直条带中进行自注意力计算,每个条带都是通过将输入特征分割成等宽的条带得到的。条带宽度是十字形窗口的一个重要参数,它可以在限制计算成本的同时实现较强的建模能力。具体上,作者根据网络的深度调整条带宽度:浅层的宽度较小,深层的宽度较大。较大的条带宽度可以增强长程元素之间的连接,以较小的计算成本增加获得更好的网络容量。

值得注意的是,采用CSWin self-attention机制,水平条宽和垂直条宽的自注意是并行计算的。作者将多个头部分成平行的组,并对不同组进行不同的自注意操作(水平与竖直)。这种并行策略没有引入额外的计算成本,同时扩大了每个Transformer block内计算自注意的区域。

在CSWin self-attention的基础上,采用分层设计的方法,提出了一种新的通用视觉任务的Vit架构,称为:CSWin Transformer。为了进一步增强性能,作者还引入了一种有效的位置编码,局部增强位置编码(Locally-enhanced Positional Encoding,LePE),其直接对注意力结果进行操作,而不是对注意力计算。LePE使CSWin Transformer对下游任务更加有效和友好。

2. Related Work


2.1 Efficient Self-attentions

如图1所示,现有的窗口交互的方法有shifted/haloed version(图c),添加了跨不同局部窗口的交互。还有Axial Self-Attention(图e),它将局部窗口沿水平轴或垂直轴依次应用,以实现全局关注。但是,它的顺序机制和有限的窗口大小限制了它的表示学习性能。

ps:Axial Self-Attention与Cross-Shaped Window比较相像的,但不同的是本文用了一半的head捕获横向注意力,另一半的head捕获纵向注意力,但是Axial Self-Attention的结构是先捕获横向注意力、再捕获纵向注意力,后面的操作是基于前面的操作,所以不能够并行计算,这就导致模型的计算时间会变长。

2.2 Positional Encoding

由于self-attention是置换不变的,并且忽略了token位置信息,因此位置编码在transformer中被广泛使用,以将这些位置信息添加回来。典型的位置编码机制包括绝对位置编码(APE)、相对位置编码(RPE)和条件位置编码(CPE)。

APE和RPE通常被定义为一系列频率或可学习参数的正弦函数,它们是为特定的输入尺寸而设计的,对变化的输入分辨率不友好。

CPE以该特征作为输入,可以生成任意输入分辨率的位置编码。然后将生成的位置编码添加到输入特征上(也就是与输入特征进行一个简单的相加操作),然后将其输入到self-attention block中。

LePE与CPE类似,但建议将位置编码作为一个并行模块添加到自注意操作中,并对每个Transformer block中的投影值进行操作。该设计将位置编码与自注意计算解耦,可以增强局部归纳偏差(local inductive bias)。

3. Method


3.1 Overall Architecture

CSWin Transformer的总体架构如图2所示:
在这里插入图片描述
对于大小为HxWx3的RGB图像,首先利用重叠卷积获取 H 4 × W 4 \frac{H}{4} \times \frac{W}{4} 4H×4W个token(具体通过卷积核大小为7,步长为4的卷积操作获得,其中的重叠卷积指的就是卷积核大小与步长不同而已),其中每个token的信息维度为C。为了产生一个层次表示,整个网络由四个阶段组成。

两个相邻的阶段之间使用卷积层(3×3, stride 2)操作,以减少token数量并使通道维数加倍。因此构建的第 i i i层特征图具有 H 2 i + 1 × W 2 i + 1 \frac{H}{2^{i+1}} \times \frac{W}{2^{i+1}} 2i+1H×2i+1W个token,这类似于传统的CNN主干(所以这个输出既可以看成是token的集合,也可以看成是特征图)。每个阶段由 N i N_{i} Ni个连续的CSWin Transformer Blocks组成,这不会改变token的数量。

CSWin Transformer Block总体上与multi-head self-attention Transformer block 具有相似的拓扑结构,但有两个区别:
1)Cross-Shaped Window取代了自注意机制
2)为了引入局部感应偏置,将LePE作为一个并联模块加入到自注意分支中

3.2 Cross-Shaped Window Self-Attention

根据MSA机制,输入特征的每个token会产生K个head,然后每个head在水平或垂直条带内进行局部自注意。
在这里插入图片描述

以横条带自注意力为例,将X均匀分割成不重叠的横条纹 [ X 1 , . . . , X M ] [X^{1},...,X^{M}] [X1,...,XM],每个条带包含着sw x W个token,其中sw是条带的宽度,可以调整以平衡学习能力和计算复杂度。

其中数学表达为:
在这里插入图片描述
对于竖直条带自注意力进行类似的操作。

假设自然图像没有方向偏差,作者将k个head平均分成两个平行组,第一组的head表现出横条带的自注意力,第二组的head表现出竖条带的自注意力。最后,这两个并行组的输出将被连接在一起(也就是concat操作)。
在这里插入图片描述
通过多头分组,一个Transformer块中每个token的注意区域被扩大。

其中, CSWin self-attention的计算复杂度为:
Ω ( C S W i n _ A t t e n t i o n ) = H W C ∗ ( 4 C + s w ∗ H + s w ∗ W ) Ω(CSWin\_Attention)=HWC*(4C+sw*H+sw*W) (CSWin_Attention)=HWC(4C+swH+swW)

3.3 Locally-Enhanced Positional Encoding

SA具有排列不变性(不同排列的输出结果是一样的),为了弥补SA的这个缺陷,通常会在Transformer上加入位置编码。如图3中展示了一些典型的位置编码机制:
在这里插入图片描述
APE/CPE(上图左)是在进行SA之前就加入了位置信息,RPE(上图中)是在计算权重矩阵的过程中加入相对位置信息。作者采用了一种更加直接的方式进行了位置信息编码:直接将位置信息加入到Value中,然后将结果加到SA的结果中。

作者为了减少计算量,只捕获了局部的注意力,所以用了一个Depth-wise Conv对value进行卷积,然后将结果加入到了SA的结果中。

由公式:
A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T / d ) V + E V Attention(Q, K, V) = SoftMax(QK^{T}/\sqrt{d})V + EV Attention(Q,K,V)=SoftMax(QKT/d )V+EV
改变为:
A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T / d ) V + D W C o n v ( V ) Attention(Q, K, V) = SoftMax(QK^{T}/\sqrt{d})V + DWConv(V) Attention(Q,K,V)=SoftMax(QKT/d )V+DWConv(V)

3.4 CSWin Transformer Block

采用上诉的Cross-Shaped Window自注意力与Locally-Enhanced位置编码方式,CSWin Transformer block可以定义为:
在这里插入图片描述
其中 X l X^{l} Xl表示第l个Transformer块的输出,如果在每个阶段的开始存在,则表示前一个卷积层。

参数设置如下:
在这里插入图片描述

4. Result


  • 消融实验:
    在这里插入图片描述
    证实了横竖并行自注意操作与深层结构的效果

  • LePE与CSWin的效果:
    在这里插入图片描述

  • ImageNet-1K分类中不同模型的比较:
    在这里插入图片描述

  • ImageNet-1K通过对ImageNet-21K数据集进行预训练得到微调结果:
    在这里插入图片描述
    可以看见,在相同参数量下,CSWin Transformer的效果要比Vit与Swin Transformer的效果要好

  • 基于Mask R-CNN框架的COCO val2017目标检测和实例分割性能:
    在这里插入图片描述

  • 语义分割性能测试:
    在这里插入图片描述

总结:

作者提出了一种新的Vision Transformer架构CSWin Transformer,其核心是CSWin Self-Attention,它通过将多个head分成两个横竖两方向上的并行组,在水平和垂直条带上实现自注意。这样的设计可以有效地扩大一个Transformer block内每个token的关注范围。此外,还引入了LePE模块,直接将位置信息加入到Value中。

ps:本质上作者在进行下采样和局部增强的位置编码时,都用的是卷积。

此外,极市平台提出了一个想法,这里将head分为了两组,那分为更多组,每个组还是关注不同的区域,那样感受野就会更大,对模型的性能是否还会有进一步的提升呢?

Guess you like

Origin blog.csdn.net/weixin_44751294/article/details/120978288