CNN中的注意力

CNN中的注意力
foresta.yang注意力机制最初在 2014年作为 RNN(Recurrent Neural Network)中编码器-解码器框架的一部分来编码长的输入语句,后续被广泛运用在RNN中。
1.单路注意力
SE-NET(Squeeze and Excitation)
HU J,SHEN L,SUN G.Squeeze-and-excitation networks[J].
2018年 ,CVPR(计算机视觉和模式识别)收录的论文中提出了 SE-Net(挤压和励磁网络)是 Momenta 胡杰团队 (WMW)提出的新的网络结构,该团队利用 SE网络获得 了ImageNet 2017年竞赛图像分类任务的冠军,在ImageNet数据集上将 top-5错误降低到 2.251%,对比于以往的最 好成绩 2.991%有了较大的提升。
SE-Net中的关键结构SE-Netblock利用了注意力机制的思想,显式地建模特征图之间的相互依赖关系,并通过学习的方式来自适应地获取到每张特征图的重要性,然后依照这个重要程度去对原数据进行更新。SE-Net通过这种方式提升有用的特征重要程度同时降低无用特征的重要性,并以不同通道的重要性为指导,将计算资源合理地投入不同通道当中。
通俗地来说SENet的核心思想在于通过网络根据损失函数值loss去学习特征权重,使得对于任务更为效果明显的特征图权重变大,无效果或效果不明显的特征图权重变小的方式来训练模型从而达到更好的结果。SE-Netblock并不是一个完整的网络结构,而是一个即插即用的轻量级模块,通过将此模块嵌入网络之中,可以在小幅度提升参数量的代价下更加合理地分配神经网络的计算资源,大幅提升网络性能。
在SE-Netblock中,每张特征图通过全局平均池化操作进行挤压,将每一张特征图挤压成一个实数(见公式(1)),这个实数具有特征图上的全局信息,每张特征图的挤压结果组合成一个向量作为每组特征图的权重,其中H和W分别为特征图的高和宽,u为卷积后的结果,z为对应特征图的全局注意力信息,将此向量通过全连接层与激活函数(见公式(2)),训练结果用来放大对于识别任务更加重要特征图的权重,缩小不重要特征图的权重,其中σ为relu激活函数,δ代表sigmoid激活函数,W1与W2代表两个不同的全连接操作。得到的向量s代表每张特征图的重要性程度。向量s通过公式(3)激励原特征图,指导特征图不断向着有利于识别任务的方向更新,挤压激励操作结构如图2所示。

[1]. 张宸嘉, 朱磊与俞璐, 卷积神经网络中的注意力机制综述. 计算机工程与应用, 2021. 57(20): 第64-72页.
ECA-Net(Efficient Channel Attention)
2020年,CVPR收录的论文中提出了ECA-Net[14](EfficientChannelAttentionNetwork)来对SE-Net进行改进,它实现了对SE-Net block的改进,提出了一种不降维的局部跨信道交互策略(ECAblock)和自适应选择一维卷积核大小的方法,通过一维卷积层汇总跨信道信息的方法获取更加精确的注意力信息。ECA block的思想建立在作者认为跨通道的信息交互是很有必要的,而SE-Net block只注重通道内部信息的综合,没有考虑到相邻信道信息的重要性。ECA block的结构如图3所示。

公式(4)表示最终的权重是综合了各个相邻通道的信息获得,其中σ为激活函数,yi代表通道,wi为通道yi的权重,Ω代表与yi相邻的k个通道,k的值是随着学习自适应变化的。为了实现这一想法,作者利用了一维卷积层来进行实现,通过核为k的一维卷积对通道与其相邻的k-1个通道信息进行综合,如公式(5)所示,C1Dk表示核为k的一维卷积操作,y表示通道。
2.多路注意力
SK-Net(Selective Kernel Networks)
2019年,CVPR收录的论文中提出了SK-Net(Selective Kernel Networks),SK-Net基于卷积核的注意力机制,即卷积核的重要性,即不同的图像经过不同卷积核的重要性是不同的,其结构如图4所示。整个SK-Net结构由Split、Fuse、Select三部分组成[15]。Split的任务是将输入的特征图X进行不同卷积核大小的卷积操作。如图4所示,对X进行Kernel3×3和Kernel5×5的卷积操作,得到输出U1与U2。而在Fuse部分将对U1与U2进行element-wise summation,得到输出特征图U,通过全局平均池化与全连接层获取特征图的注意力信息,并创建了一个紧凑的特征z∈Rd×1,以便为精确和自适应选择提供指导如公式(6)所示,其中δ是ReLU函数,B表示批量标准化,W表示全连接层且W∈Rd×C。公式(7)表明为了研究d对模型效率的影响,文章使用下降参数r来控制其值,L表示d的最小值。在Select部分中,将这个紧凑特征z向量重新分为两个(本文情况)或多个(更多的情况)特征向量,然后分别与相应的split之后的特征图进行相应通道的相乘操作,然后再通过这种加权共同构成输入到下一个神经元的特征向量。两个特征向量ac、bc的生成如公式(8)、(9)所示,其中A,B∈RC×d,a、b分别表示U1与U2的注意力向量,Ac∈R1×d表示A的第c行,ac表示a的第c个元素值,对于向量B同理。


