CBAM:Convolutional Block Attention Module

通过空间全局池化生成通道注意力,通过通道全局池化生成空间注意力,并且分别使用最大池化和平均池化去生成 2 次注意力矩阵

什么是 CBAM (Convolutional Block Attention Module)?

  • 通过设计通道注意力模块(Channel Attention Module,CAM) 空间注意力模块(SAM) ,分别进行通道与空间上的赋权
  • 两个注意力矩阵都是通过池化实现,比如输入特征 CHW 的注意力矩阵,如果求取通道注意力,通过全局池化去掉 HW;如果求空间注意力,在通道维度上进行池化去掉 C,这有别于其他求取空间注意力的方式,因为很多都是直接 1 x 1 卷积去掉通道 C 的

CBAM 的通道注意力模块(Channel Attention Module,CAM) ?

  • 通道注意力机制和 SENet 相同,但是具体操作与 SENet 略有不同,不同部分用红色进行了标记
  • 首先,将输入的特征图 F(H×W×C)分别经过基于 H 和 W 两个维度全局最大池化全局平均池化,得到两个 1×1×C 的特征图
  • 然后,将两个特征图送入一个共享权值的双层神经网络(MLP)学习通道间依赖关系,两层神经层之间通过压缩比 r 实现降维
  • 最后,将 MLP 输出的特征进行基于 element-wise 的加和操作,再经过 sigmoid 激活操作,生成最终的通道加权,即 M_c

CBAM 的空间注意力模块(Spartial Attention Module,SAM) ?

  • 通道注意力模块输出的特征图 F‘作为本模块的输入特征图。 首先,基于 channel 这个维度进行最大池化和平均池化操作,得到两个 H×W×1 的特征图
  • 然后,将两个特征图基于通道维度进行 concat;再然后使用 7×7 卷积核 (padding=3) 进行通道降维,降维得到单通道的特征图,即 H×W×1
  • 最后,经过 sigmoid 学习空间元素之间的依赖关系,生成空间维度的权重,即 M_s