CBAM: Convolutional Block Attention Module
Sanghyun Woo*1, Jongchan Park*†2, Joon-Young Lee3, and In So Kweon1
1 Korea Advanced Institute of Science and Technology, Daejeon, Korea
{shwoo93, iskweon77}@kaist.ac.kr
2 Lunit Inc., Seoul, Korea
jcpark@lunit.io
3 Adobe Research, San Jose, CA, USA
jolee@adobe.com
1. 现有网络架构设计思路
- Depth
将模块堆叠,提高网络深度,如ResNet
- Width
提高卷积层的输出维度,增加特征图的通道数,如 GoogLeNet
- Cardinality
基于分组的方式,采用多分支结构(多种感受野),如ResNeXt
2. 本文模型设计思路
- Attention
通过使用注意力机制提高模型表达能力:关注重要特征,抑制不必要的特征。
3. 本文方法
因为卷积操作提取的特征信息是跨通道信息和空间的混合,因此本文提出Convolutional Block Attention Module(CBAM),增强这两个维度有意义的信息。
实现手段是有序地使用通道注意力模块和空间注意力模块,so that each of the branches can learn ‘what’ and ‘where’ to attend in the channel and spatial axes respectively(原文)。
- 整体结构
- 整体结构详述
给定一个输入特征图
其中
在做乘法的过程中,注意力值也相应广播(broadcast):通道注意力沿着空间维度广播,反之亦然。
- 通道注意力模块详述
作者利用特征在通道间的关系,产生通道注意力图。因为特征图的每个通道维度都可看作是一个特征检测器,因此通道注意力关注的是:"what" is meaningful。
计算过程:为了高效计算通道注意力,作者压缩(squeeze)了输入特征图的空间维度。聚合空间维度的手段通常使用平均池化。但是作者表示最大池化也能够收集另一类重要的辨别信息,从而获得更优的通道级注意力。因此作者以并行的方式综合使用两种池化方式。然后连接共享的三层MLP,最后做一个激活操作得到通道注意力图。具体操作如下(权重共享):
- 空间注意力模块详述
作者利用特征在空间位置上的关系,产生空间注意力图。空间注意力关注的是: "where" is an informative part,与通道注意力互补。
计算过程:作者首先压缩通道维度,在通道维度上进行平均池化和最大池化操作,然后将它们concat以获得更高效的特征描述子。在通道维度上应用池化操作是强调信息丰富区域非常有效的手段。最后通过将concat后的特征图卷积,生成空间注意力图。具体操作如下:
- 注意力模块的组织
作者观察到有序使用两种模块比并行使用效果更好,并且顺序是:通道注意力模块->空间注意力模块。
4.实验
作者将CBAM集成到ResBlock中,进行了如下对照实验:
- 纵向比较
- 横向比较
- 使用 Grad-CAM 可视化
Grad-CAM将最后一层卷积的输出可视化。p代表真实类别的softmax得分。
- 模型可解释性的定量评估
- 目标检测任务上的表现