SE、CBAM、ECA 都能用于调整 CNN 的中间特征,但“即插即用”只说明接口容易对接,不是效果保证。先把维度和成本算清楚,再设计实验,比先叠模块更重要。

三种模块分别在调整什么

以 B × C × H × W 特征为例:

模块 权重形状的典型形式 主要操作
SE B × C × 1 × 1 汇聚空间信息,再生成通道门控
CBAM 先通道、后空间门控 顺序调整通道与空间位置
ECA B × C × 1 × 1 汇聚后用通道维的一维卷积做局部交互

这些是不同设计,不是严格的优劣排名。SE、CBAM、ECA 原论文分别给出了其模块与实验依据。

还要区分两种“注意力”:这里的特征门控,不等于 Transformer 中 token 间的 Q、K、V 加权聚合。名称相同,张量操作和建模对象可以不同。

参数与广播的最小检查

忽略偏置、通道数能被缩减比整除时,SE 的两层映射参数量是 2 × C × (C/r)。单输入、单输出通道、无偏置的 ECA 一维卷积参数量为核大小 k。这些只是模块局部参数,不包含骨干,也不代表真实设备上的加速比例。

import numpy as np

channels, ratio, kernel = 64, 16, 3
hidden = max(1, channels // ratio)
assert 2 * channels * hidden == 512
assert kernel == 3

features = np.arange(24, dtype=float).reshape(2, 3, 2, 2)
gates = np.array([[0.2, 0.5, 0.8], [0.7, 0.4, 0.1]])[:, :, None, None]
scaled = features * gates
assert scaled.shape == features.shape
np.testing.assert_allclose(scaled[0, 1], features[0, 1] * 0.5)
assert gates.shape == (2, 3, 1, 1)
print("parameter arithmetic and channel broadcasting checks passed")

这是自行构造的广播与算术测试,不是完整注意力训练。Sigmoid 门控处于 0 到 1 之间时,单独相乘不会把正数特征的绝对值放大;“增强”通常指相对选择作用或网络整体学到的影响。

怎么判断模块真的有用

先固定划分、骨干、训练预算和选模规则,分别比较基线与单个模块;同时记录多次随机种子的结果、额外参数和同一设备上的延迟。再看各类别及困难样本,避免总体均值掩盖局部退化。

Grad-CAM 可以提供类别相关的粗定位线索,但热图更集中不自动等于模型正确,更不是因果证明。应配合定量性能、遮挡或扰动检查以及失败样本分析;不同模型的图还需要统一可视化设置。Grad-CAM 原论文

本篇不把未运行的消融表填上示例分数,也不把参考简历中的项目结论改成自己的实验成果。

来源与核验边界

本篇基于疏锦行计算机视觉专题《即插即用注意力机制》讲义的模块、参数量和消融部分,重新组织并补充核验边界。广播与算术示例已运行;Flowers-102、Grad-CAM 和模块训练实验未复现。视频口头补充尚未逐节核验,原课件不公开。