[可解释性分析]CAM

发布时间 2023-05-09 18:30:15作者: 大师兄啊哈

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都加起来,如下面的公式所示:

image


最后把结果通过上采样(双线性插值)还原到与原图一样的分辨率,就可以可视化热力图了。

3. 优点

  • 对深度学习实现可解释性分析、显著性分析
  • 可扩展性强,后续衍生出各种基于CAM的算法
  • 每张图片、每个类别,都能生成CAM热力图
  • 弱监督定位:图像分类模型解决定位问题5.潜在的“注意力机制
    使得Machine Teaching成为可能

4. 限制与缺点

通过原理可以看出,本方法是将feature map的位置直接映射回原图,因此网络不能有最大池化层,因为池化 (下采样) 引入了平移不变性也意味着丢失了长宽方向的位置信息。

另外,CAM算法中,必须有GAP层,否则无法计算每个channel的权重。如果没有GAP层,需把全连接层替换为GAP再重新训练模型,所以本文在对VGG等经典网络进行可解释性分析的时候,都替换了最后的输出特征的全连接层改为GAP层。

5. 其他

除了可解释性分析外,改方法可以用于细粒度图像分类,概念语义等任务,不过这些对后面的影响不大。

6. 参考

[1] CAM可解释性分析-算法讲解

[2] 可视化工具扩展阅读

(完)