Heatmap

前言

目前所说的模型可视化或者模型可解释说到是对某一类别具有可解释性,直接画出来特征图并不能说明模型学到了某种特征,对一个深层的卷积神经网络而言,通过多次卷积和池化以后,它的最后一层卷积层包含了最丰富的空间和语义信息,再往下就是全连接层和softmax层了,其中所包含的信息都是人类难以理解的,很难以可视化的方式展示出来。所以说,要让卷积神经网络的对其分类结果给出一个合理解释,必须要充分利用好最后一个卷积层。

CAM结构的热力图

2016 年《Learning Deep Features for Discriminative Localization》提出的 CAM (Class Activation Mapping,类激活映射) 算法,能够可视化卷积神经网络的特征图,并映射到原始图像中得到不同区域的重要性。CAM 利用了全局平均池化 GAP (Global Average Pooling) 和最后一层 softmax 的参数将特征图线性加权起来,从而获得模型对于不同类别重点关注的区域。
在这里插入图片描述
作者发现 CNN 网络虽然在训练时可能未提供对象的位置,但是仍然具有很强的定位特征能力,上图是 CAM 运行的效果,可以看到对于刷牙这一类,CNN 能有效地定位到牙刷,而对于锯树,CNN 能有效定位到电锯。

但是 CNN 后面通常会接全连接层,作者认为全连接层会影响 CNN 的定位能力。因此提出了 CAM 算法,用全局平均池化 GAP 代替全连接层,从而保留模型的定位特征能力。全局平均池化 GAP 通常起到正则化的作用,防止训练时的过拟合,GAP 和其他池化方法的区别如下图所示,全局的池化方法就是把池化的范围扩大到整个特征图的尺寸。在这里插入图片描述
CAM借鉴了论文Network in Network(https://arxiv.org/abs/1312.4400)_中的思路,GAP,其实说白了就是求每张特征图所有像素的均值。GAP的优点在NIN的论文中说的很明确了:由于没有了全连接层,输入就不用固定大小了,因此可支持任意大小的输入;此外,引入GAP更充分的利用了空间信息,且没有了全连接层的各种参数,鲁棒性强,也不容易产生过拟合;还有很重要的一点是,在最后一层卷积层强制生成了和目标类别数量一致的特征图,经过GAP以后再通过softmax层得到结果,这样做就给每个特征图赋予了很明确的意义,也就是categories confidence maps(类别置信度图)。

CAM 模型示意图
在这里插入图片描述
在这里插入图片描述

最后一个卷积层后面采用了 GAP,GAP 后再利用 Softmax 层进行分类。图中最后一层卷积层的通道数为 n,因此 GAP 后得到的向量维度是 n,分别对应每个通道。

经过GAP之后与输出层的连接关系(暂不考虑softmax层),实质上也是就是个全连接层,只不过没有了偏置项,如图所示:
在这里插入图片描述
经过GAP之后,我们得到了最后一个卷积层每个特征图的均值,通过加权和得到输出(实际中是softmax层的输入)。需要注意的是,对每一个类别C,每个特征图k的均值都有一个对应的 w w w,记为 w k c w^c_k wkc。CAM的基本结构就是这样了,下面就是和普通的CNN模型一样训练就可以了。

如何得到一个用于解释分类结果的热力图呢?

比如说我们要解释为什么分类的结果是羊驼,我们把羊驼这个类别对应的所有 w k c w^c_k wkc取出来,即 w1, ……, wn 指 Softmax 层的权重,求出它们与自己对应的特征图的加权和即可。由于这个结果的大小和特征图是一致的,我们需要对它进行上采样(CAM 直接使用 resize 将特征图缩放到和原始图一样的大小),叠加到原图上去,如下所示。
在这里插入图片描述
这样,CAM以热力图的形式告诉了我们,模型是重点通过哪些像素确定这个图片是羊驼了。

Grad-CAM

《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》这篇文章主要介绍了一种梯度类加权激活映射(Gradient-weighted Class Activation Mapping,简写成Grad-CAM)方法。该方法可使用任意目标概念的梯度,然后将其流入最后的卷积层生成一个粗略的定位图,以此来突出图像中重要区域,该区域即为输出预测的依据。

前面看到CAM的解释效果已经很不错了,但是它有一个致命伤,就是它要求修改原模型的结构,导致需要重新训练该模型,这大大限制了它的使用场景。如果模型已经上线了,或着训练的成本非常高,我们几乎是不可能为了它重新训练的。于是乎,Grad-CAM横空出世,解决了这个问题。

Grad-CAM的基本思路和CAM是一致的,也是通过得到每对特征图对应的权重,最后求一个加权和。但是它与CAM的主要区别在于求权重 w k c w^c_k wkc的过程。CAM通过替换全连接层为GAP层,重新训练得到权重,而Grad-CAM另辟蹊径,用梯度的全局平均来计算权重。事实上,经过严格的数学推导,Grad-CAM与CAM计算出来的权重是等价的

计算Grad-CAM中第k个特征图对类别c的权重为 a k c a^c_k akc,:
在这里插入图片描述
其中,Z为特征图的像素个数, y c y^c yc是对应类别c的logits 分数值 (即是softmax层的输入值), A i k j A^k_ij Aikj表示第k个特征图中,(i,j)位置处的像素值。

计算热力图

求得类别c对所有特征图的权重后,求其加权和就可以得到热力图 / 分类定位图。再乘回原来的feature map。在这里插入图片描述

Grad-CAM的整体结构
在这里插入图片描述

其中ReLU函数起到保留对分类具有积极作用的像素值,抑制对分类具有消极作用的像素值,然后获得一个粗糙的热图。ReLU的原因在于我们只关心对类别c有正影响的那些像素点,如果不加ReLU层,最终可能会带入一些属于其它类别的像素,从而影响解释的效果。使用Grad-CAM对分类结果进行解释的效果如下图所示:在这里插入图片描述
Grad-CAM优势

  • ①适用于具有全连接层的卷积神经网络(如VGG)
  • ②适用于具有结构化输出的卷积神经网络(如字幕)
    ③适用于具有多模态输入任务的卷积神经网络(如视觉问答)

Grad-CAM与其他方法的比较

Grad-CAM是CAM(Class Activation Mapping)的一般化

CAM只适用于在预测之前对卷积映射进行全局平均池化的特定卷积神经网路架构(即conv feature maps -> global average pooling -> softmax layer),在某些任务上(如图片分类),此架构与一般网络相比精度可能较低,或者根本不适用于任何其他任务(如字幕或视觉问答)。对于适用CAM的网络架构,其预测原理如下:
在这里插入图片描述

参考:
https://mp.weixin.qq.com/s/4Tq43DEaUk_rtLubcztyNw
https://www.weixiuzhan.cn/news/show-30055.html
https://www.zhihu.com/question/274926848/answer/473562723

Grad-CAM++

暂无

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值