ResNeSt
2020年,亚马逊、加州大学戴维斯分校的张航、李沐、 Smola等研究者进一步改进了 ResNet[16](Deep Residual Network),提出了ResNeSt,其中利用ResNet、SE-Net与SKNet的思想,提出了 Split- Attention block[17]。在 ResNeSt block中,整体大框架运用了残差网络的结构,通过将网络的输入 Input输入 k个 Cardinal分支当中,公式(10)表 述了每个 Cardinal的输入,其中 R代表每个 Cardinal中 split后的分支数,k代表第 k个 Cardinal,U代表着 split 后每个分支的输入。公式(11)表述了每个 Cardinal模块 的输出,V代表携带了通道权重的 Cardinal输出,a© 是由 softmax计算得到的权重,计算方法如公式(12)所 示,其中 G代表每个 split的权重。在经过 Cardinal模块 后对最后的 k个输出进行拼接,以达到综合 k个 Cardinal 输出信息的目的,如公式(13)所示,并将拼接后的输出 与原本的输入进行 element-wise summation,得到最后 的输出,其结构如图 5所示。

在每个Cardinal中,又利用了SE-Net与SK-Net的思想,使用Split模块对每个Cardinal的输入切分为r个分支,通过SE-Net中的挤压激励操作获取每个分支的注意力信息作为Fuse模块,最后在Select模块中使得具有注意力信息的向量与其对应的分支特征图相乘,并通过element-wisesummation综合r个分支的输出作为最终的Cardinal输出,Cardinal结构如图6所示。
CBAM(Convolutional Block Attention Module)
2018年,ECCV(European Conference on Computer Vision)收录的论文中提出了卷积注意力模块 CBAM (Convolutional Block Attention Module Network),它的创新在于,它==认为对于卷积网络中的特征图来说,不仅通道中蕴含着丰富的注意力信息[18],通道内部,即特征图像素点间也具有大量的注意力信息,而以往的注意力机制只关注了通道上的注意力信息,这对于空间上的注意力信息是一种浪费==[19]。CBAM通过构建两个子模 块,==空间注意力模块 SAM(Spatial Attention Module), 通道注意力模块 CAM(Channel Attention Module)==分别汇总空间和通道两方面的注意力信息,并将信息进行一定程度的综合,从而获得更全面可靠的注意力信息[20],对计算资源的分配进行更合理的指导,其结构如图7所示。

通道注意力模块将输入的特征图F(H×W×C)分别经过基于宽和高的global max pooling(全局最大池化)和global average pooling(全局平均池化),得到两个1×1×C的特征图,接着,再将它们分别送入一个两层的神经网络(MLP),第一层神经元个数为C/r(r为减少率),激活函数为Relu,第二层神经元个数为C,这个两层的神经网络是共享的。而后,将MLP输出的特征进行基于element-wise的加和操作,再经过sigmoid激活操作,生成最终的通道注意力特征,即公式(14)中的Mc(F),其中Favg为特征图经过全局平均池化的结果,Fmax为经过全局最大池化的结果,整个通道门注意力模块结构如图8所示。

空间注意力模块将通道注意力模块输出的特征图F作为本模块的输入特征图[21]。首先做一个基于通道的全局最大池化和全局平均池化,得到两个尺寸为H×W×1的特征图,然后将这两个特征图基于通道做拼接操作。然后经过一个7×7卷积操作,降维为H×W×1,再经过sigmoid生成空间注意力特征,即公式(15)中的Ms(F),其中f代表卷积操作,[]代表通道拼接操作,最后将该向量和该模块的输入特征图做乘操作,得到最终生成的特征。整个空间注意力模块结构如图9所示。

双注意力网络(Dual Attention Network)
2019年CVPR收录的论文中提出了DA-Net(Dual AttentionNetwork),==与CBAM相似的是,它的思想也是综合通道和空间两路的注意力信息,但不同的是CBAM的两路注意力信息的获取是串行的,而DA-Net中的两路注意力信息的获取是并行的,且获取注意力信息的方式也有很大差别。==DA-Net从通道与空间两个分支通过对特征图进行矩阵操作构建特征图的相关性矩阵S和X,两个矩阵分别用来表征通道之间的相关性和通道内像素点之间的相关性,用此矩阵对特征图的更新进行引导,增大关键特征的权重,使得将更多的注意力放在更易于进行区分的优秀特征之上。双注意力模块结构如图10所示。

