目录

前言

论文

注意力机制

Squeeze-and-Excitation (SE) 模块

第一步Squeeze(Fsq)

第二步excitation(Fex)

SE注意力机制应用于inception和ResNet


前言

在深度学习领域,CNN分类网络的发展对其它计算机视觉任务如目标检测和语义分割都起到至关重要的作用,因为检测和分割模型通常是构建在CNN分类网络(称为backbone)之上。提到CNN分类网络,我们所熟知的是VGG,ResNet,Inception,DenseNet等模型,它们的效果已经被充分验证,而且被广泛应用在各类计算机视觉任务上。这里我们介绍一篇CVPR2017的文章SENet,它赢得了最后一届ImageNet 2017竞赛分类任务的冠军。重要的一点是SENet思路很简单,很容易扩展在已有网络结构中。

论文

https://arxiv.org/abs/1709.01507 2017

注意力机制

注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。上述机制通常被称为注意力机制。人类视网膜不同的部位具有不同程度的信息处理能力,即敏锐度(Acuity),只有视网膜中央凹部位具有最强的敏锐度。为了合理利用有限的视觉信息处理资源,人类需要选择视觉区域中的特定部分,然后集中关注它。例如,人们在阅读时,通常只有少量要被读取的词会被关注和处理。

注意力机制最早用于自然语言处理领域,后来再计算机视觉领域(CV)也得到广泛的应用,注意力机制被引入视觉信息处理。注意力机制没有严格的数学定义,例如传统的局部图像特征提取、滑动窗口方法等都可以看作一种注意力机制。在神经网络中,注意力机制通常是一个额外的神经网络,能够硬性选择输入的某些部分,或者给输入的不同部分分配不同的权重。注意力机制能够从大量信息中筛选出重要的信息

在神经网络中引入注意力机制有很多方法,以卷积神经网络为例,可以在空间维度增加引入attention机制(例如inception网络的多尺度,让并联的卷积层有不同的权重),也可以在通道维度(channel)增加attention机制,当然也有混和维度即同时在空间维度和通道维度增加attention机制。

Squeeze-and-Excitation (SE) 模块

这篇论文就是通道维度(channel-wise)增加注意力机制,关键的两个操作是squeezeexcication,所以论文把这个attention结构命名为SE block,SE block 是为了显式地实现特征通道的相互依赖关系,就是说通过自动学习的方式(用另外一个新的神经网络实现)获取到每个特征通道的重要程度,然后用这个重要程度去给每一个特征通道赋予一个权重值,从而让神经网络重点关注某些特征通道,即提升对当前任务有用的特征通道并抑制对当前任务用处不大的特征通道

如上图中具体实现过程,先通过普通卷积Ftr得到channel为C的特征,然后进行以下两步操作:

第一步Squeeze(Fsq)

通过全局池化(global pooling),将每个通道的二维特征(H*W)压缩为1个实数,论文是通过平均池化的方式实现。这属于空间维度的一种特征压缩,因为这个实数是根据二维特征所有的值算出来的,所以在某种程度上具有全局的感受野,通道数不变,因此Squeeze后变为1*1*C。

第二步excitation(Fex)

通过参数来为每个特征通道生成一个权重值,这个权重值是如何生成就很关键了,论文是通过两个全连接层组成一个Bottleneck结构去建模通道间的相关性,并输出和输入特征同样数目的权重值。

最后excitation完后接上一个操作,Scale(Fscale),将前面得到的归一化权重加权到每个通道的特征上。论文中的方法是用乘法,逐通道乘以权重系数,完成再通道维度上引入attention机制。

通过上图可以理解他的实现过程,通过对卷积的到的feature map进行处理,得到一个和通道数一样的一维向量作为每个通道的评价分数,然后将改分数分别施加到对应的通道上,得到其结果。

SE注意力机制应用于inception和ResNet

SE模块的灵活性在于它可以直接应用现有的网络结构中。这里以Inception和ResNet为例。对于Inception网络,没有残差结构,这里对整个Inception模块应用SE模块。对于ResNet,SE模块嵌入到残差结构中的残差学习分支中,如下图:

同样地,SE模块也可以应用在其它网络结构,如ResNetXt,Inception-ResNet,MobileNet和ShuffleNet中。这里给出SE-ResNet-50和SE-ResNetXt-50的具体结构,如下表所示:

