浅谈计算机视觉中的注意力机制

视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。

计算机视觉中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。

一  研究进展

早期的注意力研究,是从大脑成像机制去分析,采用了一种winner-take-all [1]的机制来研究如何建模注意力。在深度学习发展的今天,搭建能够具备注意力机制的神经网络则开始显得更加重要,一方面是这种神经网络能够自主学习注意力机制,另一方面则是注意力机制能够反过来帮助我们去理解神经网络看到的世界[2]。

    近几年来,深度学习与视觉注意力机制结合的研究工作,大多数是集中于使用掩码(mask)来形成注意力机制。掩码的原理在于通过另一层新的权重,将图片数据中关键的特征标识出来,通过学习训练,让深度神经网络学到每一张新图片中需要关注的区域,也就形成了注意力。

这种思想,进而演化成两种不同类型的注意力,一种是软注意力(soft attention),另一种则是强注意力(hard attention)。软注意力的关键点在于,这种注意力更关注区域[3]或者通道[4],而且软注意力是确定性的注意力,学习完成后直接可以通过网络生成,最关键的地方是软注意力是可微的,这是一个非常重要的地方。可以微分的注意力就可以通过神经网络算出梯度并且前向传播和后向反馈来学习得到注意力的权重[5]。强注意力[6]与软注意力不同点在于,首先强注意力是更加关注点,也就是图像中的每个点都有可能延伸出注意力,同时强注意力是一个随机的预测过程,更强调动态变化。当然,最关键是强注意力是一个不可微的注意力,训练过程往往是通过增强学习(reinforcement learning)来完成的。

 

二 论文系列

  • SE-Net

SE-Net(Squeeze-and-Excitation Networks)显式地建模特征通道之间的相互依赖关系。没有引入一个新的空间维度来进行特征通道间的融合,而是采用了一种全新的“特征重标定”策略。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。

 

给定一个输入x,其特征通道数为 c_1,通过一系列卷积等一般变换后得到一个特征通道数为 c_2 的特征。与传统的 CNN 不一样的是,接下来SE-Net过三个操作来重标定前面得到的特征。

首先是Squeeze 操作,我们顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。

这里写图片描述

其次是Excitation 操作,它是一个类似于循环神经网络中“门”的机制。通过参数w来为每个特征通道生成权重,其中参数w被学习用来显式地建模特征通道间的相关性。

这里写图片描述

最后是一个Reweight的操作,我们将 Excitation 输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

这里写图片描述

  • RAN

Residual Attention Network 的创新点在于提出了残差注意力学习(residual attention learning),不仅只把mask之后的特征张量作为下一层的输入,同时也将mask之前的特征张量作为下一层的输入,这时候可以得到的特征更为丰富,从而能够更好的注意关键特征。RAN采用Bottom-up Top-down的前向注意力机制。其他利用注意力模型的网络,往往需要在原有网络的基础上新增一个分支来提取注意力区域,并进行单独的训练,而RAN能够就在一个前向过程中就提取模型的注意力区域,使得模型训练更加简单。

如上图所示:对于某一层的输出特征图,在普通卷积神经网络中只有右半部分,也就是Trunk Branch,RAN在这个基础上增加了左半部分Soft Mark Branch,一个Bottom-up Top-down的结构。

Bottom-up Top-down的结构首先通过一系列的卷积和池化操作,逐渐提取高层特征并增大特征图的感受野。经过高层特征激活的点能够反映注意力区域的位置。再通过相同数量的上采样操作将特征图还原至与输入相同大小。Soft Mask Branch输出的Attention map中的每一个像素值相当于对原始feature map上每一个像素值的权重,它会增强有意义的特征,而抑制无意义的信息,因此,将Soft Mask Branch与Trunk Branch输出的特征图进行element-wised的乘法,就得到了一个weighted Attention map。同时因为Soft Mask Branch的激活函数是Sigmoid,通过一系列这样的乘法,将会导致feature map的值越来越小,并且也可能打破原始网络的特性,当层次极深时,给训练带来了很大的困难。因此作者在得到了weighted Attention map之后又与原来Trunk Branch的feature map进行了一个element-wised加的操作,这就和ResNet有异曲同工之妙,该层的输出由下面这个式子组成。

其中M(x)为Soft Mask Branch的输出,F(x)为Trunk Branch的输出,那么当M(x)=0时,该层的输入就等于F(x),因此该层的效果不可能比原始的F(x)差,这一点也借鉴了ResNet中恒等映射的思想,同时这样的加法,也使得Trunk Branch输出的feature map中显著的特征更加显著,增加了特征的判别性。这样,优化的问题解决了,性能的问题也解决了,因此通过将这种残差结构进行堆叠,就能够很容易的将模型的深度达到很深的层次,具有非常好的性能。

这里写图片描述

上图是利用Residual Attention Module进行堆叠得到的模型结构,三个stage,由浅到深提取不同层次的Attention信息,值得注意的是,网络中的每一个unit都可以换成目前具有非常好性能的结构,如Residual Block、Inception Block,换个角度说,就是可以将这个Attention的结构无缝连接到目前最优秀的网络中去,使得模型的性能更上一层楼。 

这里写图片描述

上图是一个使用在ResNet-50上的例子,可以看出来和原始的ResNet的区别就是在每个阶段的Residual Block之间增加了Attention Module,这里有一个小trick,就是在每一个Attention Module的Soft Mask Branch中,作者使得down sample到的最小feature map的尺寸与整个网络中的最小feature map大小一致,首先7*7的feature map对于Attention来说不至于那么粗糙,作者不希望在浅层的Attention丢失的信息太多,其次也保证了它们具有相同大小的感受野。至于这么做到底能提升多大的性能,这里也很难判定。
 

  • RA-CNN

