本文分为两部分:算法讲解+论文精读
一、GradCAM深度学习可解释性分析
论文:Grad-CAM: Visual Explanations From Deep Networks via Gradient-Based Localization
创新点+数据挖掘点
基础是CAM
复习下CAM算法
- 对深度学习实现可解释性分析、显著性分析
- 可扩展性强,后续衍生出各种基于CAM的算法
- 每张图片、每个类别,都能生成CAM热力图
- 弱监督定位:图像分类模型解决定位问题
- 潜在的“注意力机制”
- 按权重排序可得特征重要度,辅助Machine Teaching
CAM算法中,必须有GAP层
否则无法计算每个channel的权重
如果没有GAP层,需要把全连接层替换为Gap
再重新训练模型
CAM算法缺点:
- 必须得有GAP层,否则得修改模型后重新训练
- 只能分析最后一层卷积层输出,无法分析中间层
- 仅限图像分类任务
GradCAM就是用来解决这三个缺点的
网络结构如下:
可以用其做两方面的扩展
Grad:可以兼容各种各样的任务
实验结果很不错:高分辨率与类别判别性
能给出合理解释,能明白神经网络的逻辑
AI只关注自己的损失函数,AI没有道德感,人应该给AI把关
GradCAM应用:
Kaggle气胸检测竞赛:
GradCAM算法优点:
- 无需GAP层,无需修改模型结构,无需重新训练
- 可分析任意中间层,而不只是最后一层卷积层
- 数学上是原生CAM的推广
- 细粒度图像分类、Machine Teaching
继承了CAM优点
GradCAM算法优点:
- 图像上有多个同类物体时,只能画出一块热力图
- 不同位置的梯度值,GAP平均之后,影响是相同的(明显边缘的像素并没有中间像素那么重要)
- 梯度饱和、梯度消失、梯度噪声
- 权重大的channel,不一定对类别预测分数贡献大
- 只考虑从后往前的反向传播梯度,没有考虑前向预测的影响
- 深层生成的粗粒度热力图和浅层生成的细粒度 热力图都不够精准(前者粗粒度,后者类别判别性不强)
这些缺点要一个一个解决:GradCAM后续算法
Grad-CAM++、ScoreCAM、LayerCAM
Grad-CAM++解决前两个缺点:
- 图像上有多个同类物体时,只能画出一块热力图
- 不同位置的梯度值,GAP平均之后,影响是相同的
ScoreCAM解决3、4、5的缺点
后面两张图对应3、4
解决方案:从前向后算score
LayerCAM算法:解决的缺点6
CAM拓展算法是在权衡中博得一个更加优势的权衡
一些相关阅读与资料
二、【精读Al论文】GradCAM可解释性分析
具体的笔记在EndNote里,需要可以留言
附注部分应该是选择了一些最好看的图,因为毕竟是弱监督,没有选择图像分割
论文目录如下:
- Introduction
- Related Work
- Grad-CAM
- Evaluating Localization Ability of Grad-CAM
- Evaluating Visualizations
- Grad-CAM for Image Captioning and VQA
- Conclusion
论文十问:
Q1论文试图解决什么问题?
深度学习的可解释性分析、显著性分析(这里的显著性分析优点不太理解)
Q2这是否是一个新的问题?
不是,在Grad-CAM,有大量对卷积神经网络学习到的特征做可视化的工作,也有CAM类激活热力图的工作
Q4有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
可视化卷积网络学到的特征
CAM类激活热力图
Q5论文中提到的解决方案之关键是什么?
对原生CAM(类激活热力图)改进,计算“特定类别预测分数相对于最后一层卷积层输出特征图每个元素的偏导数”,进而计算特征图每个channel对模型预测为特定类别的影响程度。
修复了部分CAM的bug:无需修改模型,无需重新训练,即可对已有卷积网络模型绘制特定类别的Grad-CAM热力图,展示指定类别在原图上重点关注的特征区域、图像描述、视觉问答等多个任务。
Q6论文中的实验是如何设计的?
ImageNet弱监督定位任务
人工评价
图像分类、图像描述、视觉问答、DenseCap等其它视觉任务
Q9这篇论文到底有什么贡献
修复了部分CAM的bug:无需修改模型,无需重新训练,即可对已有卷积网络模型绘制特定类别的Grad-CAM热力图,展示指定类别在原图上重点关注的特征区域,并用图像分类实现弱监督定位。可推广至图像分类、图像描述、视觉问答等多个任务。
Q10下一步呢?有什么工作可以继续深入?
Grad-CAM++
Score-CAM
LayerCAM
等一系列基于CAM的工作
以下是笔记的一些示例:
总结:
本论文是基于CAM对CAM的各个缺点进行逐一突破,分别提出对应的CAM拓展算法,当然主要讲的是Grad-CAM,关键就是前面提到的:对原生CAM(类激活热力图)改进,计算“特定类别预测分数相对于最后一层卷积层输出特征图每个元素的偏导数”,进而计算特征图每个channel对模型预测为特定类别的影响程度。