当前位置:   article > 正文

计算机视觉中的注意力机制理解_像素注意力

像素注意力

一、attention定义

注意力机制的基本原理很简单:它认为,网络中每层不同的(可以是不同通道,也可以是不同位置,都可以)特征的重要性不同,后面的层应该更注重其中重要的信息,抑制不重要的信息。

attention机制可以它认为是一种资源分配的机制,可以理解为对于原本平均分配的资源根据attention对象的重要程度重新分配资源,重要的单位就多分一点,不重要或者不好的单位就少分一点,在深度神经网络的结构设计中,attention所要分配的资源基本上就是权重了。

比如,性别分类中,应该更注意人的头发长短、胸部隆起情况这些和性别关系大的特征的抽取和判断,而不是去注意人体和性别关系不大的,像腰部粗细、身高头部比例,这些特征。

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

二、Deep learning于CV的考量

在工程师和研究者设计新的网络的时候,为了提升网络的容量和性能,通常会从三个方面着手:

  1. 增加网络深度:例如,从开始的LeNet-5,到VGG-16,到ResNet-101,等等。网络的设计越来越深,性能也越来越好。网路深了,简单地讲,下一层的输出是上一层的线性组合加激活,可以复合出更多更灵活的特征(其实就是更复杂的复合函数);

  2. 增加网络宽度:这里的网络宽度即特征图的通道数。这里的典型例子可以从LeNet-5,到VGG-16,Wider ResNet。增加网络宽度,特征图通道数多起来了,更多的卷积核可以得到更多更丰富的特征,网络的表达能力自然就强

  3. 丰富网络感受野:这里可以参考Inception中的不同分辨率的卷积核组成的小网络,还有FPN,SSD里面的各种变种,都有增加感受野的多样性来提升性能的路子。感受野不同,对不同大小的目标的特征提取和表达能力就不同,一般是特征图上感受野大的像素更能代表大的目标上面提取的信息,感受野小的像素,只能看到大目标的一部分;反过来想,感受野大的像素,看到的视野太大,对于小目标就掺杂了太多的冗余信息和噪音。所以,使用不同分辨率的感受野,丰富网络的感受野来提升网络,让大感受野处理大目标,小感受野处理小目标,各司其职,来提升网络性能也就成了很多网络设计的自然手段了。

三、注意力机制中的各种"域"

1. “软注意力”与“硬注意力”

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

这种思想,进而演化成两种不同类型的注意力,一种是软注意力(soft attention),另一种则是强注意力(hard attention)

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

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

为了更清楚地介绍计算机视觉中的注意力机制,这篇文章将从注意力域(attention domain)的角度来分析几种注意力的实现方法。其中主要是三种注意力域,空间域(spatial domain),通道域(channel domain),混合域(mixed domain)。

还有另一种比较特殊的强注意力实现的注意力域,时间域(time domain),但是因为强注意力是使用reinforcement learning来实现的,训练起来有所不同,所以之后再详细分析。

2. 空间域(Spatial Domain)

设计思路:

Spatial Transformer Networks(STN)模型是15年NIPS上的文章,这篇文章通过注意力机制,将原始图片中的空间信息变换到另一个空间中并保留了关键信息。

这篇文章的思想非常巧妙,因为卷积神经网络中的池化层(pooling layer)直接用一些max pooling 或者average pooling 的方法,将图片信息压缩,减少运算量提升准确率。

但是这篇文章认为之前pooling的方法太过于暴力,直接将信息合并会导致关键信息无法识别出来,所以提出了一个叫空间转换器(spatial transformer)的模块,将图片中的的空间域信息做对应的空间变换,从而能将关键的信息提取出来。

在这里插入图片描述
比如这个直观的实验图:

(a)列是原始的图片信息,其中第一个手写数字7没有做任何变换,第二个手写数字5,做了一定的旋转变化,而第三个手写数字6,加上了一些噪声信号;

(b)列中的彩色边框是学习到的spatial transformer的框盒(bounding box),每一个框盒其实就是对应图片学习出来的一个spatial transformer;

©列中是通过spatial transformer转换之后的特征图,可以看出7的关键区域被选择出来,5被旋转成为了正向的图片,6的噪声信息没有被识别进入。

最终可以通过这些转换后的特征图来预测出(d)列中手写数字的数值。

spatial transformer其实就是注意力机制的实现,因为训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换而被框盒提取出来。

3. 通道域(Channel Domain)

设计思路:

通道域注意力机制原理很简单,我们可以从基本的信号变换的角度去理解。信号系统分析里面,任何一个信号其实都可以写成正弦波的线性组合,经过时频变换之后,时域上连续的正弦波信号就可以用一个频率信号数值代替了。

在这里插入图片描述

信号时频分解图

在卷积神经网络中,每一张图片初始会由(R,G,B)三通道表示出来,之后经过不同的卷积核之后,每一个通道又会生成新的信号,比如图片特征的每个通道使用64核卷积,就会产生64个新通道的矩阵(H,W,64),H,W分别表示图片特征的高度和宽度。