其中PAM(Position Attention Module)是空间分支,其结构如图11所示,CAM(ChannelAttentionModule)是通道分支,其结构如图12所示,这两个分支通过对于特征图的处理分别构建出了关于特征图通道与空间位置的相关性矩阵X(尺寸为C×C)与S(尺寸为(H×W)×(H×W)),其中H、W、C分别为特征图的高、宽与通道数,并用此两个相关性矩阵来引导特征图不同通道与空间位置权重的更新方向,DA-Net捕捉了空间和通道维度中的全局特征依赖关系,==使用位置注意力模块来学习特征的空间相互依赖性,==通道注意力模块来模拟通道相互依赖性[22]。

金字塔特征注意力网络(Pyramid Feature Attention Network)
2019年CVPR收录的论文中提出了金字塔特征注意力网络==,同样是利用特征图在通道间与通道内部像素点都富含大量的注意力信息的思想==[23],其结构如图13所示。其中CA模块(ChannelAttentionModule)为通道注意力模块,CA分支的结构与SE-Net的思想是相同的,都是通过全局平均池化提取通道注意力信息,利用全连接获取各个通道的权重,如图14所示,SA模块(SpatialAttentionModule)为空间注意力模块,它利用了交替的卷积核相同的卷积层来提取通道内部像素位置之间的注意力信息,获得通道内部不同像素位置之间的相关性与重要程度等信息[24],其结构如图15所示。两个模块分别从通道与空间两个方向提取特征图中的注意力信息,提取不同通道与空间中不同像素位置的权重信息,并对特征图进行自适应的更新。

卷积网络中注意力机制展望
近几年,注意力机制的思想被广泛应用在各种深度学习任务中,如计算机视觉、图像分割、自然语言处理等[25]。大量实验证明了注意力机制是行之有效且节省资源的,当注意力机制的思想运用于卷积神经网络中时,需要着眼于卷积网络中所特有的特征图中的关键信息。当前注意力机制的主流方法是将特征图中的潜在注意力信息进行深度挖掘,最常见的是通过各种手段获取各个特征图通道间的通道注意力信息与特征图内部像素点之间的空间注意力信息,获取的方法也包括但不仅限于卷积操作,矩阵操作构建相关性矩阵等,其共同的目的是更深层次、更全面地获取特征图中完善的注意力信息[26],于是如何更深地挖掘,从哪里去挖掘特征图的注意力信息,将极有可能会成为未来注意力方法发展的方向之一。
目前,获取注意力的方法基本基于通道间的注意力信息、空间像素点之间的注意力信息和卷积核选择的注意力信息,是否能够从新的方向去获取特征图更丰富的注意力信息,或者以新的方式或手段去获取更精准的注意力信息也是未来需要关注的一个重点[27]。
ECA-Net论文中的实验证明了跨通道的信息交互对于注意力信息的获取是有积极作用的,这也从侧面验证了不同通道之间并不是相互独立的,其内部是存在许多有利的有价值的信息的[28],那么着眼于不同通道内部的其他信息的提取,如不同特征图中像素点的空间注意力信息或其他跨通道信息是否对于获取更加精准的注意力分布有着正确的导向作用也是一个值得探索的方向[29]。
注意力机制作为一个轻量级的模块[30],有着即插即用的特点,但是即使其本身参数量并不高[31],在深度学习一些任务当中,注意力模块往往会被反复多次的调用,当注意力模块调用次数过多时仍然会对网络整体造成一定的负担[32],如何优化模块结构,降低模块参数量或减少模块调用次数,更快地获取更精准的注意力信息,对于以后注意力机制在其他任务中的推广有着举足轻重的作用[33],也是未来需要研究的重要内容之一。
卷积网络中的注意力机制的核心在于深度挖掘特征图中所含有的信息[34],而目前所发现的注意力获取渠道相对较少,但是注意力机制已经被广泛证明其针对大量深度学习任务不仅具有参数量小[35],即插即用的便捷性[36],还可以较为明显地提升任务效果。说明未来对于注意力机制的深度研究是必要且意义非凡的[37],将对深度学习任务产生重大的影响。
随着信息技术的不断发展,人类必将面临着大量而繁杂的信息,针对如此庞杂的信息去完成各项深度学习任务将变得更为困难[38]。当数据量无法任意改变的情况下,如何高效率地完成任务就变得尤为重要[39]。注意力机制便是提升深度学习任务效率的重要方法之一。当深度学习方法较为低效时,在深度学习任务中引入注意力机制将会实现“曲线救国”[40],利用其低成本、高收益[41]的特点,大幅提升信息处理的效率,在未来的深度学习任务中大放异彩