增加了SE模块后,模型参数以及计算量都会增加,这里以SE-ResNet-50为例,对于模型参数增加量为:

其中r为降维系数,S表示stage数量, 为第s个stage的通道数, 为第s个stage的重复block量。当r=16时,SE-ResNet-50只增加了约10%的参数量。但计算量(GFLOPS)却增加不到1%。

参考:最后一届ImageNet冠军模型:SENet - 知乎

Attention注意力机制学习(一)------->SENet相关推荐

  1. Attention注意力机制学习(二)------->一些注意力网络整理

    SKNet--SENet孪生兄弟篇(2019) 论文 Selective Kernel Networks https://arxiv.org/abs/1903.06586  2019年 介绍 SKNe ...

  2. Attention注意力机制学习(三)------->从Attention到Transformer再到BERT

    关于提取特征向量这件事 视觉图像领域提特征向量的方式: 古典方式:SIFI/HOG算法 现代方式:VGG.ResNet.MobileNet等网络 自然语言处理文本领域提特征向量的方式: 较早时期:N- ...

  3. 图片的描述生成任务、使用迁移学习实现图片的描述生成过程、CNN编码器+RNN解码器(GRU)的模型架构、BahdanauAttention注意力机制、解码器端的Attention注意力机制

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  4. 关于《注意力模型--Attention注意力机制》的学习

    关于<注意力模型--Attention注意力机制>的学习 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程.在github上找到一份基于 ...

  5. Transformer、多头注意力机制学习笔记:Attention is All You Need.

    文章目录 相关参考连接: https://blog.csdn.net/hpulfc/article/details/80448570 https://blog.csdn.net/weixin_4239 ...

  6. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  7. 机器翻译 MXNet(使用含注意力机制的编码器—解码器,即 Encoder编码器-Decoder解码器框架 + Attention注意力机制)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  8. 基于Seq2Seq的中文聊天机器人编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. DL之Attention:Attention注意力机制的简介、应用领域之详细攻略

    DL之Attention:Attention注意力机制的简介.应用领域之详细攻略 目录 Attention的简介 1.Why Attention? 2.Attention机制的分类 3.Attenti ...

最新文章

  1. 在Windows 8.1上使用Fiddler重定向http请求进行前端调试
  2. 查看系统信息命令:uname
  3. php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7
  4. 你的gpu驱动程序不满足_英特尔图形驱动程序现在在Windows/Linux之间共享约60%的代码库...
  5. 让 Ocelot 与 asp.net core “共存”
  6. 第四节:教你如何快速让浏览器兼容ES6特性
  7. iFrame can't save session cookie
  8. mysql怎么模拟死锁_mysql 模拟产生死锁
  9. if __name__ == '__main__' 的正确理解
  10. php l框架,一个很简单的PHP框架lyue
  11. 一键搞定JavaEE应用 JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0 9版
  12. 传智播客毕向东java基础全套视频教程_传智播客毕向东JAVA基础教程全套视频教程(324课)...
  13. 二级python有必要买书吗_清华大学出版社-图书详情-《二级Python编程指南》
  14. 微信小程序 服务通知之订阅消息授权公共方法
  15. cst自学教材_CST微波工作室入门与应用详解
  16. matlab计算可靠性过程,基于MATLAB的蒙特卡洛方法对可靠度的计算
  17. 全球首次!32岁青年科学今天发现!道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  18. 微信小程序——获取用户个人信息
  19. java微服务项目简历_微服务框架-SpringCloud简介
  20. 定义一个复数类Complex,重载运算符“+”,“ -”,“*”,“/”使之能用于计算两个复数的加减乘除。

热门文章

  1. 临界区,互斥,竞争条件
  2. Python的 sys.path.append()、os.path.dirname(os.path.abspath(file))、使用os模块动态获取目录或文件路径
  3. 公司利益至上,代替把公司当自己家
  4. xinxin -制作网页
  5. TwainCapabilities
  6. Chrome浏览器安装 Restlet Client插件
  7. 【Fusion360】常用快捷键和技巧
  8. CVE-2016-3081
  9. 【C语言】 链表 超详细解析
  10. SpringBoot集成swagger-ui以及swagger分组显示