机器视觉Attention机制的研究 取消关注 写文章

机器视觉Attention机制的研究 取消关注 写文章

Attention算法调研(四) —— 视觉应用中的Soft Attention

从我的博客文章Attention算法调研(视觉应用概况)开始,我们一起分享一下Attention在机器视觉中的应用情况。在文章Attention算法调研(三)—— 视觉应用中的Hard Attention中,总结了视觉中Hard Attention的应用方法。

看过我前几章Attention介绍的博友可以发现,计算机Attention机制其实与我们人类的Attention机制是类似的,其核心原理都是快速从大量的信息中找到目标区域。 早期的传统机器学习和初期的深度学习阶段,计算机Attention机制的学习方式主要还是Hard Attention,可以简单概括为:寻找局部目标区域的学习过程。其中也衍生了很多bottom-up和top-down方法,后期深度学习过程有结合强化学习和蒙特卡罗的方法搜索目标区域。

Hard Attention回顾

根据上一章Attention算法调研(三)—— 视觉应用中的Hard Attention的总结可以发现,Hard Attention的学习有一些弊端: Hard Attention学习局部特征区域是一个随机crop图像的过程,crop的图像在局部区域是连续的整体,相关知识需要网络进一步提取和学习; Hard Attention主要依赖强化学习训练(自然语言中有依赖蒙特卡罗),在深度学习中无法嵌入到网络中收敛学习。

因此,在近期火热的深度学习网络中,很多工作更多在使用Soft Attention。

Soft Attention使用方法

在计算机视觉中,很多领域的相关工作(例如,分类、检测、分割、生成模型、视频处理等)都在使用Soft Attention,这些工作也衍生了很多不同的Soft Attention使用方法。这些方法共同的部分都是利用相关特征学习权重分布,再用学出来的权重施加在特征之上进一步提取相关知识。 不过施加权重的方式略有差别,可以总结如下:

  1. 加权可以作用在原图上;
  2. 加权可以作用在空间尺度上,给不同空间区域加权;
  3. 加权可以作用在Channel尺度上,给不同通道特征加权;
  4. 加权可以作用在不同时刻历史特征上,结合循环结构添加权重,例如前面两章节介绍的机器翻译,或者后期会关注的视频相关的工作。

下面为大家简要介绍。

加权在原图上

在原图上添加Attention机制的研究相对比较少,前面一章节我们介绍了应用强化学习在原图上引导Hard Attention的学习。这里给大家介绍另外一篇CVPR2017会议上的文章《Hierarchical Attentive Recurrent Tracking》,应用高斯核直接在原图上提取Attention,属于Soft Attention的用法。

机器视觉Attention机制的研究 取消关注 写文章

图1 Spatial Attention和Appearance Attention

《Hierarchical Attentive Recurrent Tracking》结合Attention机制和LSTM循环结构提出了一个目标跟踪的方法HART。图1展示了Attention应用的效果,HART主要定义了两个Attention概念,Spatial attention和Appearance attention。输入一张图片如图1上半部分,Spatial attention用于获取图片中物体的位置,获取结果如图1(a), 然后应用Appearance attention进一步分析物体外观特征从而去除图1(a)中的少量背景信息,从而获得了图1(c),这样可以更精确地学习到物体的位置和外观特征。

HART中的Spatial Attention的就是添加在原图上获取物体初步位置特征,具体添加方式主要应用了一个高斯核模仿人眼中心聚焦的特性提取图像特征。具体的学习方式,HART结合了LSTM循环网络学习跟踪物体的位置信息。

机器视觉Attention机制的研究 取消关注 写文章

图2 HART网络结构

具体的网络结构如图2,输入一张原始图片和物体初始位置Xt,通过Spatial Attention的信息提取,获得物体的粗略位置信息。然后作为Appearance Attention的输入学习物体的具体信息,学习过程主要分为两个部分,Dorsal Stream用于分割前景背景信息,Ventral Stream用于学习物体表面特征,经过特征融合获得Appearance feature信息Vt,作为LSTM输入信息学习。 在LSTM结构中,ht是隐藏信息用于记录不同时刻学习到的隐藏知识,Ot是LSTM每个时刻的输出信息与物体表面特征St融合学习到αt+1, at+1和∆bt,其中at+1和αt+1用于跟踪下一时刻的Spatial Feature和Appearance Feature,∆bt是时刻t学到的跟踪结果。

由上图可以看出,在原图上添加Attention的方式与Hard Attention的用法类似,这里的Attention权重利用的是高斯核提取的,权重是0~1之间的小数,离特征提取空间越大的权重值越大。

加权在特征空间区域上

