混合注意力 CBAM

发布时间:2026/7/22 11:27:00
混合注意力 CBAM 于同时关注了是什么和在哪里CBAM 在图像分类、目标检测等任务上均取得了比 SE 更优的收益。CBAM 的整体结构#在具体展开之前我们先从宏观看看 CBAM 的架构思路。CBAM 由两个子模块串联而成通道注意力模块Channel Attention ModuleCAM空间注意力模块Spatial Attention ModuleSAMimage.png很推荐去看原论文几张传播图做的非常清晰一目了然。如图给定特征图CBAM 依次应用两个模块通道注意力得到与输入逐通道相乘。空间注意力得到与上一步结果逐空间位置相乘。需要说明的是这两个模块的顺序并不是随意的。作者在消融实验中测试了三种排列方式排列方式 Top-1 准确率无注意力baseline 93.04%空间 → 通道 93.50%通道 → 空间CBAM 93.86%结果表明先通道后空间是最优排列。直觉上也说得通先明确哪个特征重要再定位特征位置在哪逻辑上更加自然。下面分别展开两个模块的细节。通道注意力模块 CAM#CBAM 的通道注意力模块和 SE 模块的思路非常相似核心差异在于池化方式。SE 只使用了 全局平均池化 GAP 来压缩空间信息。但 CBAM 的作者认为仅靠平均值会丢失信息的峰值而最大池化能够捕捉到特征图中最强烈的响应位置这对注意力权重的估计是有益的。因此CBAM 同时使用了两种池化方式全局平均池化反映通道的整体响应强度全局最大池化反映通道的最强响应值二者并行各自得到一个的通道描述向量这两个向量各自输入到一个和 SE 中结构相同的 MLP 中得到然后将两个输出逐元素相加再经过 Sigmoid 得到最终的通道权重image.png两者结合比 SE 单独用 GAP 的鲁棒性更强。空间注意力模块 SAM#通道注意力解决了该关注哪个通道的问题但特征图上不同的空间位置对任务的贡献显然也不一样。于是CBAM 在对通道注意力进行改进的基础之上继续提出空间注意力模块。它的做法是先沿通道维度进行统计聚合将个通道压缩为 1 个通道这里也同时使用了平均池化和最大池化但操作方式有所不同沿通道维度做平均池化生成的平均特征图。沿通道维度做最大池化生成的最大特征图。将这两张特征图在通道维度上拼接得到一个的张量然后经过一个的卷积层设计 padding 3, stride 1 保证空间尺寸不变融合两图信息降维到最后通过 Sigmoid 得到空间权重image.png这里选择卷积而非是因为空间注意力需要较大的感受野来确定哪个区域重要较小的卷积核可能只能看到局部难以感知全局的空间分布。最终得到的就是空间注意力权重图每个位置的数值表示该位置的重要性然后与输入特征图逐元素相乘实现空间维度上的特征重标定。在原始特征图上依次应用两个模块得到的权重就完成了 CBAM 的完整逻辑。CBAM 和 SE#在 SE 中我们提到它是一个轻量级模块 我们先来看看 CBAM 会让其“变重多少”首先CBAM 的额外开销主要来自空间注意力中的卷积而通道注意力的参数量与 SE 完全相同。因此对于一个通道的特征图二者参数量对比为忽略偏置SE两层 MLPCBAM两层 MLP 一层卷积可以看到相比于 SECBAM 增加的计算量几乎可以忽略不计。因此虽然 CBAM 已经是八年前的工作但其同样简单高效、即插即用的特性让其在许多轻量级网络如 MobileNetV3中仍然被广泛采用。