模型可视化十分重要,前文我们介绍了 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 } ,也就是有:
- 设第 c 类的分类得分为 S_{c}, mathrm{GAP} 的权重为 w_{i}^{c} ,特征图大小为 c_{1} * c_{2}, Z=c_{1} * c_{2} ,第 i 个特征图第 k 行第 j 列的像素值为 A_{k j}^{i} ,计算:
- Grad-CAM的Class Activation Mapping计算方式如下:
- 之所以使用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} 。
- 定义 F^{k} 为全局平均池化的输出:
- CAM是计算最后的分数:
- 其中 w_{k}^{c} 是将第 mathrm{k} 个特征图与第c个类连接的权重。取c类 left(Y^{c}right) 的分数相对于特征图 F^{k} 的梯度,我们得到:
- 关于 A_{i j}^{k} 的梯度记为 frac{partial F^{k}}{partial A_{i j}^{k}}=frac{1}{z} ,得到:
- 得到 frac{partial Y^{c}}{partial F^{k}}=w_{k}^{c} ,推出:
- 因为Z和w权重和坐标无关,化简为:
- Z为像素点总数或者记为1,重写到:
- 在可视化过程中,比例常数 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 处的特征)处进行泰勒展开:
其中 o((F-F_0)^2) 为二阶无穷小量
- 如果略去无穷小量,将 f(F) 用一阶泰勒展开近似的话,可以得到:
- 而这种一阶近似后,f’(F_0) 为确定的向量,f(F) 在 F_0 邻域小范围内可以近似为线性操作,因此泰勒一阶近似后的f(F) 可以与 GAP 交换而不改变结果,才使得 Grad CAM 有可能成功地使模型可视化
- 那么按照这个思路推导下去 Grad CAM 会变成什么样呢 显然有 f(F_0)=Y^c
- 也就是说此种情形下的 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} 的热力图时需要计算:
此处和论文中的计算方法有些出入,供大家参考,如有错误烦请指正
Grad CAM 的限制
Grad CAM 带来了使用范围的拓展,相应的会承受相关的代价
- 首先 Grad CAM 有着和 CAM 类似的使用条件限制:
- 天然使用于 CNN 结构,特征图与原始图像位置具有较强的相关性(Transformer 结构无法直接使用 CAM)
- 依赖 GAP 层,一个尺寸方向的线性 Pooling 操作
- 扩展的限制条件为不再强求最后的层为 MLP
- 而代价也是存在的,沿用我们的梯度线性操作近似理论,只有 F_0 周围的小邻域空间近似线性,误差较小
- 那么用于计算热力图的特征 X 距离 F_0 越远那么结果可能越不可靠,因此 GAP 层前的特征越趋于平稳 Grad CAM 越可信
原始论文
- arxiv 链接:https://arxiv.org/abs/1610.02391
参考资料
- https://blog.csdn.net/dhaiuda/article/details/102937760
- https://zhuanlan.zhihu.com/p/269589676?utm_source=wechat_session