计算机视觉中的注意力机制
计算机视觉中的注意力机制
- 历史背景
Attention机制在近几年来在图像,自然语言处理等领域中都取得了重要的突破,被证明有益于提高模型的性能。Attention机制本身也是符合人脑和人眼的感知机制。
- 简介
Attention机制,便是聚焦于局部信息的机制,比如图像中的某一个图像区域。随着任务的变化,注意力区域往往会发生变化。
如上图所示,如果从整体上来看,只看到很多头,但近距离看就会识别出很多科学家,在识别人物属性的时候(比如他是谁),除了人脸以外,其他部分都是无用的,Attention机制就是为了找到这些最有用的信息,最简单的方法就是识别照片的人脸。
- 基于Attention的显著性目标检测
目标检测输入一张图片,输出一张概率图,概率越大的敌方,代表使图像中重要目标的概率越大,即人眼关注的重点:
右图就是左图的概率图,在头部位置概率最大,同时,腿部和尾巴概率也比较大(相对有用的信息)
- Attention模型网络架构
注意力机制本质就是定位感兴趣的信息,抑制无用信息,结果通常都是以概率图或者概率特征向量的形式展示,主要包括空间注意力模型,通道注意力模型,两者混合的注意力模型三种。
4.1空间注意力模型
不是图像中所有的区域对任务的贡献都是同样重要的,只有任务相关的区域才是需要关心的,比如分类任务的主体,空间注意力模型就是寻找网络中最重要的部位进行处理。
介绍两个具有代表性的模型:
Google DeepMind提出的STN网络(Spatial Transformer Network)。它通过学习输入的形变,从而完成适合任务的预处理操作,是一种基于空间的Attention模型,网络结构如下:
这里的Localization Net用于生成仿射变换系数,输入是C×H×W维的图像,输出是一个空间变换系数,它的大小根据要学习的变换类型而定,如果是仿射变换,则是一个6维向量。
这样的一个网络要完成的效果如下图:
即定位到目标的位置,然后进行旋转等操作,使得输入样本更加容易学习。
Dynamic Capacity Networks则采用了两个子网络,分别是低性能的子网络(coarse model)和高性能的子网络(fine model)。低性能的子网络(coarse model)用于对全图进行处理,定位感兴趣区域,如下图中的操作fc。高性能的子网络(fine model)则对感兴趣区域进行精细化处理,如下图的操作ff。两者共同使用,可以获得更低的计算代价和更高的精度。
由于在大部分情况下我们感兴趣的区域只是图像中的一小部分,因此空间注意力的本质就是定位目标并进行一些变换或者获取权重。
4.2)通道注意力机制
对于输入2维图像的CNN来说,一个维度是图像的尺度空间,即长宽,另一个维度就是通道,因此基于通道的Attention也是很常用的机制。
SENet(Sequeeze and Excitation Net)是2017届ImageNet分类比赛的冠军网络,本质上是一个基于通道的Attention模型,它通过建模各个特征通道的重要程度,然后针对不同的任务增强或者抑制不同的通道,原理图如下。
在正常的卷积操作后分出了一个旁路分支,首先进行Squeeze操作(即图中Fsq(·)),它将空间维度进行特征压缩,即每个二维的特征图变成一个实数,相当于具有全局感受野的池化操作,特征通道数不变。
然后是Excitation操作(即图中的Fex(·)),它通过参数w为每个特征通道生成权重,w被学习用来显式地建模特征通道间的相关性。在文章中,使用了一个2层bottleneck结构(先降维再升维)的全连接层+Sigmoid函数来实现。
得到了每一个特征通道的权重之后,就将该权重应用于原来的每个特征通道,基于特定的任务,就可以学习到不同通道的重要性。
将其机制应用于若干基准模型,在增加少量计算量的情况下,获得了更明显的性能提升。作为一种通用的设计思想,它可以被用于任何现有网络,具有较强的实践意义。而后SKNet等方法将这样的通道加权的思想和Inception中的多分支网络结构进行结合,也实现了性能的提升。
通道注意力机制的本质,在于建模了各个特征之间的重要性,对于不同的任务可以根据输入进行特征分配,简单而有效。
未完待续。。。。。。。