On the Integration of Self-Attention and Convolution

On the Integration of Self-Attention and Convolution

本文是2022 CVPR的一篇关于将卷积和self-attention进行组合,从而提高下游任务性能的文章。卷积和self-attention是图像特征提取时常用的两大范式,然而二者的优缺点也都十分明显,为了融合二者的优点,本文从一种新的角度对二者进行了比较,并提出了一种新的图像特征提取范式,这种范式同时有着卷积和self-attention的优势,又将计算量控制在可接受范围之内。

首先我们先来看一下作者是如何来对比卷积和self-attention的:
对于卷积,作者将其公式化为了:
在这里插入图片描述
假设输入和输出特征的通道数都是 C C C,卷积核的大小是 k × k k \times k k×k的,其中 g i , j g_{i,j} gi,j是卷积后特征图 ( i , j ) (i,j) (i,j)处的特征, f i , j f_{i,j} fi,j是输入特征图 ( i , j ) (i,j) (i,j)处的特征, K p , q K_{p,q} Kp,q是一个 C × C C \times C C×C的矩阵。那么上式可以解释为对于位置为 ( i , j ) (i,j) (i,j)处的输出特征,其获得方式是卷积核的每个位置(是一个矩阵)与输入特征的对应位置(是一个向量)相乘,得到的 k × k k \times k k×k个向量再相加。作者将这个过程拆分为了两个阶段,第一阶段:特征提取,可以看成是用 k × k k \times k k×k 1 × 1 1 \times 1 1×1的卷积对特定位置进行计算,公式如下在这里插入图片描述
第二阶段,上述卷积对全局进行扫描(shift),并且每次求得的这 k × k k \times k k×k个特征进行相加:在这里插入图片描述
在上述两个过程中,第一个过程涉及到的计算量是: k 2 k^2 k2 [ C , C ] × [ C , 1 ] = k 2 C 2 [C, C] \times [C, 1] = k^2 C^2 [C,C]×[C,1]=k2C2参数量 k 2 C 2 k^2 C^2 k2C2;第二个过程涉及到的计算量是: k 2 k^2 k2 [ C , 1 ] [C, 1] [C,1]相加 = k 2 C = k^2 C =k2C没有额外参数
为了更明显的看出两个阶段的差异,作者ResNet50为例,第一阶段和第二阶段的浮点数运算和参数量分别如下表所示在这里插入图片描述
之后,作者将self-attention也进行了类似的公式化:
在这里插入图片描述
这里是一个经典的mult-head self-attention,其中head数量为 N N N,对于每一个head,先是通过两个参数矩阵 W q , W k W_q, W_k Wq,Wk与特征图 f f f相乘获得两个特征特异性矩阵,之后特异性矩阵相乘计算相似性,获得attention权重矩阵 A ( W q f i , j , W k f a b ) A(W_qf_{i,j}, W_kf_{ab}) A(Wqfi,j,Wkfab),最后将 W v f a b W_v f_{ab} Wvfab和attention权重矩阵相乘并将每处的结果相加,就得到了在 ( i , j ) (i,j) (i,j)处的self-attention值。之后将这 N N N个head得到的结果concat在一起,就是最终的输出。同样,作者也将这个过程拆分成了两部分,第一部分是三个参数矩阵 W q , W k , W v W_q, W_k, W_v Wq,Wk,Wv对特征图的卷积,可以表示为:
在这里插入图片描述
第二部分是三个得到的卷积结果做self-attention,可以表示为:
在这里插入图片描述
为了公平比较,假设attention范围是 k × k k \times k k×k的区域。那么可以看出,第一步的计算量就是 3 3 3 [ C , C ] × [ C , 1 ] = 3 C 2 [C, C] \times [C, 1] = 3C^2 [C,C]×[C,1]=3C2,参数量也是 3 C 2 3C^2 3C2,这一步可以看成是用三组 k 2 k^2 k2的卷积核对每个位置进行 k 2 k^2 k2 1 × 1 1 \times 1 1×1的卷积;第二步的计算量是(1)获得attention权重 k 2 个 [ 1 , C ] 与 一 个 [ C , 1 ] k^2个[1,C]与一个[C, 1] k2[1,C][C,1]求相似性;(2)依照相似性对 k 2 个 [ C , 1 ] k^2个[C, 1] k2[C,1]特征进行相加,其计算量是 2 k 2 C 2k^2C 2k2C,但是没有新的参数。
同样以ResNet50为例,给出两个阶段的浮点运算量和参数:
在这里插入图片描述
通过对以上过程两相比较,可以看出二者在第一阶段都在进行多个 1 × 1 1 \times 1 1×1的卷积运算,可以将这一阶段理解成特征提取阶段。并且通过分析可以看出,二者的计算量大头和参数量也都在第一阶段,那么如果将第一阶段提取的特征进行重用,就可以在几乎只引入一半计算量的条件下同时实现卷积和self-attention。为此,作者提出了一种新的计算范式ACmix(Attention-Conv-mix),其流程如下图所示:
在这里插入图片描述
ACmix同样是分为两个阶段,第一阶段作者通过三组 1 × 1 1 \times 1 1×1的卷积对输入特征图( H × W × C H \times W \times C H×W×C)进行计算,得到三组 H × W × C H \times W \times C H×W×C的特征图,之后对于每一组特征图将其切片为 H × W × C / N × N H \times W \times C/N \times N H×W×C/N×N的特征图。在第二阶段,这些特征图分别进入到两个流程中。流程1:attention流程。三组特征图中前两组看成是 Q 和 K Q和K QK,计算相似性矩阵,之后将得到的相似性矩阵转换成attention权重矩阵,与第三组进行相乘,完成一组self-attention操作。注意,因为每一组特征图的 N N N组切片都是单独计算attention的,因此这一阶段可以看成是N头的self-attention。之后,将得到的N个头进行concat,获得 H × W × C H \times W \times C H×W×C的特征就是流程1的输出;流程2:卷积流程。首先通过一个 [ 3 C , k 2 ] [3C, k^2] [3C,k2]的全连接,将输入转换为 H × W × 3 C − − − > H × W × C / N × N k 2 H \times W \times 3C ---> H \times W \times C/N \times Nk^2 H×W×3C>H×W×C/N×Nk2,之后通过对每一组 H × W × C / N × k 2 H \times W \times C/N \times k^2 H×W×C/N×k2个特征向量相加,得到 H × W × C / N H \times W \times C/N H×W×C/N的特征,之后将N组特征concat在一起,就得到了一个 H × W × C H \times W \times C H×W×C的特征,这就是流程2的输出。最后将两个流程的输出通过权重相加,就得到了第二阶段的最终输出。
此外还需要提一点的是,在第二阶段的流程2中,在进行特征相加时需要对特征进行shift,如果直接简单的对每个区域进行遍历相加,则会导致结果失去local性以及难以被向量化实现(意味着难以并行运算)。为了解决这个问题,作者在这里提出了一个小技巧,即通过固定核的方式将shift转换为卷积操作。作者给了一个例子,假如我们需要对 ( i − 1 , j − 1 ) (i-1,j-1) (i1,j1)处的一个向量进行相加,那么我们只需要对这个区域乘一个
在这里插入图片描述
卷积核即可。进一步,作者又提出可以将固定核衍生为可训练核以及多组可训练核在这里插入图片描述
最后,我们来分析一下ACmix的计算量和参数量:
首先在第一阶段,其计算量和self-attention一样,是3个 [ 1 , C ] × [ C , C ] = 3 C 2 [1, C] \times [C, C] = 3C^2 [1,C]×[C,C]=3C2,参数量是 3 C 2 3C^2 3C2。在第二阶段,假设attention范围是 k × k k \times k k×k,则流程1的计算量是 2 k 2 C 2k^2C 2k2C,参数量为0。流程2的计算量为 ①、全连接 [ H , W , C / N , 3 N ] × [ 3 N , N k 2 ] = 3 C k 2 ( 将 3 C 转 换 成 [H, W, C/N, 3N] \times [3N, Nk^2] = 3Ck^2(将3C转换成 [H,W,C/N,3N]×[3N,Nk2]=3Ck23Ck^2C ) ) , 参数量为 3 k 2 N 3k^2N 3k2N;②、特征相加 k 2 个 [ C / N ] = k 2 C / N k^2个 [C/N] = k^2C/N k2[C/N]=k2C/N, 这个过程共进行N次,共Ck^2;③、可训练核shift, k 2 k^2 k2个核进行shift,之后 k 2 k^2 k2 [ 1 , C / N ] [1, C/N] [1,C/N]相加,共 C k 4 Ck^4 Ck4,参数量为 k 4 C k^4C k4C在这里插入图片描述
因此其两个阶段的参数量和计算量分别如上表所示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值