可解释机器学习-CAM / Grad_CAM
- 一、CAM
- 1.CAM算法介绍
- 2.CAM的特点
- 3.CAM算法的缺点
- 二、Grad_CAM
- 1.Grad_CAM算法介绍
- 2.Grad_CAM算法优点
- 3.Grad_CAM算法缺点
- 4.Grad_CAM算法的变种
- 1)Grad_CAM++算法
- 2)ScoreCAM算法
- 3)LayerCAM算法
一、CAM
1.CAM算法介绍
Class Activation Mapping,CAM类激活热力图。不只是训练了一个图像分类模型而已,可以查看训练出来的分类模型的热力图的效果
下图表示:输出512个feature map,每一个feature map被称为一个channel,就是一个矩阵,每一个矩阵都是14 x14的。(蓝、红、绿色薄片是一个channel,14x14)
总共有512个薄片 -> 对应了卷积神经网络最后一层提取出来的512种特征 -> 每一个特征体现在每一个对应的薄片上
把蓝色channel的14×14=196个激活值取一个平均值,得到蓝色的标量。同理,共得到512个标量 / 平均数,称为全局平均池化。
512个平均数会起到全连接层的作用,后面再接一层线性分类层,训练得到它对每一个类别的平均数的权重,再进行softmax操作,得到每个类别的概率。每一个概率都是0 - 1之间的,并且这每个概率求和为 1 -> 得到完整的图像分类预测结果。
权重w 1 间接的反映了该类别对蓝色feature map的关注程度,feature map是卷积神经网络最后一层从图像中提取出来的某一种特征,权重w 1 间接的反映了该类别对这种特征的关注程度。
该权重从w 1到w n,最后一个卷积层是14 x 14的channel;得到的CAM热力图也是14 x 14的低分辨率的矩阵。可以用双线性插值的方法把它缩放回原图大小(类似于word和ppt里的图像缩放),变成一个高分辨率的热力图。
2.CAM的特点
1.全卷积,无池化,因为池化具有平移不变性,会丢失空间信息。
2.GAP操作,可以取代全连接层。
在传统卷积神经网络里面,最后一层卷积层产生了若干个channel,需要把每一个channel展平成一个长向量,再把这个长向量输入给全连接层,这种操作太消耗计算量、也太消耗参数量了,参数量会爆炸。用全局平均池化取代全连接层能大大减少参数量,以前需要512 x 14 x 14个元素,现在只要512个元素就可以了。
3.CAM算法的缺点
1.必须得有GAP层,否则得修改模型结构,把全连接层替换为GAP后重新训练。
2.只能分析最后一层卷积层输出,无法分析中间层
二、Grad_CAM
1.Grad_CAM算法介绍
无需换为GAP,直接使用全连接层,后续采用求梯度方式。
扩展:
2.Grad_CAM算法优点
3.Grad_CAM算法缺点
4.Grad_CAM算法的变种
1)Grad_CAM++算法
改进的缺点:
具体改进部分:
2)ScoreCAM算法
改进的缺点:
具体:
3)LayerCAM算法
改进的缺点: