可解释机器学习 Task04 - GradCAM深度学习可解释性分析
一、GradCAM算法简介
1.算法流程
- 输入一张图片,经过与CAM算法相同的卷积层操作,到最后一层卷积层输出512个14*14的 feature map
- 将卷积层输出结果输入到全连接层中,得到了1000个类别对应的线性预测分数logit,用 y c y^{c} yc表示
- 求 y c y^{c} yc相对于512*14*14的梯度,得到512*14*14的偏导数,用GAP方法得到512个权重(核心步骤:用梯度代替GAP层)
- 用512个权重与上述对应的 channel 相乘后相加,得到一个14*14的热力图
- 将热力图通过ReLU函数,通过双线性插值的方法缩放回256*256,得到原图大小的图片
2.算法拓展
- 可以用来做多方面的任务(图像分类、图像描述、视觉问答、强化学习……)
- 与Guided Backpropagation(可以得到一种高分辨率细粒度的图像256256)结合,Grad-CAM得到的是1414的粗粒度的矩阵,将矩阵缩放置256*256后,将两种矩阵逐元素的做乘法,得到 Guided Grad-CAM 图像(既是高分辨率(256*256),又具有类别判别性)。
3.算法优点
- 无需GAP层,无需修改模型结构,无需重新训练
- 可分析任意中间层
- 数学上是CAM的推广
- 细粒度图像分类、Machine Teaching
4.算法缺点
- 图像上有多个同类物体时,只能画出一块热力图
- 不同位置的梯度值,GAP平均之后,影响是相同的
- 梯度的传统问题:梯度饱和、梯度消失、梯度噪声
- 权重大的channel,不一定对类别预测分数贡献大
- 只考虑从后往前的反向传播梯度,没考虑前向预测的影响
- 深层生成的粗粒度热力图和浅层生成的细粒度热力图 都不够精准
二、Grad-CAM++
1.解决问题
- 图像上有多个同类物体时,只能画出一块热力图
用不同的 channel 捕捉不同的特征(如下图 A 1 A^{1} A1、 A 2 A^{2} A2、 A 3 A^{3} A3)
- 不同位置的梯度值,GAP平均之后,影响是相同的
给每一个激活函数增加一个权重 α i j k c \alpha^{kc}_{ij} αijkc
三、ScoreCAM
1.解决问题
- 梯度的传统问题:梯度饱和、梯度消失、梯度噪声
- 权重大的channel,不一定对类别预测分数贡献大
- 只考虑从后往前的反向传播梯度,没考虑前向预测的影响
使用了两个卷积神经网络
- 神经网络一:
- 将图像输入Phase 1 中,得到了1000个14*14的 channel
- 对这1000个 cahnnel 进行上采样,得到了1000个256*256的 channel
- 神经网络二:
- 将神经网络一的1000个256*256的 channel 与原图做逐个像素的乘法
- 将上述结果输入到第二个神经网络中,得到1000个权重
- 将这1000个权重与神经网络一的1000个 channel 做线性组合,得到结果
四、LayerCAM
1.解决问题
- 深层生成的粗粒度热力图和浅层生成的细粒度热力图 都不够精准