深度学习可解释性-可视化技术

参考资料:https://www.zhihu.com/search?type=content&q=SmoothGrad

CAM

CAM是什么?

  • CAM全称Class Activation Mapping,即类别激活映射图,也被称为类别热力图、显著性图等。是一张和原始图片等同大小图,该图片上每个位置的像素取值范围从0到1,一般用0到255的灰度图表示。可以理解为对预测输出的贡献分布,分数越高的地方表示原始图片对应区域对网络的响应越高、贡献越大。
  • 可视化的时候,一般利用热力图和原图叠加的形式呈现。

为什么用CAM?

  • 有助于理解和分析神经网络的工作原理及决策过程,进而去更好地选择或设计网络。例如对于分类网络,如果参考CAM相当于除了分类accuracy以外,对网络又提出了更高的要求:不但要求预测准确率高,还需要网络提取到我们需要的特征。
  • 利用可视化的信息引导网络更好的学习,例如可以利用CAM信息通过"擦除"或"“裁剪”"的方式对数据进行增强。
  • 利用CAM作为原始的种子,进行弱监督语义分割或弱监督定位。既然CAM能够cover到目标物体,所以可以仅利用分类标注来完成语义分割或目标检测任务,极大程度上降低了标注的工作量,但这对CAM的要求更高。

怎么用CAM?

  • 卷积神经网络的卷积操作可以看做是滤波器对图片进行特征提取,通过滑动窗口的方式实现,因此特征层和输入图片存在空间上的对应关系。一个深层的卷积神经网络,通过层层卷积操作,提取空间和语义信息。一般存在其他更难理解的层,例如分类的全连接层、softmax层等,很难以利用可视化的方式展示出来。所以,CAM的提取一般发生在卷积层,尤其是最后一层卷积。通常每一层的特征图还会有很多层,一般称为channel(通道),例如Resnet18最后一层特征图有512个通道。这512个通道可以认为提取到不同的特征,该特征具有高度抽象性,且每个通道对最后的结果贡献不同,因此单独可视化每个通道获取热图也让人很难理解。所以一般CAM的获取是根据每个通道不同的贡献大小去融合获取一张CAM。

    具体步骤:

  • step1:提取需要可视化的特征层,例如尺寸为 7 ∗ 7 ∗ 512 7*7*51277512 的张量;

  • step2:获取该张量的每个channel的权重,即长度为512的向量;

  • step3:通过线性融合的方式,将该张量在channel维度上加权求和,获取尺寸为7*7的map;

  • step4:对该map进行归一化,并通过插值的方式resize到原图尺寸.

A. grad-CAM和 CAM 的区别?

CAM 只能用于最后一层特征图和输出之间是GAP的操作,grad-CAM可适用非GAP连接的网络结构;
CAM只能提取最后一层特征图的热力图,而gard-CAM可以提取任意一层;


版权声明:本文为weixin_38072029原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。