概述
CBAM卷积块注意力模块(Convolutional Block Attention Module)是一种轻量级的注意力机制模块,可集成到CNN中,通过通道注意力和空间注意力增强特征表达能力。其核心思想是自适应调整特征图的通道和空间权重。
详细设计
通道注意力模块(Channel Attention Module)
输入:特征图 。
输出:通道注意力权重 。
步骤:
-
双路池化:对 分别进行全局平均池化和最大池化,得到两个特征向量:
-
共享MLP:将池化结果输入共享的多层感知机(MLP),结构如下:
- 第一个全连接层:维度 ( 为缩减比例,通常设为16)
- ReLU激活函数
- 第二个全连接层:维度
-
融合与激活:将两路结果相加并通过Sigmoid函数生成权重:
其中 和 为MLP权重, 为ReLU, 为Sigmoid。
空间注意力模块(Spatial Attention Module)
输入:经通道加权的特征图 。
输出:空间注意力权重 。
步骤:
-
通道池化:对 沿通道维度进行平均池化和最大池化,得到两个特征图:
-
特征拼接与卷积:将池化结果拼接后应用卷积:
- 拼接:
- 卷积:降维至单通道,输出
-
激活:通过Sigmoid生成空间权重:
其中 为卷积操作, 为Sigmoid。
网络结构
CBAM模块可插入到CNN的任意卷积块之后。以ResNet为例,集成方式如下:
整体计算流程:
-
特征图 先通过通道注意力模块,得到加权特征 。
-
通过空间注意力模块,得到最终输出 。
优点和局限性
优点
-
双注意力协同:
- 通道注意力(Channel Attention)聚焦于”哪些通道更重要”,通过全局信息增强特征判别性。
- 空间注意力(Spatial Attention)捕捉”特征图中关键区域”,提升定位能力。
- 两者串联使用实现互补,实验表明比单独使用任一模块效果更好。
-
轻量化设计:
- 通道注意力使用MLP参数共享策略(两路池化共享同一MLP)。
- 空间注意力仅需一个卷积。
- 在ResNet-50中仅增加约0.1%参数量。
-
即插即用特性:
- 可嵌入任何CNN架构(VGG/ResNet/DenseNet等)。
- 支持端到端训练,无需修改网络超参数。
局限性
-
空间注意力设计争议:
- 仅使用单层卷积可能难以捕捉复杂空间关系。
- 对比Non-local Network等结构,长距离依赖建模能力较弱。
-
通道注意力局限:
- 通道压缩率需手动设定(默认r=16可能非最优)。
-
任务敏感性问题:
- 在细粒度分类任务中,空间注意力可能过度聚焦局部区域。
- 对纹理敏感的任务(如风格迁移)需调整注意力模块顺序。
-
动态性不足:
- 注意力权重生成方式固定(池化+MLP/卷积)。
- 缺乏动态适应性(如动态卷积/可变形卷积的灵活性)。
小结
-
轻量高效:引入少量参数即可显著提升模型性能。
-
双注意力机制:通道注意力聚焦“what”,空间注意力聚焦“where”。
-
即插即用:可嵌入到VGG、ResNet等主流架构中。