介绍
深度学习中的Attention,源自于人脑中的注意力机制,当人的大脑接受外部信息时,往往不会对全部信息进行处理和理解,只会将注意力集中在部分显著或者感兴趣的点上,这样有助于滤除不重要的信息,从而提高信息处理的效率。Attention不止能使运算聚焦在特定区域,同时也可以使得该区域的特征得到增强,同时将深的网络和ResNet连接,在图像分类上表现出极好的性能,所以本文提出了残差注意网络。
Residual Attention Network
本文的三大创新点:
(1)提出了一种可以堆叠的网络结构,并且将可堆叠的基本模块引入了注意力特征图的机制,不同层次的特征图能够捕捉到图像中的多种响应结果,时网络模型很容易达到很深的层次。
(2)提出了注意力残差学习方式,直接堆叠的基本模块会导致网络梯度消失的问题,使用了类似ResNet的残差连接方式,使得不同层的注意力模块可以得到充分学习。
(3)采用了Bottom-up和top-down结构相结合的方式,自底向上是为了图像的特征提取,自顶向下是为了生成Attention Map。
上图中这边显示了在残差注意网络中主干网络和注意力模块之间的关系,注意力模块是主干网络的某一个特征图为节点的分叉子网络。右图的结果显示网络模型中,不同特征图响应的注意力不同,在浅层网络中,网络的注意力集中于背景等区域,深层结构中,网络的注意力特征图聚焦于待分类的物体,深层次的特征图有更高的抽象性和语义表达能力。
Residual Attention Network
对于某一层的输出特征图就是下一层的输入,对于其他普通网络来说只有右半部分的Trunk Branch,作者增加了左半部分也就是Soft Mask Branch,具有Bottom-up和Top-down结构。这个结构首先要经过一系列的卷积核池化操作,逐层提取特征并增加模型的感受野,高层特征中所**的像素点能够反映Attention所在的区域,荣获再通过相同数量的up sample将特征图的尺寸放大到和原来一样大,这样就将Attention的区域对应到输入的每一个pixel上,叫做Attention map。主干分支可以当作任何一种卷积神经网络,掩膜分支通过对特征图的处理输出维度一致的注意力特征图,然后通过点乘操作将两个分支的特征图组合在一起,得到最终的输出特征图。
主干分支输出特征图为Ti,c(x),掩膜分支的输出特征图为Mi,c(x),那么最终该注意力模块的输出特征图为:
因为Soft Mask Branch的**函数为Sigmoid,输出值是在(0,1)之间,然后通过一系列的乘法会导致特征图的值越来越小,当层数极深时,训练会变得十分困难。同时掩膜分支会破坏主干分支的的优点,比如说将残差连接的shortcut替换成掩膜分支,那么会使深层网络的梯度不能很好的反传。所以作者提出下面的公式:
Mi,c(x)为【0,1】之间内取值,加一之后可以更加好的解决特征图变小带来的问题。ResNet中的Fi,c(x)学习的是输入输出之间的残差结果,本文的Fi,c(x)是由一个深层的卷积神经网络结构来学习拟合,再结合掩膜分支的输出结果,可以使得Fi,c(x)的输出特征图中的重要特征得到加强,不重要的特征会得到抑制。然后通过不断叠加的注意力模块可以使得逐渐的提升网络的表达能力。上图显示越是深的层,注意力模型的Attention机制会更加关注在对分类有帮助的目标上。
Soft Mask Branch
在掩膜分支过程中,包括自底向上和自顶向下的结构,自底向上是为了图像的特征提高,自顶向下是为了生成Attention Map。
上图利用Residual Attention Module进行堆叠得到的模型结构,共三个stage,由浅入深的提取不同层的Attention信息。掩膜分支对于固定的输入,在多层卷积之后使用池化操作第特征图进行降维操作,一直降到特征图的尺寸达到网络输出特征图的最下尺寸7*7,然后再逐层进行特征图的扩张,并且与之前同样维度下的特征图相加,增强特征图的表达能力。网络中的每一个unit都可以替换成具有良好性能的网络结构,比如Residual Block,Inception Block结构等。下图是一个使用ResNet-50的例子。可以看出与ResNet的区别就是在每个阶段的Residual Block之间增加Attention Module。
Spatial Attention and Channel Attention
我们使用了三种类型的**函数,分别对应于混合注意、渠道注意和空间注意。混合注意f1没有附加限制,对每个通道和空间位置使用简单的sigmoid。f2对每个空间位置的所有通道进行L2归一化,去除空间信息。空间注意f3对每个通道的地形图进行归一化处理,得到仅与空间信息相关的软掩码。不同的Attention计算公式如下:
并对三种方法进行了实验比对
作者在ImageNet数据集上与ResNet,Inception-ResNet等一系列的优秀方法进行了比较:
作者使用不同的Attention unit得到的结果也比原始网络结果好了不少提升,实验证明Attention的提出是有效果的。
总结
这篇文章用了Residual Block,Inception Module,ResNet残差,Bottom-up,Top-down等别人提出的东西,来进行很好的融合,我们可以利用这些好的结构和方法来达到自己的目的,提升自己网络的性能。
也感谢一些博主的精彩分析,让我对这篇论文有了更加深入的了解。