计算机视觉中的注意力机制总结

一、背景

最早图像领域,后面应用到NLP领域

 

人类视觉注意力机制,扫描全局图像,获得重点关注区域,投入更多经历,抑制其它无用信息,提高视觉信息处理的效率与准确性。

 

在深度神经网络的结构设计中,attention所要分配的资源基本上就是权重了。

视觉注意力分为几种,核心思想是基于原有的数据找到其之间的关联性,然后突出其某些重要特征,有通道注意力,像素注意力,多阶注意力等,也有把NLP中的自注意力引入。

二、注意力定义

2.1 序列编码

第一个思路是RNN层递归

RNN结构本身比较简单,也很适合序列建模,但RNN的明显缺点之一就是无法并行,因此速度较慢,这是递归的天然缺陷。另外我个人觉得RNN无法很好地学习到全局的结构信息,因为它本质是一个马尔科夫决策过程。

第二个思路是CNN层,其实CNN的方案也是很自然的,窗口式遍历。CNN方便并行,而且容易捕捉到一些全局的结构信息。

第三个即为self-attention,它的意思是直接将xt与原来的每个词进行比较,最后算出yt。一步到位获取了全局信息 

2.2 定义

它的基础是Scaled-Dot Attention,定义如下:

 

其中Q∈ℝn×dk,K∈ℝm×dk,V∈ℝm×dv,softmax则是在m的那一维进行归一化。而自注意力,则是对于同一个X∈ℝn×d,通过不同的投影矩阵Wq,Wk,Wv∈ℝd×d′得到Q=XWq,K=XWk,V=XWv,然后再做Attention,即

 

 

至于Multi-Head Attention,则不过是Attention运算在不同的参数下重复多次然后将多个输出拼接起来,属于比较朴素的增强。

 

本质上来看,自注意力就是通过一个n×n的矩阵A和d×d′的矩阵Wv,将原本是n×d的矩阵X,变成了n×d′的矩阵AXWv。其中矩阵A是动态生成的,即

 

对于矩阵B,本质上来说它就是X里边两两向量的内积组合,所以我们称它为“token对token”的Attention。几种类型

 

 

Attention层的好处是能够一步到位捕捉到全局的联系,因为它直接把序列两两比较(代价是计算量变为𝒪(n2),当然由于是纯矩阵运算,这个计算量相当也不是很严重);相比之下,RNN需要一步步递推才能捕捉到,而CNN则需要通过层叠来扩大感受野,这是Attention层的明显优势。然而自注意力机制需要生成一个巨大的注意力图,其空间复杂度和时间复杂度巨大。其瓶颈在于,每一个像素的注意力图都需要对全图计算。

具体使用,可以把Attention作为一个单独的层来看,跟CNN、RNN等结构混合使用,应该能更充分融合它们各自的优势,

三、视觉中的注意力机制

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

3.1 软注意力(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) 

3.2 强注意力(hard attention)

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

 

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

 

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

- 加权可以作用在原图上;

- 加权可以作用在空间尺度上,给不同空间区域加权;

- 加权可以作用在Channel尺度上,给不同通道特征加权;

- 加权可以作用在不同时刻历史特征上,结合循环结构添加权重,例如机器翻译,或者视频相关的工作。

3.3 在语义分割中的应用

语义分割网络,由骨干网络和语义分割头组成。全卷积网络受制于较小的有效感知域,无法充分捕获长距离信息。为弥补这一缺陷,诸多工作提出提出了高效的多尺度上下文融合模块,例如全局池化层、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也仅仅能对大物体满足。

四、其它相关文献

· Recurrent Models of Visual Attention

提出了在传统的RNN中加入Attention机制,通过Attention去学习图像要处理的部分。该RAM模型能够顺序处理输入,在一个时刻根据一张图片内部的不同位置,把这些定位下的信息结合起来生成这个场景的动态内部表示。在每一步,该模型选择下一个位置,基于过去的信息和任务的需求。RAM的优势在于更少的像素需要处理,减少了任务的复杂度。

· how, Attend and Tell: Neural Image Caption Generation with Visual Attention

 

· ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs

提出了3种方法在CNN中使用Attention机制:卷积前,池化时,两种方法一起

 

· Attention is all you need

提出self-attention机制,不使用RNN或CNN等复杂的模型,仅仅依赖于Attention模型可以使训练并行化且拥有全局信息,该模型在NLP上表现良好。

 

 

参考

http://jbcordonnier.com/posts/attention-cnn/

https://kexue.fm/archives/4765 #《Attention is All You Need》浅读(简介+代码)

https://kexue.fm/archives/6853 #从标准Attention到稀疏Attention

https://mp.weixin.qq.com/s/t6IboWbX5ztdscDqUjdxXg #Attention综述:基础原理、变种和最近研究

https://zhuanlan.zhihu.com/cvattention #机器视觉Attention机制的研究

https://zhuanlan.zhihu.com/p/146130215

https://spaces.ac.cn/archives/7430

https://mp.weixin.qq.com/s/tfaVRwA5wstsEsIFS7ECnw #自注意力语义分割进展

https://mp.weixin.qq.com/s/EXVdjF6_Ik20uecfeB7uuQ #视觉注意力机制 | Non-local模块与Self-attention的之间的关系与区别

 

https://blog.csdn.net/paper_reader/article/details/81082351

https://blog.csdn.net/malefactor/article/details/78767781#comments

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值