计算机视觉技术self-attention最新进展

几篇较新的计算机视觉Self-Attention

Attention注意力,起源于Human visual system(HVS),个人定义的话,应该类似于 外界给一个刺激Stimuli,然后HVS会第一时间产生对应的saliency map,注意力对应的应该就是这个显著性区域。

这其中就涉及很多bottom-up 及top-down 的physiological 原理~总的来说,就是 区域权值学习问题:

1. Hard-attention,就是0/1问题,哪些区域是被attentioned,哪些区域不关注

2. Soft-attention,[0,1]间连续分布问题,每个区域被关注的程度高低,用0~1的score表示

Self-attention自注意力,就是feature map 间的自主学习,分配权重(可以是spatial,可以是temporal,也可以是channel间)

[1] Non-local NN, CVPR2018

FAIR的杰作,主要inspired by 传统方法用non-local similarity来做图像denoise

主要思想也很简单,CNN中的convolution单元每次只关注邻域kernel size 的区域,就算后期感受野越来越大,终究还是局部区域的运算,这样就忽略了全局其他片区(比如很远的像素)对当前区域的贡献。

所以non-local blocks 要做的是,捕获这种long-range 关系:对于2D图像,就是图像中任何像素对当前像素的关系权值;对于3D视频,就是所有帧中的所有像素,对当前帧的像素的关系权值。

网络框架图也是简单粗暴:

文中有谈及多种实现方式,在这里简单说说在DL框架中最好实现的Matmul 方式:

1. 首先对输入的feature map X 进行线性映射(说白了就是1*1*1 卷积,来压缩通道数),然后得到θ,Φ,g特征

2. 通过reshape操作,强行合并上述的三个特征除通道数外的维度,然后对θ,Φ进行矩阵点乘操作,得到类似协方差矩阵的东西(这个过程很重要,计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系)

3. 然后对自相关特征 以列or以行(具体看矩阵g 的形式而定) 进行Softmax 操作,得到0~1的weights,这里就是我们需要的Self-attention 系数

4. 最后将attention系数,对应乘回特征矩阵g 中,然后再上扩channel 数,与原输入feature map X 残差一下,完整的bottleneck 

嵌入在action recognition 框架中的attention map 可视化效果:

图中的箭头表示,previous 若干帧中的某些像素 对最后图(当前帧)的脚关节像素的贡献关系。由于是soft-attention,其实每帧每个像素对对其有贡献关系,图中黄色箭头是把响应最大的关系描述出来。

总结

Pros:non-local blocks很通用的,容易嵌入在任何现有的2D 和3D 卷积网络里,来改善或者可视化理解相关的CV任务。比如前不久已有文章把non-local 用在 Video ReID [2]的任务里。

Cons:文中的结果建议把non-local 尽量放在靠前的层里,但是实际上做3D 任务,靠前的层由于temporal T 相对较大,构造θ,Φ及点乘操作那步,超多的参数,需要耗费很大的GPU Memory~ 可后续改善

[2] Interaction-aware Attention, ECCV2018

美图联合中科院的文章

这文章扯了很多Multi-scale 特征融合,讲了一堆story,然并卵;直接说重点贡献,就是在non-local block 的协方差矩阵基础上,设计了基于PCA 的新loss,更好地进行特征交互。作者认为,这个过程,特征会在channel维度进行更好的non-local interact,故称为Interaction-aware attention

那么问题来了,怎么实现 通过PCA来获得Attention weights呢?

文中不直接使用 协方差矩阵的特征值分解 来实现,而是使用下述等价形式:

根据上面公式约束,设计了Interaction-aware loss来增强channel间的non-local交互:

其中A 为需要学习的attention weights,X 为输入的feature map

整体的Attention Block框架图和non-local 基本一致:

~ 有点小区别是,在X 和Watten 点乘后,还加了个b 项,文中说这里可看作data central processing (subtracting mean) of PCA

动作识别的主网络就与non-local中直接使用I3D 不同,这里是使用类似TSN 的采样Segment形式输入,然后使用2D网络提特征,再统一在Attention block进行时空聚合

[3] CBAM: Convolutional Block Attention Module, ECCV2018

这货就是基于 SE-Net [5]中的Squeeze-and-Excitation module 来进行进一步拓展,