有很多相关研究工作都在空间区域上添加Attention,具体的添加方法一般都是用mask的形式与卷积隐藏特征点乘计算获得图像显著区域。

其实,最早将Attention利用在图像处理上的出发点是,希望通过一个类似于人脑注意力的机制,只利用一个很小的感受野去处理图像中Attention的部分,降低了计算的维度。而后来慢慢有人发现其实卷积神经网络自带Attention的功能,比方说在分类任务中,高层的feature map所**的pixel也恰好集中在与分类任务相关的区域,也就是salience map,常被用在解决图像检测和分割等弱监督问题上。

不过这里,我们分享一篇比较典型的Attention文章,CVPR2017,Wang F等人提出的《Residual Attention Network for Image Classification》这篇文章写得很不错,值得细读。

《Residual Attention Network for Image Classification》提出了一个Residual Attention Network,文章主要想利用Attention机制加深网络模型的深度。由于模型越深梯度消失的可能性就越大,作者结合了Attention机制和Resnet网络结构的方法促进特征的学习。

机器视觉Attention机制的研究 取消关注 写文章

图3 Residual Attention

如图3所示,左边Soft Mask Branch分支是提取Attention权重的过程。作者在提取Attention时应用了一个Bottom-up和Top-down的结构。首先通过一系列的卷基和pooling,逐渐提取高层特征并增大模型的感受野,这是因为卷积网络高层特征中所**的Pixel能够反映Attention所在的区域。然后,再通过相同数量的up sample将feature map的尺寸放大到与原始输入一样大(这里的upsample通过deconvolution来实现,可以利用bilinear interpolation 也可以利用deconvolution自己来学习参数,可参考FCN中的deconvolution使用方式),这样就将Attention的区域对应到输入的每一个pixel上,我们称之为Attention mask(map)。 Bottom-up Top-down这种encoder-decoder的结构在图像分割中用的比较多,如FCN,也正好是利用了这种结构相当于一个weakly-supervised的定位任务的学习,因此这种Attention的添加方式很多都被应用在了检测和分割的弱监督问题上。

接下来就要把Soft Mask Branch与Trunk Branch的输出结合起来,Soft Mask Branch输出的Attention map中的每一个pixel值相当于对原始feature map上每一个pixel值的权重,它会增强有意义的特征,而抑制无意义的信息,因此,将Soft Mask Branch与Trunk Branch输出的feature map进行element-wised的乘法,就得到了一个weighted Attention map。但是无法直接将这个weighted Attention map输入到下一层中,加上Soft Mask Branch的**函数是Sigmoid,输出值在(0,1)之间(之所以这么做,我认为是不希望给前后两层的feature map带来太大的差异和扰动,其次能够进一步的抑制不重要的信息),因此通过一系列这样的乘法,将会导致feature map的值越来越小,并且也可能打破原始网络的特性,当层次极深时,给训练带来了很大的困难。因此作者在得到了weighted Attention map之后又与原来Trunk Branch的feature map进行了一个element-wised的操作,这就和ResNet有异曲同工之妙。

有图3里的公式可以看到,最后Soft Mask Branch与Trunk Branch的输出结合起来。如果公式中M(x)=0,该层的输出就等于T(x)。因此该层的效果不可能比原始的T(x)差,这一点借鉴了ResNet中恒等映射的思想,同时这样的加法,也使得Trunk Branch输出的feature map中显著的特征更加显著,增加了特征的判别性。并且这种残差结构式的堆叠,可以将模型的深度达到很深的层次,具有非常好的性能。

加权在特征通道上

在特征通道上添加Attention的一篇比较经典的文章是《Squeeze-and-Excitation Networks》。这篇文章提出了一个比较知名的网络SENet。当然,在ECCV2018上, Sanghyun Woo等人提出了《CBAM: Convolutional Block Attention Module》,这篇文章在SENet的基础上做了改进,同时融合了特征通道和特征空间区域上的Attention,效果也优于SENet。不过这里,我们暂先对SENet作出分析,看看作者如何在特征通道上添加Attention的。

SENet与之前很多提取图像Spatial特征的方法不同,在特征通道上学习提取Attention特征,然后通过相关**网络结构把Attention特征结合到Spatial Feature上。 作者在通道上添加Attention能够奏效的原因,是因为把卷积通道看成一个特征整体,可以使用全局信息来选择性地强调信息特征,并抑制特征噪音。另外,因为卷积网络本身具有提取Spatial Feature的特性,SENet从另一个角度(特征通道)学习重要的特征信息,具体是通过精确的建模卷积特征各个通道之间的作用关系来改善网络模型的表达能力。从不同角度学习图像特征,对特征提取有比较明显的性能改进。

机器视觉Attention机制的研究 取消关注 写文章

