Spatial Attention

Attention 机制

所谓Attention机制,便是聚焦于局部信息的机制。当我们再看一样东西时,我们当前时刻关注的一定是我们当前正在看的东西的某一个地方。随着任务的变化,注意力区域往往会发生变化。

面对上面这张图,如果从整体上看,只看到了很多的车,但仔细一看会发现每辆车的车牌号不同,汽车厂家也不同。

图中除了汽车之外的信息均是无用信息,也对目标识别网络起不到作用。Attention机制便是要找到这些对训练最有用的信息。

1. 基于Attention的显著目标检测

和注意力机制相伴而生的一个任务是显著目标检测,即salient object detection。它的输入是一张图,输出是一张概率图,概率越大的地方,获得人眼关注的概率越大。典型的显著图目标检测图如下:

左侧图像为显著图,其中在头部和身体概率最大,远处的门也有一定的概率,这就是左侧图像中有用的信息。右侧图中为显著性目标检测图像,将关注的重点人突出显示出来。

显著目标检测需要一个数据集,而此数据集的收集便是通过追踪多个实验者的眼球在一定时间内的注意力方向进行平均得到,典型的步骤如下:

(1)让被测试者观察图。

(2)用eye tracker记录眼睛的注意力位置。

(3)对所有测试者的注意力位置使用高斯滤波进行综合。

(4)结果以0~1的概率记录。

于是得到下面这样的图,第二行是眼球追踪结果,第三行是显著目标概率图。

上面讲述的都是空间上的注意力机制,及关注的是不同空间位置,而在CNN结构中,还有不同的特征通道,因此不同特征通道也有类似的原理。

2. Attention模型框架

注意力机制的本质就是定位到感兴趣的信息,抑制无用信息,结果通常都是以概率图或者概率特征向量的形式展示,从原理上来说,主要分为空间注意力模型,通道注意力模型,空间和通道混合注意力模型三种,这里不区分soft和hard attention。

2.1 空间注意力模型(spatial attention)

不是图像中所有的区域对任务的贡献都是同样重要的,只有任务相关的区域才是需要关心的,比如分类任务的主体,空间注意力模型就是寻找网络中最重要的部位进行处理。

在这里给大家介绍两个具有代表性的模型,第一个就是Google DeepMind提出的STN网络(Spatial Transformer Network[1])。它通过学习输入的形变,从而完成适合任务的预处理操作,是一种基于空间的Attention模型,网络结构如下:

这里的Localization Net用于生成仿射变换系数,输入是C×H×W维的图像,输出是一个空间变换系数,它的大小根据要学习的变换类型而定,如果是仿射变换,则是一个6维向量。

这样的一个网络要完成的效果如下图:

即定位到目标的位置,然后进行旋转等操作,使得输入样本更加容易学习。

相比于Spatial Transformer Networks 一步完成目标的定位和仿射变换调整,Dynamic Capacity Networks[2]则采用了两个子网络,分别是低性能的子网络(coarse model)和高性能的子网络(fine model)。低性能的子网络(coarse model)用于对全图进行处理,定位感兴趣区域,如下图中的操作fc。高性能的子网络(fine model)则对感兴趣区域进行精细化处理,如下图的操作ff。两者共同使用,可以获得更低的计算代价和更高的精度。

由于在大部分情况下我们感兴趣的区域只是图像中的一小部分,因此空间注意力的本质就是定位目标并进行一些变换或者获取权重。

2.2 通道注意力机制

对于输入2维图像的CNN来说,一个维度是图像的尺度空间,即长宽,另一个维度就是通道,因此基于通道的Attention也是很常用的机制。

SENet(Sequeeze and Excitation Net)[3]是2017届ImageNet分类比赛的冠军网络,本质上是一个基于通道的Attention模型,它通过建模各个特征通道的重要程度,然后针对不同的任务增强或者抑制不同的通道,原理图如下:

在正常的卷积操作后分出了一个旁路分支,首先进行Squeeze操作(即图中Fsq(·)),它将空间维度进行特征压缩,即每个二维的特征图变成一个实数,相当于具有全局感受野的池化操作,特征通道数不变。

然后是Excitation操作(即图中的Fex(·)),它通过参数w为每个特征通道生成权重,w被学习用来显式地建模特征通道间的相关性。在文章中,使用了一个2层bottleneck结构(先降维再升维)的全连接层+Sigmoid函数来实现。

得到了每一个特征通道的权重之后,就将该权重应用于原来的每个特征通道,基于特定的任务,就可以学习到不同通道的重要性。

将其机制应用于若干基准模型,在增加少量计算量的情况下,获得了更明显的性能提升。作为一种通用的设计思想,它可以被用于任何现有网络,具有较强的实践意义。而后SKNet[4]等方法将这样的通道加权的思想和Inception中的多分支网络结构进行结合,也实现了性能的提升。

通道注意力机制的本质,在于建模了各个特征之间的重要性,对于不同的任务可以根据输入进行特征分配,简单而有效。

2.3 空间和通道注意力机制的融合

前述的Dynamic Capacity Network是从空间维度进行Attention,SENet是从通道维度进行Attention,自然也可以同时使用空间Attention和通道Attention机制。

CBAM(Convolutional Block Attention Module)[5]是其中的代表性网络,结构如下:

 通道方向的Attention建模的是特征的重要性,结构如下:

同时使用最大pooling和均值pooling算法,然后经过几个MLP层获得变换结果,最后分别应用于两个通道,使用sigmoid函数得到通道的attention结果。

空间方向的Attention建模的是空间位置的重要性,结构如下:

首先将通道本身进行降维,分别获取最大池化和均值池化结果,然后拼接成一个特征图,再使用一个卷积层进行学习。

这两种机制,分别学习了通道的重要性和空间的重要性,还可以很容易地嵌入到任何已知的框架中。

除此之外,还有很多的注意力机制相关的研究,比如残差注意力机制,多尺度注意力机制,递归注意力机制等。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值