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

网友投稿 1090 2022-05-30

论文题目①:BAM: Bottleneck Attention Module

论文题目②:CBAM:CBAM: Convolutional Block Attention Module

Bottlenet attention Module(BAM)

依据

BAM介绍

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

BAM具体结构

对于给定的feature map, F ∈ R C ∗ H ∗ W F\in R^{C*H*W} F∈RC∗H∗W,BAM可以得到一个3D的Attention map M ( F ) ∈ R C ∗ H ∗ W M(F)\in R^{C*H*W} M(F)∈RC∗H∗W,计算refine feature map F':

F ′ = F + F ⊗ M ( F ) F′=F+F⊗M(F) F′=F+F⊗M(F),其中⊗是逐元素相乘。

M ( F ) = σ ( M c ( F ) + M s ( F ) ) M(F) =σ(Mc(F)+Ms(F)) M(F)=σ(Mc(F)+Ms(F))

其中, M c ( F ) ∈ R C Mc(F)\in R^{C} Mc(F)∈RC是通道注意力; M s ( F ) ∈ R H ∗ W Ms(F)\in R^{H*W} Ms(F)∈RH∗W是空间注意力。

M c ( F ) = B N ( M L P ( A v g P o o l ( F ) ) ) = B N ( W 1 ( W 0 A v g P o o l ( F ) + b 0 ) + b 1 ) Mc(F) = BN(MLP(AvgPool(F))) = BN(W1(W0AvgPool(F)+b0)+b1) Mc(F)=BN(MLP(AvgPool(F)))=BN(W1(W0AvgPool(F)+b0)+b1)

其中 W 0 ∈ R C / r ∗ C , b 0 ∈ R r / C , W 1 ∈ R C / r ∗ C , b 1 ∈ R C W_{0}\in R^{C/r*C},b_{0}\in R^{r/C},W_{1}\in R^{C/r*C},b_{1}\in R^{C} W0 ∈RC/r∗C,b0 ∈Rr/C,W1 ∈RC/r∗C,b1 ∈RC

M s ( F ) = B N ( f 3 1 ∗ 1 ( f 2 3 ∗ 3 ( f 1 3 ∗ 3 ( f 0 1 ∗ 1 ( F ) ) ) ) ) M_{s}(F)=BN(f_{3}^{1*1}(f_{2}^{3*3}(f_{1}^{3*3}(f_{0}^{1*1}(F))))) Ms (F)=BN(f31∗1 (f23∗3 (f13∗3 (f01∗1 (F)))))

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

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

Convolutional Block Attention Module(CBAM)

简介

CBAM结构介绍

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

M s ( F ) = σ ( f 7 ∗ 7 ( [ A v g P o o l ( F ) , M a x P o o l ( F ) ] ) ) = σ ( f 7 ∗ 7 ( [ F a v g S ; F m a x S ] ) ) M_{s}(F)=\sigma (f^{7*7}([AvgPool(F),MaxPool(F)]))=\sigma (f^{7*7}([F_{avg}^{S};F_{max}^{S}])) Ms (F)=σ(f7∗7([AvgPool(F),MaxPool(F)]))=σ(f7∗7([FavgS ;FmaxS ]))

与通道注意力相似,给定一个 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

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

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

深度学习 神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分布式与集群的区别是什么?
下一篇:一文搞懂Java的多线程底层逻辑,再也不怕多线程了
相关文章