Cswin transformer学习

本文章仅限于自己自学,如果有人也将GAN网络与transformer进行结合做研究的话可以随时给我发私信,我们一起探讨共同进步。

文章可以说是在swin transformer的基础上进一步对网络进行了优化,在最近看的文章当中发现对于transformer的更新主要是在位置编码上面以及对于self attention上面。

创新点1,cross-shaped window attention(交叉形状窗口注意力机制)

        本文的self attention介绍了许多先验的self attention中的window,如下图所示:

full attention的网络结构相当于是数据特征传输过程中对全局信息进行提取,相关文章地址为:

[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arxiv.org)

shifted local的网络为了避免代码在对全局信息计算量大,新提出的可移动式窗口,相关文献地址为:

[2103.14030] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows (arxiv.org)

sequential Axial的网络结构相对新颖,相关文献地址为:[1912.12180] Axial Attention in Multidimensional Transformers (arxiv.org)

        在swin transformer中transformer block中的window采用的是W-MSA以及SW-MSA,W-MSA就是相当于将每个窗口都做了非重叠式的等块分割,每个token大小一致,而SW-MSA就是上述所说的shifted local图中所表示的那样。因为swin transformer认为非重叠的切割特征图,切割之后的token信息不相交互,会造成图片边缘处信息的缺失。因此使用SW-MSA将各个图像联系起来,补齐图像与图像之间的信息。

       虽然说原先的各种注意力机制提出的想法都十分的好,但是在针对各种任务的时候,对于计算成本的消耗是十分的巨大的,为了缓解这种计算成本所带来的消耗, 本文是基于criss-cross基础上对swin transformer的改进,将原有的非重叠和移动窗口改为了交叉型窗口。学名为横向纵向线

        横向纵向条纹带宽。根据网络的深度调整条纹带宽的长度:浅层的宽度较小,深层的宽度较大。较大的条纹宽度可以增强相对较远距离元素之间的联系,以较小的成本获得更好的网络容量。并且本文在使用该模式窗口是采用并行使用,横向条带宽与纵向条带宽同时对图像进行处理,最后concat。如下图所示:

        

        根据 多头自注意力机制,输入特征X∈R^{(H*W)*C}投影到K个head中,然后每个head在水平条纹或者垂直条纹内进行局部自注意力处理。

        根据文中所给的前提,文章利用横条纹作为例子进行叙述:x被均匀的分成了等宽非重叠的横条纹[x^{1},x^{2},.......x^{M}],每个条纹都包含着sw * w个token,这里sw表示为条纹宽度,w表示为宽,用来调整平衡学习能力和计算复杂度。而根据图片所给的信息,红色的点表示为query值,绿色覆盖面表示为key值,在形式上,投影的k,q,v都包含d_{k}个维数,公式为:

        其中X^{i}R^{(sw*W)*C}在实验中假设自然图像没有所谓的位置偏差,则在实验过程中,会将k个head分为两等分,前半部分表示为横条纹带宽的自注意力,后半部分表示为纵条纹带宽的自注意力,最后将两个部分concat,公式入下图所示:

        cross-shaped window attention在使用过程中,文章解释道该操作可以增大感受野,可以理解为本身子啊对图像进行卷积操作过程中就是重叠式卷积,一点一点挪动,设置的步长和卷积核的大小不相同,因此也可以认为是另外一种形式的shift,只不过对于cross-shaped window attention来说是交叉型的方式来获取信息。

创新点2,locally_Enhanced Positional Encoding(局部增加位置编码)

        SA具有排列不变性,经常忽略二维图像中重要的位置信息,因此为了弥补这个缺陷,会在transformer中加入位置编码。

        如上图所示,本文对位置编码进行了更新,最左边的图的位置编码,在进入SA时要么对加入绝对位置编码要么就加入条件位置编码,然后送到transformer中进行运算,中间的图加入了相对位置编码,文章选择与其他两种方法不一样的方式,直接对值进行处理。

        对CPE的解释:CPE 本质解决的问题就是提高了分割后的小图片的空间信息,由于将图片分割成小图片后,排成一排输入进 Transformer 中时,会失去原本的图片的空间信息,最开始的位置编码,并不能完美的解决这个问题,而修改后的条件编码,一定程度上解决了这个问题        

        对RPE的解释:RPE表示既然在Transformer运行过程中相对位置信息是在self-attention计算时候丢失的,那么最直接的想法就是在计算self-attention的时候再加回来。

        对APE的解释:self_attention中,不管输入怎么排序,输出永远不变,那肯定不行,所以直接对某个位置上的信息直接定死,他就代表它本身。

        设值元素V_{i}V_{j}之间的边用向量e_{ij}^{V}\in E表示,则:

Attention(Q,K,V)=SoftMax(QK^{T}/\sqrt{d})V + EV,

        然而,如果考虑E中的所有链接,将需要巨大的计算成本。假设对一个特定的输入元素,最重要的位置信息来自于他们局部领域,因此,提出局部增强位置编码(LePE),并使用该深度卷积算子对V进行计算:

Attention(Q,K,V)=SoftMax(QK^{T}/\sqrt{d})V + DWConv(V)

        以上就是本文对位置编码所做的调整。既然文章一直强调要使用本文网络降低计算量,那么下面说一下本文计算的复杂度。

        transformer的计算包含q,k,v,Q=x*W^{Q},K=x*W^{K},LePE(V)=V*W^{LePE},4个线性计算需要4HWC^{2},然而横条纹的self-attention的QK^{T}需要HW(C/2)*(sw)W,与V相乘需要HW(C/2)*(sw)W,纵条纹同理。那么总的复杂度为:

        可以跟swin transformer相比,

        可以看出复杂度没有发生变换,由于横纵两个方向并行计算和sw宽度的灵活性,计算量不增大的情况下,精度却大大提高了。 

网络整体架构

 

        上图就是CSwin transformer的整体框架,可以看出来是建立在swintransformer的基础上进行创新的,与swin transformer不同的地方在于:

        1、将MSA,SW-MSA更换成了cross-shaped window attention

        2、将patch merging更换成了conv(卷积核为3*3,步长为2)

        3、引入局部感应偏置,将LePE作为一个并联模块加入到自注意力中。

        首先输入一个H*W*3的RGB图像,利用重叠卷积获得\frac{H}{4}*\frac{W}{4}*C(通过一个卷积核为7*7,步长为4的卷积操作获得),每个相邻的stage使用卷积操作,用来减少token的数量,增加通道数,因此构建第i层特征图具有\frac{H}{2^{i+1}}*\frac{W}{2^{i+1}}*2^{i}C。每个阶段由N_{i}个连续的Cswin tranformer block组成。

        那么采用了cross-shaped window attention 与locally-Enhanced Position Encoding可以将Cswin transformer block定义为:

 实验部分

         根据文章对于不同的网络所加入的东西不同,因此将本文的网络分为了上述四种。具体的实验结果可以在文章去查看,这里就不放出来了。

本文文章地址为:

https://arxiv.org/abs/2107.00652

本文在写作期间借鉴了一下参考,我认为都写得十分详细可以结合起来一起看:

论文阅读笔记 | Transformer系列——CSWin Transformer_Clichong的博客-CSDN博客

 SwinT的进阶:CSWin Transformer_Amusi(CVer)的博客-CSDN博客

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值