[可解释性分析]CAM
1. 前言
CAM由周博磊等在论文《Learning Deep Features for Discriminative Localization》中提出,是神经网络可解释性分析方面的经典论文,影响了后续很多的工作。
主要的方法非常简单但又巧妙,通过全局平均池化(GAP)层,获得指定类别对最后一层卷积层输出的每个特征图Channel的权重,进而计算CAM类激活热力图,展示指定类别在原图上重点关注的特征区域。并巧妙用图像分类实现弱监督定位。
2. 算法原理
算法原理极其简单。原始图像通过若干个卷积层下采样,到最后一个卷积层提取n个channel的feature map,然后对这些feature map进行全局平均池化(GAP),后面接一个k 个(分类类别)神经元的全连接层,最后用softmax去算概率。
如果指定某个种类(如澳大利亚梗),要看他在原始图片的热力图,即原始图片的什么地方对最后输出这个种类的影响更大,就使用与这个种类连接的weight,乘以这个weight代表的feature map,然后再把这些feature map都加起来,如下面的公式所示:
最后把结果通过上采样(双线性插值)还原到与原图一样的分辨率,就可以可视化热力图了。
3. 优点
- 对深度学习实现可解释性分析、显著性分析
- 可扩展性强,后续衍生出各种基于CAM的算法
- 每张图片、每个类别,都能生成CAM热力图
- 弱监督定位:图像分类模型解决定位问题5.潜在的“注意力机制
使得Machine Teaching成为可能
4. 限制与缺点
通过原理可以看出,本方法是将feature map的位置直接映射回原图,因此网络不能有最大池化层,因为池化 (下采样) 引入了平移不变性也意味着丢失了长宽方向的位置信息。
另外,CAM算法中,必须有GAP层,否则无法计算每个channel的权重。如果没有GAP层,需把全连接层替换为GAP再重新训练模型,所以本文在对VGG等经典网络进行可解释性分析的时候,都替换了最后的输出特征的全连接层改为GAP层。
最后就是,CAM只能分析最后一层卷积层输出,无法分析中间层。
5. 其他
除了可解释性分析外,改方法可以用于细粒度图像分类,概念语义等任务,不过这些对后面的影响不大。
6. 参考
[1] CAM可解释性分析-算法讲解
[2] 可视化工具扩展阅读
(完)