图4 SEBlock

图4中展示了SENet网络Attention计算单元SEBlock。首先对特征空间X做Ftr处理得到U,这里的Ftr计算操作其实就是普通的卷积操作。文中解释这一步主要是为了建立特征不同通道之间的关系,因为卷积计算是将某一块区域的所有通道特征做点乘累加的过程。但由于卷积操作往往是基于局部区域的通道关系计算,文中提出的SEBlock正是为了弥补这一缺陷,在U特征空间上做了全局特征通道之间的关系**,主要做了两个步骤的处理:squeeze和excitation。

sequence

为了弥补卷积操作只能获得局部通道之间的关系处理,作者提出了压缩(squeeze)全局空间信息成一个通道描述器。这个squeeze过程通过一个全局平均池化层来实现以产生通道的统计信息,统计信息是通过缩放U的尺度为WxH产生的。具体的计算过程如下式所示:

机器视觉Attention机制的研究 取消关注 写文章

公式(2)展示了sequence的具体计算方法,我们可以看到这个过程主要是以特征通道为一个单位对特征空间做了一个Average Global Pooling的操作。这个操作意在统计特征空间的所有全局通道信息,作者指出Average Global Pooling只是其中一种简单有效的办法,其他比较复杂的统计方法也可以替换。

这样,经过sequence操作,我们可以得到图4中的1*1*C维度的信息。

excitation

在上一步squeeze操作获得的信息的基础上,作者以捕捉通道的依赖关系为目的进行了第二步操作,为了达到期望,第二步的函数应该满足两个标准:首先,它必须灵活(它尤其应该能够捕捉通道之间的非线性相互作用关系),其次它必须能够在多个通道在经过多次**函数情况下学习多个通道之间非互斥关系。为了满足这些标准,作者借助sigmoid**函数使用了一种简单的门机制进行操作,对数据的具体运算如下式所示:

机器视觉Attention机制的研究 取消关注 写文章

公式(3)中δ代表的是ReLU**操作,W1和W2分别代表全连接操作,这样可以计算出不同通道之间的依赖关系,从而**出每个通道对信息提取的重要程度,即s代表通道之间的Attention权重。

在获得通道维度的Attention权重之后,作者将权重与对应通道的特征值做点乘操作,从而获得Attention**之后的结果。

加权在历史时刻上

将Attention权重因子加权在历史时刻上,这种添加权重的方法一般聚集在视觉领域的视频处理技术上,并且与RNN/LSTM/GRU的循环结构相结合。在前面两章节Attention算法调研(一) —— 机器翻译中的AttentionAttention算法调研(二) —— 机器翻译中的Self Attention的分享中,我们分析了Attention在机器翻译中的应用,也可以看成是加权在历史时刻上的应用方式,和这里视觉领域的Attention添加方法有异曲同工之妙。

在本章小节“加权在原图上”,我们分析了一个视频跟踪算法HART的Attention处理方法。其中,主要分析了Spatial Attention在原图上加权的作用方式。 从另外一个角度,我们可以看到HART结合了LSTM结构学习了每一时刻的Spatial Attention和Appearance Attention特征。如图2所示,LSTM的输出St和Ot在经过MLP处理之后分别输出了下一时刻的Appearance Attention特征αt+1和Spatial Attention特征at+1分别作为t+1时刻的特征输入开始下一轮的位置跟踪学习。

当然,在不同的视频处理任务上,例如,video caption, person re-identification, action localization等,具体的Attention和LSTM的结合使用都略有区别,但共同点都是基于某一时刻学习目标区域定位并且提取相关知识为下一时刻的学习做增强处理。这一部分复杂的使用情况我们后面再在单独一章节做具体的分析分享。

机器视觉Soft Attention分析

对比机器视觉任务上的Soft Attention和机器翻译上的Soft Attention,可以发现机器视觉上的Soft Attention似乎都是在输入空间上做的特征提取,这和机器翻译中的Attention定义似乎有些区别。

在机器翻译上的Soft Attention一般都是联系对比输入空间和输出空间的特征并提取Attention权重。如果只对输入空间做特征分析,一般属于Self Attention的定义。那么,我们可能会问视觉中的Self Attention是怎么处理特征信息的呢?以及它与Soft Attention的区别和联系又是怎样的呢?欢迎大家关注下一章节的内容《Attention算法调研(五) —— 视觉应用中的Self Attention》。

转载自:https://zhuanlan.zhihu.com/p/53026371

参考文献

  1. https://blog.csdn.net/auto1993/article/details/78315229
  2. Hierarchical Attentive Recurrent Tracking
  3. Residual Attention Network for Image Classification
  4. Squeeze-and-Excitation Networks