注意力机制BAM和CBAM详细解析(附代码)

点击上方“计算机视觉cv”便可“进入公众号”
node

重磅干货第一时间送达git

  • 论文题目①:BAM: Bottleneck Attention Module
  • 论文题目②:CBAM:CBAM: Convolutional Block Attention Module

Bottlenet attention Module(BAM)

依据

人看东西时不可能把注意力放在全部的图像上,会把焦点目光汇集在图像的重要物体上。所以,做者提出了BAM注意力机制,仿照人的眼睛聚焦在图像几个重要的点上。github

BAM介绍

在这项工做中,咱们把重心放在了Attention对于通常深度神经网络的影响上,咱们提出了一个简单可是有效的Attention模型—BAM,它能够结合到任何前向传播卷积神经网络中,咱们的模型经过两个分离的路径 channel和spatial, 获得一个Attention Map。web

BAM具体结构

对于给定的feature map ,BAM能够获得一个3D的Attention map ,计算refine feature map F' ,其中是逐元素相乘。微信

网络

其中, 是通道注意力; 是空间注意力。架构

channel attention branch

其中app

spatial attention branch

其中,f是卷积操做,1* 1表示filter size为1,其它相似。BN是batch normalization;3* 3是dilated convolution,即空洞卷积。编辑器

两种attention的结合方式

由一系列的实验可得,element-wise summation即逐元素相加perform是最好的。最后再经过sigmoid函数。具体能够参照下图:svg

Convolutional Block Attention Module(CBAM)

简介

做者提出了一个简单但有效的注意力模块 CBAM,给定一个中间特征图,咱们沿着空间和通道两个维度依次推断出注意力权重,而后与原特征图相乘来对特征进行自适应调整。因为 CBAM 是一个轻量级的通用模块,它能够无缝地集成到任何 CNN 架构中,额外开销忽略不计,而且能够与基本 CNN 一块儿进行端到端的训练。在不一样的分类和检测数据集上,将 CBAM 集成到不一样的模型中后,模型的表现都有了一致的提高,展现了其普遍的可应用性。

CBAM整体视图

CBAM结构介绍

做者将注意力过程分为两个独立的部分,通道注意力模块和空间注意力模块。这样不只能够节约参数和计算力,并且保证了其能够做为即插即用的模块集成到现有的网络架构中去。

通道注意力模块

特征的每个通道都表明着一个专门的检测器,所以,通道注意力是关注什么样的特征是有意义的。为了汇总空间特征,做者采用了全局平均池化和最大池化两种方式来分别利用不一样的信息。


输入是一个 H×W×C 的特征 F,咱们先分别进行一个空间的全局平均池化和最大池化获得两个 1×1×C 的通道描述。接着,再将它们分别送入一个两层的神经网络,第一层神经元个数为 C/r,激活函数为 Relu,第二层神经元个数为 C。这个两层的神经网络是共享的。而后,再将获得的两个特征相加后通过一个 Sigmoid 激活函数获得权重系数 Mc。最后,拿权重系数和原来的特征 F 相乘便可获得缩放后的新特征。

空间注意力模块

在通道注意力模块以后,咱们再引入空间注意力模块来关注哪里的特征是有意义的。

与通道注意力类似,给定一个 H×W×C 的特征 F‘,咱们先分别进行一个通道维度的平均池化和最大池化获得两个 H×W×1 的通道描述,并将这两个描述按照通道拼接在一块儿。而后,通过一个 7×7 的卷积层,激活函数为 Sigmoid,获得权重系数 Ms。最后,拿权重系数和特征 F’ 相乘便可获得缩放后的新特征。

两个注意力通道组合形式

通道注意力和空间注意力这两个模块能够以并行或者顺序的方式组合在一块儿,可是做者发现顺序组合而且将通道注意力放在前面能够取得更好的效果。

实验结果

CBAM与ResNet网络结构组合

CBAM可视化

利用 Grad-CAM 对不一样的网络进行可视化后,能够发现,引入 CBAM 后,特征覆盖到了待识别物体的更多部位,而且最终判别物体的几率也更高,这代表注意力机制的确让网络学会了关注重点信息。

BAM在目标检测

结论(CBAM和BAM)

由上述及论文更多实验结果代表,不论是引入BAM仍是引入CBAM都能提升目标检测和物体分类的精度,所以能够在神经网络中引入这一机制,并且花费的计算开销和参数大小都比较少。

代码解析及开源地址

https://github.com/Jongchan/attention-module

可对照着代码看注意力机制的详细过程,会有一个更好的理解。


AI研究学术交流群已成立啦!


扫码可添加博主微信,微信群有国际顶级Top期刊做者、高等学府博士生、硕士生等多位学者,本群致力于纯学术探讨,方向不限(一个好的学者一定是交叉学科下的产物)。想要进群一块儿学习探讨的童鞋能够加博主微信,备注学术交流、你也能够选择技术交流


▲扫码加群

本文分享自微信公众号 - 计算机视觉CV(jsjsjcv)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索