Rethinking Local Perception in Lightweight Vision Transformer阅读笔记

前言

来自清华大学的团队于2023年4月份提出的一篇论文,主要介绍了一种轻量级vision transformer架构——CloFormer,用以处理移动端的图像任务。

作者从频域编码的角度认为,现有的轻量级视觉Transformer中,大多数方法都只关注设计稀疏注意力,来有效地处理低频全局信息,而使用相对简单的方法处理高频局部信息。很少有方法尝试结合共享和上下文感知权重的优势来处理高频局部信息。

模型引入了AttnConv,将普通卷积运算中的全局共享权重和注意力操作中的上下文感知权重结合起来,相比于Transformer能够更好地捕捉高频的局部信息,相比于传统卷积操作能够更好地处理图像中不同位置的关系。

1. 模型的特点

CloFormer采用两分支的结构。

局部分支中,AttnConv利用深度可分离卷积(depth-wise Convolution),其具有共享权重来提取局部特征。然后,利用上下文感知权重来增强局部特征。与以前通过局部自注意力生成上下文感知权重的方法不同,AttnConv使用门控机制生成上下文感知权重,引入了更强的非线性。

全局分支中,使用传统的注意力操作帮助模型捕捉低频的全局信息,但对K和V进行了下采样来减少参数量。

最后使用一种简单的方法来融合局部分支和全局分支的输出。

总结一下本文的创新点:

  1. AttnConv
  2. 两分支结构
  3. 效果不错

我感兴趣的点:

  1. 结合卷积,增强Transformer的局部感知能力,以适应伪装视觉感知任务中局部细节信息的感知。
  2. 轻量级Transformer。

2. 模型结构

模型整体结构如下图所示。

在这里插入图片描述

CloFormer包含四个stage,每个stage由Clo Block和ConvFFN组成。

首先将输入图像通过conv stem得到token,stem由四个卷积层组成,每个卷积层的步距分别是2,2,1,1。然后通过四个stage提取分层特征。最后利用全局平均池化和全连接层来生成预测。

ConvFFN

用ConvFFN取代普通的FFN,将局部信息融入到FFN过程中。ConvFFN与普通的FFN之间的主要区别在于,ConvFFN在GeLU激活之后采用深度可分离卷积(Depth-wise Conv),这使ConvFFN能够聚合局部信息。由于使用了深度可分离卷积,ConvFFN可以直接下采样,而不需要引入PatchMerge模块。

CloFormer使用两种类型的ConvFFN。第一种是直接利用跳跃连接的In-Stage ConvFFN。另一种是两个stage的ConvFFN,在其跳跃连接中,分别利用DWConv和Full-Connected Layer对输入信息进行下采样和升维。

Clo block

Clo block由一个局部分支和一个全局分支组成。

如下图所示,在全局分支中,首先对K和V进行下采样,然后对Q、K、V执行传统注意力过程,以提取低频全局信息

X g l o b a l = A t t e n t i o n ( Q g , P o o l ( K g ) , P o o l ( V g ) ) X_{global}=Attention(Q_g,Pool(K_g),Pool(V_g)) Xglobal=Attention(Qg,Pool(Kg),Pool(Vg))

在这里插入图片描述

3. AttnConv

在局部分支中使用AttnConv。

全局分支有效减少了计算注意力所需的Flop的数量,并且还使模型具有全局感受野。然而,尽管它有效地捕获了低频全局信息,但它对于高频局部信息的处理有所欠缺。由此,提出AttnConv克服这一缺点。

AttnConv是使模型实现高性能的关键模块,由传统的注意操作改进而来。

与传统注意力操作相同,首先使用线性变换来获得Q、K、V:

Q , K , V = F C ( X i n ) Q,K,V=FC(X_{in}) Q,K,V=FC(Xin)

在上式中, X i n X_{in} Xin是AttnConv的输入,FC表示全连接层。进行线性变换后,首先对V进行共享权重的局部特征聚合过程,然后,基于处理后的V和Q、K,进行局部增强的上下文感知。

局部特征聚合

如下图所示,使用一个简单的深度可分离卷积来聚合V中的局部信息,DWConv的权重是全局共享的:

V a = D W c o n v ( V ) V_a=DWconv(V) Va=DWconv(V)

在这里插入图片描述
上下文感知的局部增强

将V的局部信息与共享权重聚合后,结合Q和V来生成上下文感知权重。不同于前人提出的局部自注意力方法,此处更为复杂。