具体来说,文中把channel-wise attention 看成是教网络Look 'what’;而spatial attention 看成是教网络Look 'where',所以它比SE Module 的主要优势就多了后者

我们先看看SE-module:

流程:

1. 将输入特征进行Global AVE pooling,得到1*1* Channel 

2. 然后bottleneck特征交互一下,先压缩channel数,再重构回channel数

3. 最后接个sigmoid,生成channel 间0~1的attention weights,最后scale 乘回原输入特征

再看看CBAM :

Channel Attention Module,基本和SE-module 是一致的,就额外加入了Maxpool 的branch。在Sigmoid 前,两个branch 进行element-wise summation 融合。

Spatial Attention Module, 对输入特征进行channel 间的AVE 和Max pooling,然后concatenation,再来个7*7大卷积,最后Sigmoid

[4] CDANet, 2018

最近才在arXiv挂出来的,把Self-attention的思想用在图像分割,可通过long-range上下文关系更好地做到精准分割。

主要思想也是上述文章CBAM 和non-local 的融合变形:

把deep feature map进行spatial-wise self-attention,同时也进行channel-wise self-attetnion,最后将两个结果进行element-wise sum 融合。

这样做的好处是:

在CBAM 分别进行空间和通道self-attention的思想上,直接使用了non-local 的自相关矩阵Matmul 的形式进行运算,避免了CBAM 手工设计pooling,多层感知器 等复杂操作。

总的来说,上述几个Attention module很容易嵌入到现有的网络框架中,而CBAM 特别轻量级,也方便在端部署,也可再cascade一下temporal attention,放进video 任务里用~~

估计后续学术界会有很多基于它们的变形和应用,哈哈~

Reference:

[1] Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming He, Non-local Neural Networks, CVPR2018

[2]Xingyu Liao, Lingxiao He, Zhouwang Yang, Video-based Person Re-identification via 3D Convolutional Networks and Non-local Attention,2018

[3]Yang Du, Chunfeng Yuan, Bing Li, Lili Zhao, Yangxi Li, Weiming Hu,Interaction-aware Spatio-temporal Pyramid Attention Networks for Action Classification, ECCV2018

[4] CSanghyun Woo, Jongchan Park, Joon-Young Lee, In So Kweon, BAM: Convolutional Block Attention Module, ECCV2018

[5]Jie Hu, Li Shen, Gang Sun,Squeeze-and-Excitation Networks, ILSVRC 2017 image classification winner; CVPR 2018 Oral

[6]Jun Fu et al., Dual Attention Network for Scene Segmentation, 2018

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SIGAI学习与实践平台

计算机视觉技术self-attention最新进展

Attention注意力,起源于Human visual system(HVS),个人定义的话,应该类似于 外界给一个刺激Stimuli,然后HVS会第一时间产...

2294
来自专栏人工智能头条

斯坦福大学深度学习与自然语言处理第二讲:词向量

1793
来自专栏数据派THU

手把手教线性回归分析(附R语言实例)

本文为你介绍线性回归分析。 通常在现实应用中,我们需要去理解一个变量是如何被一些其他变量所决定的。 回答这样的问题,需要我们去建立一个模型。一个模型就是一个公式...

1.1K2
来自专栏人工智能头条

胡新辰:LSTM学习教程、资料以及最新进展介绍总结

3562
来自专栏AI科技评论

想了解递归神经网络?这里有一份入门教程

本文来自deeplearning4j,AI科技评论编辑。 递归神经网络是一类人工神经网络,用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,或用于识别传...

3203
来自专栏大数据挖掘DT机器学习

特征选择算法实战

数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数据挖掘 (DataMiriing),指的是从大型数据库或数据仓库中提取人...

3713
来自专栏人工智能

深度学习NLP最佳方法

2017年7月26日更新:有关其他上下文,HackerNews对此帖的讨论。

3899
来自专栏大数据挖掘DT机器学习

数据挖掘案例:基于 ReliefF和K-means算法的应用

.NET数据挖掘与机器学习 原文:http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html ...

3128
来自专栏大数据文摘

Scikit-learn玩得很熟了?这些功能你都知道吗?

1647
来自专栏机器之心

斯坦福博士韩松毕业论文:面向深度学习的高效方法与硬件

4329

扫码关注云+社区

领取腾讯云代金券