HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

计算机视觉中注意力机制原理及其模型发展和应用

  • 2019-08-23
  • 本文字数:3342 字

    阅读完需:约 11 分钟

计算机视觉中注意力机制原理及其模型发展和应用


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

Attention 机制与显著图

何为 Attention 机制

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



面对上面这样的一张图,如果你只是从整体来看,只看到了很多人头,但是你拉近一个一个仔细看就了不得了,都是天才科学家。


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

基于 Attention 的显著目标检测

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



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


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


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


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


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


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


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



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

Attention 模型架构

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

空间注意力模型(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 维图像的 CNN 来说,一个维度是图像的尺度空间,即长宽,另一个维度就是通道,因此基于通道的 Attention 也是很常用的机制。


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



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


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


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


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


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

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

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


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



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



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


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



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


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


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

Attention 机制典型应用场景

从原理上来说,注意力机制在所有的计算机视觉任务中都能提升模型性能,但是有两类场景尤其受益。

细粒度分类

关于细粒度分类的基础内容,可以参考。


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



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

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

我们又回到了开头,没错,Attention 的本质就是重要/显著区域定位,所以在目标检测领域是非常有用的。




上图展示了几个显著目标检测的结果,可以看出对于有显著目标的图,概率图非常聚焦于目标主体,在网络中添加注意力机制模块,可以进一步提升这一类任务的模型。


参考资料:


[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》作者,本文所有图片均源自言有三的知乎。

原文链接:

https://zhuanlan.zhihu.com/p/76072364


2019-08-23 00:507566

评论

发布
暂无评论
发现更多内容

Flink CDC 在京东的探索与实践

Apache Flink

大数据 flink 实时计算

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java你猿哥

Java 数据库 JVM java编程 Java性能优化

自阿里P8爆出内部1031道java面试题后,在Boss直聘狂拿千份Offer

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

GitHub程序调优「黑马」!阿里大牛的Java性能优化实战笔记已上线

做梦都在改BUG

Java 面试 性能优化 性能调优

selenium源码通读·4 |webdriver/common分析

Python 源码 测试 自动化测试 selenium

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此

Openlab_cosmoplat

开源社区 ChatGPT

iOS16新特性 | 灵动岛适配开发与到家业务场景结合的探索实践

京东科技开发者

ios 京东云 灵动岛 企业号 4 月 PK 榜

历史性的时刻!OpenTiny 跨端、跨框架组件库正式升级 TypeScript,10 万行代码重获新生!

华为云开源

typescript Vue 组件库

面试官:说说MySQL主从复制原理

Java永远的神

MySQL 数据库 程序员 面试 主从复制

selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析

Python 源码 测试 自动化测试 selenium

解决事务隔离产生问题的MVCC

Java你猿哥

Java ssm 架构师 MVCC

一文弄懂访问者模式

小小怪下士

Java 程序员 设计模式

火山引擎数智平台协助洞察美图类APP新增长 付费用户转化超过124%

字节跳动数据平台

大数据 增长 产品增长 企业号 4 月 PK 榜 美图

深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等

汀丶人工智能

人工智能 机器学习 深度学习 激活函数

解决事务隔离产生问题的MVCC

做梦都在改BUG

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java你猿哥

spring Spring Cloud ssm 架构师

阿里内部热捧“Spring全线笔记”,不止是全家桶,太完整了

Java你猿哥

spring Spring Cloud Spring Boot Spring MVC

Seal AppManager发布:基于平台工程理念的全新应用部署管理体验

SEAL安全

应用部署 企业号 4 月 PK 榜 Seal软件 SealAppManager

软件测试/测试开发丨ChatGPT训练营来,手把手带你玩转ChatGPT

测试人

软件测试 自动化测试 测试开发 ChatGPT

对标大厂的技术派方案设计,带你了解一个项目从0到1实现的全过程

Java你猿哥

Java 架构 ssm 项目设计

数据开发提效有秘诀!离线开发BatchWorks 六大典型场景拆解

袋鼠云数栈

大数据 离线开发

物流路由线路配载前端算法逻辑实现方案

京东科技开发者

前端 京东云 京东物流 企业号 4 月 PK 榜

Spring全家桶思维笔记导图(Spring Boot+Cloud+IOC+AOP+MVC等)

Java你猿哥

spring Spring Cloud Spring Boot aop ioc

看了我常用的IDEA插件,同事也开始悄悄安装了

Java你猿哥

Java 程序员 ssm IDEA 架构师

MyBatis整合Springboot多数据源实现

做梦都在改BUG

Java Spring Boot mybatis

春风送暖,好久不见

BinTools图尔兹

版本发布

PC GWP-ASan方案原理 | 堆破坏问题排查实践

字节跳动终端技术

问题排查 PC

从内核源码看 slab 内存池的创建初始化流程

bin的技术小屋

操作系统 内存管理 Linux Kenel 内核 动态内存池

GPTCache:LLM 应用必备的【省省省】利器

Zilliz

Milvus Zilliz ChatGPT LLM 语义检索

博睿学院 | 本周四:OpenTelemetry技术在数据标准化中应用实践

博睿数据

可观测性 智能运维 博睿数据 前沿技术 博睿学院

重磅官宣,OpenHarmony开发者大会来了!

OpenHarmony开发者

OpenHarmony

计算机视觉中注意力机制原理及其模型发展和应用_AI&大模型_言有三_InfoQ精选文章