RA-CNN算法不需要对数据做类似bounding box的标注就能取得和采用类似bounding box标注的算法效果。在网络结构设计上主要包含3个尺度的子网络,每个尺度子网络的网络结构都是一样的,只是网络参数不一样,在每个尺度子网络中包含两种类型的网络:分类网络和APN网络。因此数据流是这样的:输入图像通过分类网络提取特征并进行分类,然后attention proposal network(APN)网络基于提取到的特征进行训练得到注意力区域信息,再将注意力区域裁剪出来并放大,再作为第二个尺度网络的输入,这样重复进行3次就能得到3个尺度网络的输出结果,通过融合不同尺度网络的结果能达到更好的效果。多尺度网络的最大优点在于训练过程中可以逐渐聚焦到关键区域,能更加准确。

(a1)、(a2)、(a3)分别表示3个不同尺度的网络。(b1)、(b2)、(b3)分别表示3个不同尺度网络的卷积层,这些卷积层实现的就是从输入图像中提取特征,也就是现在CNN网络干的主要的活,这三个网络的结构是一样的。根据提取到的特征,一方面传给全连接层和softmax层去预测该图片的类别概率,另一方面通过APN网络(d1)、(d2)得到区域信息。两个任务的损失函数分别如下:

Wc就是指的(b1)或(b2)或(b3)网络的参数,也就是一些卷积层、池化层和激活层的集合,用来从输入图像中提取特征,Wc*X就是最后提取到的特征。然后f()函数(task1)是全连接层和softmax层,用来将学习到的特征映射成类别概率,也就是p(X)。g()函数也就是APN网络(task2)可以用两个全连接层实现,其中最后一个全连接层的输出channel是3,分别对应tx、ty、tl。这里因为假设检测出来的区域都是正方形,所以得到的tx和ty表示区域的中心点坐标,tl表示正方形区域边长的一半。

假设原始图像的左上角是坐标系的起点,用符号tl表示左上角这个点,用符号br表示右下角这个点,那么根据APN网络得到的tx、ty和tl可计算得到crop得到的区域的左上角点和右下角点的x轴(tx(tl)、tx(br))和y轴(ty(tl)、ty(br))坐标分别如公式3所示。所以前面之所以tl表示边长的一半是为了公式3中的式子可以少写1/2。 
这里写图片描述

定义好了坐标关系,就可以用一个mask M和输入图像X做element-wise multiplication来得到crop后的区域。这个过程可以用公式4来表示: 

这里写图片描述

其中Mask的公式如下,后面会介绍为什么要用这样的函数。 

这里写图片描述

在M()函数中的h()就是sigmoid函数(和文中说的logistic function是一个意思,logistic function这个名称来源于逻辑回归): 

这里写图片描述

公式6比较好理解,因为就是常见的sigmoid函数。首先k这个参数可以设定成一个较大的正整数(实验中设置为10),这个时候sigmoid函数就很像一个阶跃函数。这样当-kx很大时(比如正无穷),分母也是趋于无穷大的,这个时候h(x)接近于0;当-kx很小时(比如负无穷),分母的后一半是趋于0的,这样整个分母就趋于1,这样h(x)接近于1。因此当x在tx(tl)和tx(br)之间时,h(x-tx(tl))-h(x-tx(br))就趋近于1-0=1,y轴同理。这样的话只有当x在tx(tl)和tx(br)之间且y在ty(tl)和ty(br)之间时,M()才趋于1*1=1,其他情况都是趋于1*0或0*1或0*0。 
那么为什么要用这个稍微复杂的mask函数来做crop,而不是直接根据坐标和边长信息生成一个0-1的mask,答案是:end-to-end优化训练需要这样的连续函数,原文是这么说的:To ensure the APN can be optimized in training, we approximate the cropping operation by proposing a variant of two-dimension boxcar function as an attention mask. The mask can select the most significant regions in forward-propagation, and is readily to be optimized in backward-propagation due to the properties of continuous functions.

确定好了如何crop的策略,接下来就是对crop后的区域放大,文中介绍采用的是双线性插值(bilinear interpolation),公式如下: 
这里写图片描述

接下来看看损失函数。本文的损失函数主要包含两部分,如公式8所示。一部分是Lcls,也就是分类的损失,Y(s)表示预测的类别概率,Y*表示真实类别。Lrank表示pairwise ranking loss,可以看FIgure2中红色的大括号,第一个scale网络和第二个scale网络构成一个Lrank,同样第二个scale网络和第三个scale网络构成另一个Lrank。在训练这个网络的时候采取的是损失函数交替训练的策略,后面会详细介绍。 
这里写图片描述

Lrank的公式如式子9所示,输入中pt(s)中的t表示真实标签类别,s表示scale,因此比如pt(2)表示第二个scale网络的真实标签概率(Figure2中最后预测出来的概率条形图中的绿色部分)。从Lrank损失函数可以看出,当更后面的scale网络的pt大于相邻的前面的scale网络的pt时,损失较小,通俗讲模型的训练目标是希望更后面的scale网络的预测更准。margin参数在实验中设置为0.05。 
这里写图片描述

于是这样的网络就可以得到输入X的不同scale特征,比如用式子10表示,其中N表示scale的数量,Fi表示第i个scale网络的全连接层输出,文中称Fi为descriptor。 

这里写图片描述

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值