从rookie到基佬~002:注意力机制

一天一个变弯小技巧

今日份洗脑:注意力机制

结论:
1、人类视觉注意力机制,扫描全局图像,获得重点关注区域,投入更多经历,抑制其它无用信息,提高视觉信息处理的效率与准确性。
2、遇事不决就加注意力。
正文开始

资料1:
计算机视觉中的注意力机制总结

视觉中的注意力机制
计算机视觉(computer vision)中的注意力机制(attention)的基本思想就是想让系统学会注意力——能够忽略无关信息而关注重点信息。注意力机制一种是软注意力(soft attention),另一种则是强注意力(hard attention)。

一、 软注意力(soft-attention)

软注意力是一个[0,1]间的连续分布问题,更加关注区域或者通道,软注意力是确定性注意力,学习完成后可以通过网络生成,并且是可微的,可以通过神经网络计算出梯度并且可以前向传播和后向反馈来学习得到注意力的权重。
软注意力的关键点在于,这种注意力更关注区域或者通道,而且软注意力是确定性的注意力,学习完成后直接可以通过网络生成,最关键的地方是软注意力是可微的,这是一个非常重要的地方。可以微分的注意力就可以通过神经网络算出梯度并且前向传播和后向反馈来学习得到注意力的权重。

1、空间域注意力(spatial transformer network)
空间区域注意力可以理解为让神经网络在看哪里。通过注意力机制,将原始图片中的空间信息变换到另一个空间中并保留了关键信息.

2、通道注意力(Channel Attention,CA)
通道注意力可以理解为让神经网络在看什么,典型的代表是SENet。卷积网络的每一层都有好多卷积核,每个卷积核对应一个特征通道,相对于空间注意力机制,通道注意力在于分配各个卷积通道之间的资源,分配粒度上比前者大了一个级别。
Squeeze操作:将各通道的全局空间特征作为该通道的表示,使用全局平均池化生成各通道的统计量
Excitation操作:学习各通道的依赖程度,并根据依赖程度对不同的特征图进行调整,得到最后的输出,需要考察各通道的依赖程度

3、混合域模型(融合空间域和通道域注意力)
(1)论文:Residual Attention Network for image classification(CVPR 2017 Open Access Repository)
http://openaccess.thecvf.com/content_cvpr_2017/html/Wang_Residual_Attention_Network_CVPR_2017_paper.html
文章中注意力的机制是软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。
该文章的注意力机制的创新点在于提出了残差注意力学习(residual attention learning),不仅只把mask之后的特征张量作为下一层的输入,同时也将mask之前的特征张量作为下一层的输入,这时候可以得到的特征更为丰富,从而能够更好的注意关键特征。同时采用三阶注意力模块来构成整个的注意力。

4、Non-Local
Local这个词主要是针对感受野(receptive field)来说的。它们只考虑局部区域,因此都是local的运算。同理,池化(Pooling)也是。相反的,non-local指的就是感受野可以很大,而不是一个局部领域。如果在某些层能够引入全局的信息,就能很好地解决local操作无法看清全局的情况,为后面的层带去更丰富的信息。

5、位置注意力(position-wise attention)
本篇文章的亮点在于用了巧妙的方法减少了参数量。在上面的DANet中,attention map计算的是所有像素与所有像素之间的相似性,空间复杂度为(HxW)x(HxW),而本文采用了criss-cross思想,只计算每个像素与其同行同列即十字上的像素的相似性,通过进行循环(两次相同操作),间接计算到每个像素与每个像素的相似性,将空间复杂度降为(HxW)x(H+W-1)

二、强注意力(hard attention)
0/1问题,哪些被attention,哪些不被attention。更加关注点,图像中的每个点都可能延伸出注意力,同时强注意力是一个随机预测的过程,更加强调动态变化,并且是不可微,所以训练过程往往通过增强学习。

  • 强注意力与软注意力不同点在于,首先强注意力是更加关注点,也就是图像中的每个点都有可能延伸出注意力,同时强注意力是一个随机的预测过程,更强调动态变化。当然,最关键是强注意力是一个不可微的注意力,训练过程往往是通过增强学习(reinforcement learning)来完成的。

这些方法共同的部分都是利用相关特征学习权重分布,再用学出来的权重施加在特征之上进一步提取相关知识。 不过施加权重的方式略有差别,可以总结如下:

  • 加权可以作用在原图上;
  • 加权可以作用在空间尺度上,给不同空间区域加权;
  • 加权可以作用在Channel尺度上,给不同通道特征加权;
  • 加权可以作用在不同时刻历史特征上,结合循环结构添加权重,例如机器翻译,或者视频相关的工作。

三、在语义分割中的应用
语义分割网络,由骨干网络和语义分割头组成。全卷积网络受制于较小的有效感知域,无法充分捕获长距离信息。为弥补这一缺陷,诸多工作提出提出了高效的多尺度上下文融合模块,例如全局池化层、Deeplab[3] 的空洞空间卷积池化金字塔、PSPNet[4] 的金字塔池化模块等。

仅2018年,在语义分割领域就有多篇高影响力文章出炉,如 PSANet[3],DANet[4],OCNet[5],CCNet[6],以及今年的Local Relation Net[7]。此外,针对 Attention 数学形式的优化,又衍生出A2Net[8],CGNL[9]。而 A2Net 又开启了本人称之为“低秩”重建的探索,同一时期的SGR[10],Beyonds Grids[11],GloRe[12],LatentGNN[13] 都可以此归类。

上述四文皆包含如下三步:1.像素到语义节点映射 2.语义节点间推理 3.节点向像素反映射。其中,step 2的意义尚未有对比实验验证,目前来看,step 1 & 3 构成的对像素特征的低秩重建发挥了关键作用。关于如何映射和反映射,又有了 APCNet[14] 和笔者的 EMANet[15] 等相关工作。

1、Non Local
在这里插入图片描述
Self-attention结构自上而下分为三个分支,分别是query、key和value。计算时通常分为三步:
第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
第二步一般是使用一个softmax函数对这些权重进行归一化;
第三步将权重和相应的键值value进行加权求和得到最后的attention。

核心操作为在这里插入图片描述
详细对比分析了这些细节在不同任务中的影响。笔者认为此处最关键的是加权平均,而非转换。
这里f 计算时,只考虑了像素的特征,而没有考虑相对位置。倘若也将像素坐标位置 (x,y)考虑进来,其实就是全图版的 MeanShift Filter,一种经典的保边滤波算法。Nonlocal 还可以溯源到经典的 Non-local means 和 BM3D。其功效也来源于此,即高维 feature map 里存在大量的冗余信息,该类算法可以消除大量噪音。

2、Other Attention Models
另一种减少计算量的方法,是将 attention 的全图计算改为窗口内计算。

NUS 的 A2Net[8] 和 百度的 CGNL[9] 另辟蹊径,从另一个角度优化了 Nonlocal 的复杂度。

· EMANet
本文认为,映射的关键,在于寻找一组“最合适”的描述子,即论文中的“基”。这组基最好具有如下的几条性质:1. 具有代表性 2. 数量少 3. 互不相似。

性质1能保证重构后的 feature map 能够最大限度地还原有效信息;性质2则可以保证重构的低秩性,使重构后的特征处在高维空间中的低维流形中;性质3则是在性质2的约束下,尽可能达到性质1的保证。使用池化,即简单下采样的,得到的基充分满足性质2;但互相之间仍十分相似,因此性质3不满足;小物体下采样后可能会信息丢失,因此性质1也仅仅能对大物体满足。
在这里插入图片描述

おすすめ

転載: blog.csdn.net/bnanaber/article/details/121494574