Grad CAM 模型可视化

本文最后更新于:2022年5月21日 凌晨

模型可视化十分重要,前文我们介绍了 CAM ,但是 CAM 本身存在一些限制,Grad CAM 作为 CAM 的扩展技术可以在限制更宽泛的条件下使用,本文介绍 Grad CAM。

简介

  • CAM 系列工作要解决的问题是网络中的隐藏层特征的可视化,CAM 可以将模型中 $F -> GAP -> MLP$ 结构的部分可视化成热力图
  • 但是 CAM 技术严格要求网络最后一层为 $MLP$ ,并且在实现时需要修改网络结构,这限制了可视化的需求应用场景

Grad CAM

实现方法

  • 假设模型特征层 $A \in R^{W \times H \times C}$,经过 $GAP $ 层后的特征 $F^k,K \in {1,2,…,C }$,也就是有:

$$
F^{k}=\frac{1}{Z} \sum_{i} \sum_{j} A_{i j}^{k}
$$

  • 设第 $ c $ 类的分类得分为 $ S_{c}, \mathrm{GAP} $ 的权重为 $ w_{i}^{c} $ ,特征图大小为 $ c_{1} * c_{2}, Z=c_{1} * c_{2} $ ,第 $ i $ 个特征图第 $ k $ 行第 $ j $ 列的像素值为 $ A_{k j}^{i} $ ,计算:

$$
\alpha_{i}^{c}=\frac{1}{Z} \sum_{k=1}^{c_{1}} \sum_{j=1}^{c_{2}} \frac{\partial S_{c}}{\partial A_{k j}^{i}}
$$

  • Grad-CAM的Class Activation Mapping计算方式如下:

$$
L_{\text {Grad-CAM }}^{c}=\operatorname{ReLU}\left(\sum_{i} \alpha_{i}^{c} A^{i}\right)
$$

  • 之所以使用ReLU激活函数,是因为我们只关注对于类别有关的区域,即特征图取值大于0的部分。

论文描述对 CAM 的扩展

论文中认为 Grad CAM 是对 CAM 的泛化扩展,讨论了Grad-CAM和类激活映射(CAM)之间的联系,并正式证明Grad-CAM可以将CAM推广到各种基于CNN的体系结构中。

  • 具体地说,倒数第二层输出了 $ K $ 个特征图, $ A^{k} \in R^{u \times v} $ ,每个元素的下标为(i,j),比如 $ A_{i j}^{k} $ 。然后使用全局平均池化 (GAP) 在空间上对这些特征图进行池化,并对其进行线性变换以 生成每个类c的得分 $ Y^{c} $ 。
$$ Y^{c}=\sum_{k} \underbrace{w_{k}^{c}}_{\text {class feature weights }} \overbrace{\frac{1}{Z} \sum_{i} \sum_{j}}^{\text {global average pooling }} \underbrace{A_{i j}^{k}}_{\text {feature map}} $$
  • 定义 $ F^{k} $ 为全局平均池化的输出:

$$
F^{k}=\frac{1}{Z} \sum_{i} \sum_{j} A_{i j}^{k}
$$

  • CAM是计算最后的分数:

$$
Y^{c}=\sum_{k} w_{k}^{c} \cdot F^{k}
$$

  • 其中 $ w_{k}^{c} $ 是将第 $ \mathrm{k} $ 个特征图与第c个类连接的权重。取c类 $ \left(Y^{c}\right) $ 的分数相对于特征图 $ F^{k} $ 的梯度,我们得到:

$$
\frac{\partial Y^{c}}{\partial F^{k}}=\frac{\frac{\partial Y^{c}}{\partial A_{i j}^{k}}}{\frac{\partial F^{k}}{\partial A_{i j}^{k}}}
$$

  • 关于 $ A_{i j}^{k} $ 的梯度记为 $ \frac{\partial F^{k}}{\partial A_{i j}^{k}}=\frac{1}{z} $ ,得到:

$$
\frac{\partial Y^{c}}{\partial F^{k}}=\frac{\partial Y^{c}}{\partial A_{i j}^{k}} \cdot Z
$$

  • 得到 $ \frac{\partial Y^{c}}{\partial F^{k}}=w_{k}^{c} $ ,推出:

$$
w_{k}^{c}=Z \cdot \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
$$

  • 因为Z和w权重和坐标无关,化简为:

$$
Z w_{k}^{c}=Z \sum_{i} \sum_{j} \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
$$

  • Z为像素点总数或者记为1,重写到:

$$
w_{k}^{c}=\sum_{i} \sum_{j} \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
$$

  • 在可视化过程中,比例常数 $ \frac{1}{Z} $ 被标准化, $ w_{k}^{c} $ 的表达式与Grad-CAM使用的 $ \alpha_{k}^{c} $ 相同
  • 因此论文认为,Grad-CAM是CAM的一种概括

