CAM来自Learning Deep Features for Discriminative Localization, CVPR2016
GradCAM来自Grad-CAM: Visual Explanations From Deep Networks via Gradient-Based Localization, ICCV 2017

CAM和GradCAM的提出是基于图像分类背景,但是我们应该学会其算法思想,这可以帮我们迁移到后期的其他深度学习研究中。

CAM-class activation mapping

CAM即类别激活映射,CAM是一个很简单的算法,对于一张图像,每个类别都可以得到一个CAM热力图,并且表现出视觉任务上的早期注意力机制。

目标检测mr指标_计算机视觉

  • 每个类别都可以得到一个对应的CAM热力图(标注类别是dome,通过CAM解释后,发现网络其实可以感知出其他语义信息)

CAM算法非常简单,只要模型结构符合CAM的默认要求,就无需重新训练网络,可以做到直接使用:

目标检测mr指标_深度学习_02

  • CAM很简单,但是要求必须要有一个GAP层(Global average pooling层),否则不能得到最后一个feature maps的每个channel的特征图(热力图)对应的权重。
  • 如果没有GAP,需要把模型末端改成GAP+全连接层的形式,并重新训练网络。

GradCAM-Gradient-weighted Class Activation Mapping

GradCAM的提出是为了解决CAM对模型架构的要求限制,GradCAM方法如下:

目标检测mr指标_目标检测mr指标_03

  • GradCAM概述:给定一张图像和一个感兴趣的类别(例如,"cat"或任何其他类别的输出)作为输入,我们通过模型的CNN部分前向计算图像,然后通过特定任务(task-specific)的计算获得该类别的原始分数。所有类别的梯度都设置为零,但所需类别"cat"除外,该类别设置为1。然后,该信号被反向传播到Rectified Conv Feature Maps,我们将其结合起来计算粗糙GradCAM(蓝色热图),该热力图表示模型决策的局部激活(类似CAM)。最后,我们将热图与引导反向传播(Guided Backprop,输入图像级的梯度)逐点相乘,以获得高分辨率和语义特定的Guided GradCAM可视化。

以图像分类为例,具体的GradCAM计算过程如下:

目标检测mr指标_目标检测mr指标_04

  • 图像经过CNN得到特征图目标检测mr指标_GAP_05(灰色的Rectified Conv Feature Maps),然后不经过GAP,而是直接flatten,然后输入全连接层再输出logit类别概率。
  • 此时,在不改变模型的情况下,我们不能使用CAM来解释,我们对类别目标检测mr指标_深度学习_06,通过前向传播,我们可以知道模型预测图像属于类别目标检测mr指标_深度学习_06的概率为目标检测mr指标_计算机视觉_08,利用反向传播,获得类别目标检测mr指标_深度学习_06关于目标检测mr指标_GAP_05上第目标检测mr指标_计算机视觉_11张特征图的位置目标检测mr指标_GAP_12的梯度目标检测mr指标_GAP_13
  • 该梯度的物理意义是:目标检测mr指标_GAP_05上第目标检测mr指标_计算机视觉_11张特征图的位置目标检测mr指标_GAP_12的激活值进行微小改变,会引起目标检测mr指标_计算机视觉_08改变的变化量。
  • 然后,对梯度特征图(彩色)进行GAP,得到CAM算法中需要的权重,通过将权重与目标检测mr指标_GAP_05(灰色的Rectified Conv Feature Maps)进行加权,得到类别目标检测mr指标_深度学习_06对应的GradCAM。