2

注意力机制之 Residual Attetion Network

 3 years ago
source link: https://bbs.cvmart.net/articles/388
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

注意力机制之 Residual Attetion Network

1年前 ⋅ 4470 ⋅ 2 ⋅ 0

写在前面:一直以来,极市得到了许许多多开发者的关注和支持,极市的成长离不开各位开发者的见证,为此我们特开设极市开发者祝愿帖,期待听到您真实的心声和建议~φ (> ω<*) :

极市开发者祝愿活动 (有奖回馈)

作者:JustDoIT
本文为作者在极市平台知乎专栏的投稿文章,原文链接:https://zhuanlan.zhihu.com/p/62438746

  • 作者按:本文是在阅读完《Residual Attention Network for Image Classification》所做的笔记,由于本人对注意力机制了解甚浅,笔记当中若有不恰当的地方,还望指出。
  • 论文地址:https://arxiv.org/pdf/1704.06904.pdf

file

计算机视觉中的注意力机制的基本思想是让模型学会专注,把注意力集中在重要的信息上而忽视不重要的信息。

举个简单的例子,对于图像分类任务,有只狗在广阔无垠的沙漠里漫步,模型能识别出有只狗,那假如狗是在茂密的森林里散步呢,模型有可能识别不出来,这是为什么呢?

因为模型并没有把注意力放在狗上,而是放在整张图上,这样一旦换了背景,模型很有可能会分类出错。而我们人类却能很好地对此进行分类,因为我们只关注场景中是否有狗,而不关注背景究竟是沙漠还是森林,可以简单地理解这就是注意力机制。

那如果让模型也像我们一样只关注场景中是否有狗,那岂不是分类会更准?是的,会更准。

接下来本文将介绍Residual Attention Network,它是一种注意力网络。受注意力机制和深度神经网络的启发,作者提出了Residual Attention Network,它主要包含数个堆积的Attention Module,每一个Module专注于不同类型的注意力信息,而这样简单地堆积Attention Module会对特征的表达有负面的,所以作者提出了Attention Residual Learning。


Residual Attention Network的结构如下:
file

在详细介绍Residual Attention Network的设计之前,先看看它的优点。


优点:

(1) 生成的特征更具判别度,即在特征空间中,类内差距小,类间差距大

(2) 逐渐增加Attention Module的数量,能持续提高模型的性能

(3) 能以端到端的训练方式整合到深层网络当中


原因:

(1) Stacked network structure:分工不同,不同的Attention Module能捕获不同的注意力信息,这里的不同模块是指所处的位置不同,而模块的结构是一样的

(2) Attention Residual Learning:Stacked network structure会导致性能明显的下降,于是提出了Attention Residual Learning,这个会在下面介绍

(3) Bottom-up top-down feedforward attention

2 网络设计

2.0 Attention Module

file
Residual Attention Network由多个Attention Module组成。每一个Attention Module分为两条branch,一条是mask branch,另一条是trunk branch。trunk branch负责提取特征,mask branch负责生成注意力信息(即权重)。

假定一个模块H的输入是x,trunk branch的输出是T(x),mask branch的输出是M(x),则模块H的输出是file,其中i是像素点的位置,c是对应的通道位置。这其实是Residual Attention Network自称为mixed attention的原因。例如T(x)的维数为(channel, height, width),那么M(x)的维数也为(channel, height, width),这样两个张量进行点乘操作,也就是空间对应位置的值进行相乘。


在Attention Module中,mask不仅做为前向传播的特征选择器,还做为反向传播的梯度过滤器,公式一看便知,

file

其中file是mask branch的参数,file是trunk branch的参数。从上面的公式可以看出mask branch能抑制来自噪声的wrong gradients,这使得Attention Module对噪声具有更强的鲁棒性。


那为什么要使用多个Attention Module呢?


如果只使用单个的Attention Module,会存在以下问题:

(1) 图片的背景可能是混乱的、复杂的,前景的形态可能是多变的,例如不同的狗在不同的背景之下,而这把这样的重任交给单个的Attention Module,这样效果肯定是不如人意的

(2) 单个Attention Module只修正特征一次,如果恰好这次的修正是不恰当的,也就是注意力发挥的作用是负面的,那后续的特征就没有得到再次修正的机会了,那这样的结果肯定也是不如人意的


当然了,Residual Attention Network很好地解决了上述的两个问题,它使用多个Attention Module,每一个trunk branch有其对应的mask branch,这样不同的mask branch就能学到不同的注意力信息。
file

如上图,这是一张热空气气球的图片,在Low-level处,有对应的Sky mask清除蓝色的颜色特征,同时在High-level处,有对应的Ballon instance mask修正part feature。

2.1 Attention Residual Learning

然而,简单地堆积Attention Module却会导致性能的明显下降。这其中的原因有两个,一是mask的值是在0-1之间,如果特征图反复地和mask做点乘运算,无疑会降低深层特征层的值(0.9 0.9 0.9 * 0.9 ......会变得很小),另一个是soft mask会破坏trunk branch的良好特性。

为此,作者提出了attention residual learning。Attention Module的输出H可重新定义为:file,其中M(x)的取值范围在0-1之间,如果M(x)的值接近于0,那么H(x)的值会近似等于T(x),这样从理论上讲,有Attention Module的效果肯定不会差过没有Attention Module的效果。这里的M(x)是关键,通过添加这个Mask,模型可以自适应地提高重要的特征同时忽视来自trunk branch的噪声。

file
在介绍处提到的Bottom-up top-down feedforward attention其实就是这里的down sample和up sample。

堆积Attention Module并使用Attention residual learning,能使模型在保留重要的特征情况下还不破坏原始特征的特性。堆积的Attention Modules能渐渐地修正特征图,从下图可知,层数越深,特征越清晰。

file

2.2 Soft Mask Branch

file
file

其中r表示的是相邻最大池化之间残差模块的数目,上图就是其中一个Soft Mask Branch,包括fast feed-forward sweep和top-down feedback step,前者用于快速地收集整张图片的全局信息,后者用于把全局信息和原始特征图结合起来。

2.3 Spatial Attention and Channel Attenion

对应于mixed attention、channel attention、spatial attention这三种注意力机制,作者分别使用了三种不同类型的激活函数。对于mixed attention file,是在每个channel和每个spatioal position简单地使用了sigmoid函数,对于channel attention file ,是在channel这个维度添加了L2正则化,对于spatial attention file ,是在spatial这个维度使用了sigmoid函数。具体的公式如下:
file

其中i是像素点的位置,c是对应的通道位置, filefile 分别表示第c层的均值和标准差, file是第i点这个位置的特征向量。
file

实验结果如上图,mixed attention的效果最好,这表示让Attention Module自适应地改变而不添加额外的约束会获得更好的性能。

作者提出了Residual Attention Network,它包含数个Attention Module,并使用了Attention Residual Learning。Residual Attention Network效果好的原因有两,一是包含数个Attention Module,这样每个Attention Module都能关注不同类型的注意力信息,二是把top-down注意力机制整合到bottom-up top-down feedforward结构当中。


推荐阅读

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK