✨博客主页:米开朗琪罗~🎈
✨博主爱好:羽毛球🏸
✨年轻人要:Living for the moment(活在当下)!💪
🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】
目录
😺一、简述
在【深度学习经典网络架构—8】:注意力机制之SE_Block中,我们介绍了CNN的通道注意力模块SE_Block,本次带来的是另一个即用即插的注意力模块CBAM。
论文链接:CBAM: Convolutional Block Attention Module
😺二、CBAM(Convolutional Block Attention Module)
CBAM的结构如下图所示:
由图可知,CBAM包含两个独立的子模块,分别是通道注意力模块(Channel Attention Module,CAM)和空间注意力模块(Spartial Attention Module,SAM)。
设输入特征
F
∈
R
C
∗
H
∗
W
F\in \mathbb{R}^{C\ast H\ast W}
F∈RC∗H∗W,顺序的可以得到一维的通道注意力图
M
c
∈
R
C
∗
1
∗
1
M_{c}\in \mathbb{R}^{C\ast 1\ast 1}
Mc∈RC∗1∗1和二维的空间注意力图
M
s
∈
R
1
∗
H
∗
W
M_{s}\in \mathbb{R}^{1\ast H\ast W}
Ms∈R1∗H∗W。全部的注意力过程可以总结为:
F
′
=
M
c
(
F
)
⊗
F
F
′
′
=
M
s
(
F
′
)
⊗
F
′
\begin{matrix}F^{'}=M_{c}(F)\otimes F \\ F^{''}=M_{s}(F^{'})\otimes F^{'} \end{matrix}
F′=Mc(F)⊗FF′′=Ms(F′)⊗F′
其中
⊗
\otimes
⊗表示按元素级相乘。
🐶2.1 CAM(Channel Attention Module)
CAM如下图所示:
流程如下:
首先通过最大池化和平均池化得到两个
1
×
1
×
C
1×1×C
1×1×C的特征图,然后将其送入MLP,将MLP输出的特征进行像素级的加和后再经过sigmoid激活,得到最终的通道注意力特征。
公式如下:
🐶2.2 SAM(Spatial Attention Module)
SAM如下图所示:
流程如下:
将CAM作为输入,首先沿着通道维度进行最大池化和平均池化,得到两个
H
×
W
×
1
H×W×1
H×W×1特征图,然后对特征图通道级联,接着经过一个
7
×
7
7×7
7×7卷积层降维至单通道,最后经sigmoid激活得到SAM。
公式如下:
😺三、消融实验
作者对网络结构进行了多组消融实验,最终确认串联,通道注意在前、空间注意在后能得到更优异的效果。具体实验结果详见论文。
😺四、CBAM可视化
为了确定CBAM带来的注意强度,作者使用Grad-CAM对特征图进行激活,如下图所示:
可以看到,加入CBAM的ResNet50要比加入SE_Block的具有更强的表达能力。
😺五、总结
CBAM作为一种联合了通道与空间的注意力模块,不仅加强了网络的特征表达能力,而且足够轻量化,在许多网络中都可以即插即用。