CAM算法回顾
CAM算法流程
- 输入原始图像,经过多层无池化的全卷积神经网络处理得到最后一层512个14×14的channel
- 使用GAP对512个channel分别求平均值,得到512个平均数
- 最后经过一个线性分类层得到每个类别对这512个平均数的权重
w
i
,
i
=
1
,
2...512
w_i,i=1,2...512
wi?,i=1,2...512(相当于有512个关注区域,平均数的大小反映了不同区域的重要程度);对每个类别的线性分类分数进行softmax操作得到,将置信度最高的类别作为预测的类别
- 对每个channel进行线性组合得到最终的类别激活热力图,将这个14×14的矩阵以双线性插值的方式缩放回原图大小
CAM算法的精妙之处
- 对深度学习实现可解释性分析、显著性分析
- 可扩展性强,后续衍生出各种基于CAM的算法
- 每张图片、每个类别,都能生成CAM热力图
- 弱监督定位:图像分类模型解决定位问题
- 潜在的“注意力机制”
- 按权重排序可得特征重要度,辅助Machine Teaching
CAM算法的缺点
- CAM算法中,必须有GAP层,否则无法计算每个channel的权重。如果没有GAP层,需把全连接层替换为GAP层,再重新训练模型
- 只能分别最后一层卷积层的,无法分析中间层
- 只能用于图像分类
GradCAM
- 输入原始图像,经过多层无池化的全卷积神经网络处理得到最后一层512个14×14的channel
- 将512个channel输入到全连接层得到每个类别的预测分数
- 对每个类别求对channels的梯度,并进行GAP操作,得到512个权重
- 对每个channel进行线性组合得到最终的类别激活热力图
Grad-CAM算法的优点:
- 无需GAP层,无需修改模型结构,无需重新训练模型
- 可分析任意中间层
- 数学上是原生CAM的推广
- 可用于细粒度图像分类、Machine Teaching
Grad-CAM算法的缺点:
- 图像上有多个同类物体时,只能画出一块热力图
- 不同位置的梯度值,GAP平均之后产生的影响是相同的
- 梯度饱和、梯度消失、梯度噪声
- 权重大的channel,不一定对类别预测分数贡献大
- 只考虑从后往前的反向传播梯度,没有考虑前向预测的影响
- 深层生成的粗粒度(粗粒度)热力图和浅层(类别判别能力不强)生成的细粒度热力图都不够精准
Grad-CAM算法的改进
Grad-CAM++算法
- 解决了“图像上有多个同类物体时,只能画出一块热力图”
- 解决了“不同位置的梯度值,GAP平均之后产生的影响是相同的”
Score-CAM算法
- 解决了“梯度饱和、梯度消失、梯度噪声”
- 解决了“权重大的channel,不一定对类别预测分数贡献大”
- 解决了“只考虑从后往前的反向传播梯度,没有考虑前向预测的影响”
LayerCAM算法
- 解决了“深层生成的粗粒度(粗粒度)热力图和浅层(类别判别能力不强)生成的细粒度热力图都不够精准”
总结
首先简要的回顾了CAM算法的基本流程,重点介绍了GradCAM算法的细节。最后介绍了Grad-CAM++、ScoreCAM和LayerCAM对GradCAM算法缺点的改进。
|