【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用

 

 

 

 

你们好,这是专栏《AI不惑境》的第七篇文章,讲述计算机视觉中的注意力(attention)机制。面试

 

进入到不惑境界,就是向高手迈进的开始了,在这个境界须要本身独立思考。若是说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能再也不有答案,更多的是激发你们一块儿来思考。算法

 

做者&编辑 | 言有三网络

 

 

 

Attention机制在近几年来在图像,天然语言处理等领域中都取得了重要的突破,被证实有益于提升模型的性能。Attention机制自己也是符合人脑和人眼的感知机制,此次咱们主要以计算机视觉领域为例,讲述Attention机制的原理,应用以及模型的发展。架构

 

 

 

 

 

1 Attention机制与显著图框架

 

1.1 何为Attention机制机器学习

 

所谓Attention机制,即是聚焦于局部信息的机制,好比图像中的某一个图像区域。随着任务的变化,注意力区域每每会发生变化。函数

 

640?wx_fmt=jpeg

 

面对上面这样的一张图,若是你只是从总体来看,只看到了不少人头,可是你拉近一个一个仔细看就了不起了,都是天才科学家。性能

 

图中除了人脸以外的信息其实都是无用的,也作不了什么任务,Attention机制即是要找到这些最有用的信息,能够想见最简单的场景就是从照片中检测人脸了。学习

 

1.2 基于Attention的显著目标检测测试

 

和注意力机制相伴而生的一个任务即是显著目标检测,即salient object detection。它的输入是一张图,输出是一张几率图,几率越大的地方,表明是图像中重要目标的几率越大,即人眼关注的重点,一个典型的显著图以下:

 

640?wx_fmt=jpeg

 

右图就是左图的显著图,在头部位置几率最大,另外腿部,尾巴也有较大几率,这就是图中真正有用的信息。

 

显著目标检测须要一个数据集,而这样的数据集的收集即是经过追踪多个实验者的眼球在必定时间内的注意力方向进行平均获得,典型的步骤以下:

 

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

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

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

(4) 结果以0~1的几率进行记录。

 

因而就能获得下面这样的图,第二行是眼球追踪结果,第三行就是显著目标几率图。

 

640?wx_fmt=jpeg

 

上面讲述的都是空间上的注意力机制,即关注的是不一样空间位置,而在CNN结构中,还有不一样的特征通道,所以不一样特征通道也有相似的原理,下面一块儿讲述。

 

 

 

 

 

 

2 Attention模型架构

 

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

 

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

 

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

 

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

 

640?wx_fmt=png

 

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

 

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

 

640?wx_fmt=png

 

即定位到目标的位置,而后进行旋转等操做,使得输入样本更加容易学习。这是一种一步调整的解决方案,固然还有不少迭代调整的方案,感兴趣能够去有三知识星球星球中阅读。

 

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

 

640?wx_fmt=png

 

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

 

2.2 通道注意力机制

 

对于输入2维图像的CNN来讲,一个维度是图像的尺度空间,即长宽,另外一个维度就是通道,所以基于通道的Attention也是很经常使用的机制。

 

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

 

640?wx_fmt=png

 

在正常的卷积操做后分出了一个旁路分支,首先进行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]是其中的表明性网络,结构以下:

 

640?wx_fmt=png

 

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

 

640?wx_fmt=png

 

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

 

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

 

640?wx_fmt=png

 

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

 

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

 

除此以外,还有不少的注意力机制相关的研究,好比残差注意力机制,多尺度注意力机制,递归注意力机制等。

 

感兴趣的同窗能够去咱们知识星球中阅读相关的网络结构主题。

 

【知识星球】超3万字的网络结构解读,学习必备

 

640?wx_fmt=jpeg

 

640?wx_fmt=jpeg

 

 

 

 

 

 

3 Attention机制典型应用场景

 

从原理上来讲,注意力机制在全部的计算机视觉任务中都能提高模型性能,可是有两类场景尤为受益

 

3.1 细粒度分类

 

关于细粒度分类的基础内容,能够回顾公众号的往期文章。

 

【图像分类】细粒度图像分类是什么,有什么方法,发展的怎么样

 

640?wx_fmt=png

 

咱们知道细粒度分类任务中真正的难题在于如何定位到真正对任务有用的局部区域,如上示意图中的鸟的头部。Attention机制恰巧原理上很是合适,文[1],[6]中都使用了注意力机制,对模型的提高效果很明显。

 

3.2 显著目标检测/缩略图生成/自动构图

 

咱们又回到了开头,没错,Attention的本质就是重要/显著区域定位,因此在目标检测领域是很是有用的。

 

640?wx_fmt=jpeg

 

640?wx_fmt=jpeg

 

上图展现了几个显著目标检测的结果,能够看出对于有显著目标的图,几率图很是聚焦于目标主体,在网络中添加注意力机制模块,能够进一步提高这一类任务的模型。

 

除此以外,在视频分析,看图说话等任务中也比较重要,相关内容将在有三AI知识星球中每日更新。

 

 

 

 

参考文献

[1] Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in neural information processing systems. 2015: 2017-2025.

[2] Almahairi A, Ballas N, Cooijmans T, et al. Dynamic capacity networks[C]//International Conference on Machine Learning. 2016: 2549-2558.

[3] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.

[4] Li X, Wang W, Hu X, et al. Selective Kernel Networks[J]. 2019.

[5] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19.

[6] Fu J, Zheng H, Mei T. Look closer to see better: Recurrent attention convolutional neural network for fine-grained image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4438-4446.

 

 

 

 

总结

 

 

 

 

 

 

注意力机制是一个原理简单而有效的机制,符合人眼的视觉感知原理,在实现上也容易嵌入当前的主流模型架构,是值得采用和学习的技术。

 

下期预告:深度学习中的无监督学习。

 

 

 

 

 

 

有三AI夏季划

 

 

 

 

640?wx_fmt=png

 

640?wx_fmt=png

 

暑期正浓,有三AI夏季划进行中,相比春季划内容更难更全,且更加贴近工业界实战,目标是系统性成长为中级CV算法工程师。这一次的报名周期会持续到国庆,请有须要的同窗持续关注,点击图片阅读详细信息。

 

 

 

转载文章请后台联系

侵权必究

 

 

 

640?wx_fmt=png

 

 

 

 

 

640?wx_fmt=png

 

 

640?wx_fmt=png

 

 

 

 

 

 

往期修行境界