CBAM 的整体结构#

发布时间:2026/6/26 9:44:40

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

相关新闻