CBAM 通过通道注意力和空间注意力串联,轻量高效地增强 CNN 特征表达能力。
整体结构
输入特征图 $\mathbf{F} \in \mathbb{R}^{C \times H \times W}$ 依次经过通道注意力和空间注意力:
$$\mathbf{F’} = \text{CAM}(\mathbf{F}) \cdot \mathbf{F}$$
$$\mathbf{F’’} = \text{SAM}(\mathbf{F’}) \cdot \mathbf{F’}$$
通道注意力(CAM)
捕捉全局通道关系,调整各通道重要性:
$$\mathbf{M}c = \sigma(\text{MLP}(\mathbf{F}{\text{avg}}) + \text{MLP}(\mathbf{F}_{\text{max}}))$$
| 步骤 | 操作 |
|---|---|
| 1 | 全局平均池化 + 全局最大池化 |
| 2 | 共享 MLP 处理两个池化结果 |
| 3 | 相加后 Sigmoid 激活 |
| 4 | 与原特征相乘 |
空间注意力(SAM)
关注每个空间位置的重要性:
$$\mathbf{M}s = \sigma(\text{Conv}{7 \times 7}([\mathbf{F}{\text{avg}}^s; \mathbf{F}{\text{max}}^s]))$$
| 步骤 | 操作 |
|---|---|
| 1 | 通道维度平均池化 + 最大池化 |
| 2 | 拼接后经 7×7 卷积 |
| 3 | Sigmoid 激活 |
| 4 | 与输入特征相乘 |
PyTorch 实现
| |
核心优势
| 优势 | 说明 |
|---|---|
| 轻量级 | 计算量小于 SE 模块 |
| 双维增强 | 同时利用通道和空间注意力 |
| 易集成 | 可无缝嵌入 ResNet、VGG 等主干网络 |
张芷铭的个人博客
Comments