首先用两个DWConv分别为Q和K聚合本地信息。然后,计算Q和K矩阵的逐元素乘积(哈达玛积)。将结果映射到-1和1之间,得到上下文感知权重。最后,用生成的权重来增强局部特征。

Q l = D W c o n v ( Q ) Q_l=DWconv(Q) Ql=DWconv(Q)
K l = D W c o n v ( K ) K_l=DWconv(K) Kl=DWconv(K)
A t t n t = F C ( S w i s h ( F C ( Q l ⊙ K l ) ) ) Attn_t=FC(Swish(FC(Q_l \odot K_l))) Attnt=FC(Swish(FC(QlKl)))
A t t n = T a n h ( A t t n t d ) Attn = Tanh(\frac{Attn_t}{\sqrt{d}}) Attn=Tanh(d Attnt)
X l o c a l = A t t n ⊙ V s X_{local}=Attn \odot V_s Xlocal=AttnVs

其中,d代表token的通道数, ⊙ \odot 代表逐元素乘法(哈达玛乘积)。与普通注意力相比,Attnconv引入了更强的非线性。

局部自注意力的上下文感知权重生成过程中唯一的非线性算子是Softmax。在Attenconv中,除了Tanh,还进行了Swish。更强的非线性会导致更高质量的上下文感知权重。

与全局分支融合

在通道维度上,将两个分支的输出拼接,然后进行全连接操作。

X t = C o n c a t ( X l o c a l , X g l o b a l ) X_t=Concat(X_{local},X_{global}) Xt=Concat(Xlocal,Xglobal)
X o u t = F C ( X t ) X_{out}=FC(X_t) Xout=FC(Xt)

4. 局部感知的不同方式

如下图所示,将AttnConv与传统的卷积和局部自注意力进行比较。它们都使用了残差结构,但是其主干上的结构是不同的。

在这里插入图片描述
卷积

传统的残差块仅依靠卷积算子来收集高频局部信息。如(a)示,每个token,卷积算子使用卷积核中国的权重对其相邻token进行加权求和。卷积核中的权重是全局共享的,并且对于不同的token保持不变。

局部自注意力

如(b)示。与卷积相比,局部自注意力使每个token能够通过特定于token的权重从其相邻token中收集信息。这种方法利用上下文感知权重来提取高频局部表示,其中不同位置的token与其相邻token计算相似度分数,根据相似度分数收集信息。

AttnConv

如(c)示。Q、K和V是通过线性变换得到的,首先使用共享权重(DWConv)对V进行信息聚合。然后,通过比传统注意力操作更强的非线性方法来生成上下文感知权重。然后使用这些权重来增强局部特征。同时利用了共享权重和上下文感知权重。

AttnConv的优势

与传统卷积相比,AttnConv中上下文感知权重的使用时模型在局部感知过程中能够更好地适应输入内容。

与局部自注意力相比,共享权重的引入使模型能够更好地处理高频信息,从而提高了性能。此外,我们的生成上下文感知权重的方法引入了比局部自我注意更强的非线性,获得了更好的性能。需要注意的是,AttnConv中使用的所有运算都是基于卷积的,保留了卷积的平移等变特性。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vision Transformer被用于语义分割是通过结合SETR(Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers)方法来实现的。SETR是基于Transformer的语义分割模型,它采用了Vision Transformer来对图像进行编码和特征提取,然后使用Transformer的解码器来生成语义分割结果。 在Vision Transformer中,图像被分割成固定大小的图块,每个图块被表示为一个向量序列。通过将图块的向量序列输入到Transformer的编码器中,Vision Transformer能够捕捉到图像中的全局和局部的特征信息。 使用Transformer的解码器来生成语义分割结果的过程是,在编码器输出的基础上,通过自注意力机制(Self-Attention)和多头自注意力机制(Multi-Head Self-Attention)对特征进行融合和调整,然后将调整后的特征映射到语义分割结果的空间中。这样,Vision Transformer可以将图像的不同区域和像素之间的语义关系进行建模,从而实现语义分割的目标。 总结起来,Vision Transformer用于语义分割的过程是通过将图像分块并使用编码器提取特征,然后使用Transformer的解码器对特征进行调整和融合,最后生成语义分割结果。这种方法结合了Transformer在序列建模方面的优势和Vision Transformer在图像编码方面的优势,能够在语义分割任务中取得较好的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [语义分割系列26-VIT+SETR——Transformer结构如何在语义分割中大放异彩](https://blog.csdn.net/yumaomi/article/details/125676811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值