每个通道的特征其实就表示该图片在不同卷积核上的分量,类似于时频变换,而这里面用卷积核的卷积类似于信号做了傅里叶变换,从而能够将这个特征一个通道的信息给分解成64个卷积核上的信号分量。

图片
既然每个信号都可以被分解成核函数上的分量,产生的新的64个通道对于关键信息的贡献肯定有多有少,如果我们给每个通道上的信号都增加一个权重,来代表该通道与关键信息的相关度的话,这个权重越大,则表示相关度越高,也就是我们越需要去注意的通道了。

4. 混合域

了解前两种注意力域的设计思路后,简单对比一下。首先,空间域的注意力是忽略了通道域中的信息,将每个通道中的图片特征同等处理,这种做法会将空间域变换方法局限在原始图片特征提取阶段,应用在神经网络层其他层的可解释性不强。

而通道域的注意力是对一个通道内的信息直接全局平均池化,而忽略每一个通道内的局部信息,这种做法其实也是比较暴力的行为。所以结合两种思路,就可以设计出混合域的注意力机制模型[8]。

设计思路:

这篇文章中提出的注意力机制是与深度残差网络(Deep Residual Network)相关的方法,基本思路是能够将注意力机制应用到ResNet中,并且使网络能够训练的比较深。

文章中注意力的机制是软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。

正如之前说的,中提出的注意力mask,不仅仅只是对空间域或者通道域注意,这种mask可以看作是每一个特征元素(element)的权重。通过给每个特征元素都找到其对应的注意力权重,就可以同时形成了空间域和通道域的注意力机制。

很多人看到这里就会有疑问,这种做法应该是从空间域或者通道域非常自然的一个过渡,怎么做单一域注意力的人都没有想到呢?原因有:

如果你给每一个特征元素都赋予一个mask权重的话,mask之后的信息就会非常少,可能直接就破坏了网络深层的特征信息;

另外,如果你可以加上注意力机制之后,残差单元(Residual Unit)的恒等映射(identical mapping)特性会被破坏,从而很难训练。

所以该文章的注意力机制的创新点在于提出了残差注意力学习(residual attention learning),不仅只把mask之后的特征张量作为下一层的输入,同时也将mask之前的特征张量作为下一层的输入,这时候可以得到的特征更为丰富,从而能够更好的注意关键特征。

5.时间域注意力

这个概念其实比较大,因为计算机视觉只是单一识别图片的话,并没有时间域这个概念,但是这篇文章中,提出了一种基于递归神经网络(Recurrent Neural Network,RNN)的注意力机制识别模型。

RNN模型比较适合的场景是数据具有时序特征,比如使用RNN产生注意力机制做的比较好的是在自然语言处理的问题上。因为自然语言处理的是文本分析,而文本产生的背后其实是有一个时序上的关联性,比如一个词之后还会跟着另外一个词,这就是一个时序上的依赖关联性。

而图片数据本身,并不具有天然的时序特征,一张图片往往是一个时间点下的采样。但是在视频数据中,RNN就是一个比较好的数据模型,从而能够使用RNN来产生识别注意力

特意将RNN的模型称之为时间域的注意力,是因为这种模型在前面介绍的空间域,通道域,以及混合域之上,又新增加了一个时间的维度。这个维度的产生,其实是基于采样点的时序特征

Recurrent Attention Model 中将注意力机制看成对一张图片上的一个区域点的采样,这个采样点就是需要注意的点。而这个模型中的注意力因为不再是一个可以微分的注意力信息,因此这也是一个强注意力(hard attention)模型。这个模型的训练是需要使用增强学习(reinforcementlearning)来训练的,训练的时间更长。

这个模型更需要了解的并不是RNN注意力模型,因为这个模型其实在自然语言处理中介绍的更详细,更需要了解的是这个模型的如何将图片信息转换成时序上的采样信号的:

这个是模型中的关键点,叫Glimpse Sensor,有大佬翻译为扫视器,这个sensor的关键点在于先确定好图片中需要关注的点(像素),这时候这个sensor开始采集三种信息,信息量是相同的,一个是非常细节(最内层框)的信息,一个是中等的局部信息,一个是粗略的略缩图信息。

这三个采样的信息是在 l t − 1 l_{t-1} lt1位置中产生的图片信息,而下一个时刻,随着t的增加,采样的位置又开始变化,至于l随着t该怎么变化,这就是需要使用增强学习来训练的东西了。

有关RNN做attention的,还是应该去了解自然语言处理,如机器翻译中的做法,这里就不再继续深入介绍,想深入了解的,推荐阅读Attention模型方法综述。

四、参考文献

CV中的注意力机制https://zhuanlan.zhihu.com/p/83221558
计算机视觉中的注意力机制(Visual Attention)https://mp.weixin.qq.com/s/KKlmYOduXWqR74W03Kl-9A

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/366850
推荐阅读
相关标签
  

闽ICP备14008679号