其他角度理解 Grad CAM

该方法作为 CAM 的扩展,为可用性场景和实现方式上都提供了更大的方便,但是我们(由 华哥率先提出)认为结果的可靠性和有效性是建立在一些条件基础之上的,而且理论来源也没有十分明确

  • 也就是说论文提出一种新的梯度求取 CAM 特征图的计算方法,该方法可以收纳 CAM 为一种特殊情况,因此 Grad CAM 是CAM的扩展,我们觉得并不十分符合逻辑,确实 CAM 是此种 Grad CAM 计算方法的特殊情况,但是这个 Grad CAM 方法本身的合理性或理论依据没有充分说明
  • 至于使用 ReLu 激活更是神奇,CAM 貌似就没使用特定的激活函数,因为理论上没有问题
  • 我们提出一种理解 Grad CAM 的方式,回到 CAM ,方法合理的核心是 GAP 层与 MLP 层都是线性操作,二者交换不影响结果,再加上 CNN 网络结构中特征位置与输入图像位置有较强的相关性,CAM 热力图才可以作为模型可视化的参考
  • 延续线性操作可交换的思想考虑 Grad CAM,需要解决的问题是 GAP 层后面的特征处理不再局限为 MLP,需要面对的是更为一般的 $ y^c = f(F) $,而这个$f(F)$ 函数很可能不是线性操作,那么我们如果直接强行交换 GAP 和 $f(F)$ 的位置看到的结果不那么有说服力和参考价值
  • 为了解决 $f(F)$ 非线性的问题,我们可以将 $f(F)$ 在 $F_0$ (当前图像计算得到的 $F$ 处的特征)处进行泰勒展开:

$$
f(F)=f(F_0)+(F-F_0)f’(F_0)+o((F-F_0)^2)
$$

其中 $o((F-F_0)^2)$ 为二阶无穷小量

  • 如果略去无穷小量,将 $f(F)$ 用一阶泰勒展开近似的话,可以得到:

$$
f(F) \approx f(F_0)+(F-F_0)f’(F_0)
$$

  • 而这种一阶近似后,$f’(F_0)$ 为确定的向量,$f(F) $ 在 $F_0$ 邻域小范围内可以近似为线性操作,因此泰勒一阶近似后的$f(F) $可以与 GAP 交换而不改变结果,才使得 Grad CAM 有可能成功地使模型可视化

  • 那么按照这个思路推导下去 Grad CAM 会变成什么样呢

    显然有 $f(F_0)=Y^c$

    $$ \begin{array}{c} f(F) & \approx& f'(F_0)F+ (f(F_0)-f'(F_0)F_0)\\ &=&\frac{\partial Y^{c}}{\partial F_0^{k}}F+(Y^c-\frac{\partial Y^{c}}{\partial F_0^{k}}F_0) \end{array} $$
  • 也就是说此种情形下的 Grad CAM 不但有 $ \frac{\partial Y^{c}}{\partial F^{k}}=w_{k}^{c} $ ,而且应该还有偏置项:

$$ b^c_k=Y^c-\frac{\partial Y^{c}}{\partial F^{k}}F_0 $$
  • 当$f(F)$ 函数为线性加权操作,即该层网络结构为全连接层时:
$$ \frac{\partial Y^{c}}{\partial F^{k}}F_0=Y^c $$
  • 进而得到在 CAM 的条件下偏置项正好为 0,我们因此才认为 Grad CAM 是 CAM 的扩展
  • 一般的 Grad CAM 计算特征$X \in R^{1 \times 1 \times C}$的热力图时需要计算:
$$ Res =f(X)=\frac{\partial Y^{c}}{\partial F_0^{k}}X+(Y^c-\frac{\partial Y^{c}}{\partial F_0^{k}}F_0) $$

此处和论文中的计算方法有些出入,供大家参考,如有错误烦请指正

Grad CAM 的限制

Grad CAM 带来了使用范围的拓展,相应的会承受相关的代价

  • 首先 Grad CAM 有着和 CAM 类似的使用条件限制:
    • 天然使用于 CNN 结构,特征图与原始图像位置具有较强的相关性(Transformer 结构无法直接使用 CAM)
    • 依赖 GAP 层,一个尺寸方向的线性 Pooling 操作
  • 扩展的限制条件为不再强求最后的层为 MLP
  • 而代价也是存在的,沿用我们的梯度线性操作近似理论,只有 $F_0$ 周围的小邻域空间近似线性,误差较小
  • 那么用于计算热力图的特征 $X$ 距离 $F_0$ 越远那么结果可能越不可靠,因此 GAP 层前的特征越趋于平稳 Grad CAM 越可信

原始论文

参考资料