CAM/Grad-CAM 如何解释 CNN 关注区域?
简化版
CAM 用分类器权重对最后一层特征图加权,Grad-CAM 则用目标类别对特征图的梯度作为权重,因此不要求模型必须采用 GAP 分类头。二者产生的是粗粒度“模型依据区域”,不是精确分割,也不能证明因果。
详细版
-
CAM 要求最后卷积特征经过全局平均池化后直接接线性分类器,类别权重可直接映射回空间位置。
-
Grad-CAM 对目标类别分数反向传播,把每个通道梯度在空间上平均得到权重,再加权特征图并经过 ReLU。
-
热力图需上采样到输入尺寸;它的空间精度受最后特征图分辨率限制。
-
解释时应使用 logit 而非 softmax 后概率,避免类别间耦合和梯度饱和。
-
可信度要通过遮挡实验、随机化测试或 pointing game 等方法验证,不能只看图“像不像”。
完整版教学
一、从分类分数追溯空间证据
分类 CNN 最终只输出一个类别分数,但卷积层仍保存空间布局。
可视化的任务,是把“哪个通道支持这个类别”重新投影成“哪些位置贡献较大”。
这种方法适合发现模型是否盯着背景水印、边框或真正目标。
它解释的是特定模型在特定输入上的响应,不代表人类语义,也不自动等价于目标轮廓。
二、底层机制与关键公式
设目标类别 logit 为 y^c、选定层第 k 个特征图为 A^k。
Grad-CAM 将 ∂y^c/∂A^k_ij 在空间维平均,得到该通道对类别 c 的局部敏感度 α_k^c。
随后计算 ReLU(sum_k α_k^c A^k)。
ReLU 保留正向支持证据;若研究抑制证据,可同时观察未截断图或 Grad-CAM++ 等变体。
alpha_k^c = (1 / Z) * sum_i sum_j d(y^c) / d(A_ij^k)
L_GradCAM^c = ReLU(sum_k alpha_k^c * A^k)
三、带数字的推演
某层有 3 个通道,梯度均值分别为 [0.8, -0.2, 0.5]。
某位置的激活为 [2, 4, 1],加权和是 0.8×2-0.2×4+0.5×1=1.3,ReLU 后仍为 1.3;若结果为负则显示为 0。
四、方案对比与选择
| 方案/场景 | 机制或优势 | 主要代价 |
|---|---|---|
| CAM | GAP 后线性分类器权重 | 快,但结构受限 |
| Grad-CAM | 目标分数对特征图梯度 | 通用,分辨率较粗 |
| 遮挡敏感图 | 逐块遮挡后的分数变化 | 直观但计算昂贵 |
五、实际执行流程
输入图像 -> 前向得到特征图和类别 logit
目标类别 -> 反向得到梯度 -> 通道权重
特征图 × 权重 -> 求和/ReLU -> 上采样叠加
六、边界条件与工程代价
选择过浅层,热图分辨率高但语义弱;选择过深层,类别语义强但空间图可能只有 7×7。
实践中应说明所选层,并对不同层结果做稳定性比较。
热图颜色范围需要对单图或全数据集统一规范。
逐图 min-max 会让很弱的响应看起来也很鲜艳,因此跨样本比较时尤其容易误导。
记忆钩子:记住两条链:CAM 是“分类权重回投”,Grad-CAM 是“目标梯度定通道、激活定位置”。
七、常见误区与追问
-
误区:热区就是目标的精确边界。 上采样后的低分辨率响应只能给出粗定位,不能替代分割掩码。
-
追问:为什么通常对 logit 求梯度? softmax 会引入其他类别并可能饱和,logit 更直接反映目标类别证据。
-
误区:Grad-CAM 图符合直觉就证明模型可靠。 视觉合理性只是起点,还应做遮挡或参数随机化检验。
-
追问:同一图能解释不同类别吗? 可以,每次选择不同目标 logit 反传,会得到类别条件化热图。
-
追问:梯度为负代表什么? 它通常表示该通道激活会压低目标类别分数,标准 Grad-CAM 用 ReLU 将其滤除。
八、加强记忆
记住两条链:CAM 是“分类权重回投”,Grad-CAM 是“目标梯度定通道、激活定位置”。
作答必须补上层选择、低分辨率限制和忠实度验证,才能把可视化与真正的解释性区分开。