赞
踩
本文介绍 2016 年提出的 CAM (Class Activation Mapping) 算法,能够可视化卷积神经网络的特征图,并映射到原始图像中得到不同区域的重要性。
CAM 利用了全局平均池化 GAP (Global Average Pooling) 和最后一层 softmax 的参数将特征图线性加权起来,从而获得模型对于不同类别重点关注的区域。
CAM 算法是论文《Learning Deep Features for Discriminative Localization》中提出的,作者发现 CNN 网络虽然在训练时可能未提供对象的位置,但是仍然具有很强的定位特征能力,如上图所示。
上图是 CAM 运行的效果,可以看到对于刷牙这一类,CNN 能有效地定位到牙刷,而对于锯树,CNN 能有效定位到电锯。
但是 CNN 后面通常会接全连接层,作者认为全连接层会影响 CNN 的定位能力。因此提出了 CAM 算法,用全局平均池化 GAP 代替全连接层,从而保留模型的定位特征能力。全局平均池化 GAP 通常起到正则化的作用,防止训练时的过拟合,GAP 和其他池化方法的区别如下图所示,全局的池化方法就是把池化的范围扩大到整个特征图的尺寸。
作者也在 ILSVRC 数据集上测试了 CAM 的目标定位能力,CAM 使用的是弱监督目标定位训练,得到了 37.1% 的 top-5 错误率,而使用完全监督目标定位训练的 AlexNet 的 top-5 错误率为 34.2%,二者非常接近。
弱监督目标定位训练和完全监督目标定位训练的区别如下图所示,即弱监督时图片只有类别没有目标框,而完全监督图片是有目标框的。
上图是 CAM 的模型示意图,最后一个卷积层后面采用了 GAP,GAP 后再利用 Softmax 层进行分类。图中最后一层卷积层的通道数为 n n n,因此 GAP 后得到的向量维度是 n,分别对应每个通道。图中的 w 1 w_1 w1, ……, w n w_n wn 指 Softmax 层的权重,这里对应的是一个类 class 的权重 (图中的类是 Australian terrier 即澳大利亚梗犬)。
最后一层卷积层输出的特征图包含 n n n 个通道,利用该类的权重将特征图的 n n n 个通道加权求和,再映射到原始图片上即可得到不同区域的重要程度。这里是由于特征图和原始图尺寸不同,所以要映射,CAM 直接使用 resize 将特征图缩放到和原始图一样的大小。接下来介绍 CAM 的一些公式。
对于一幅图像,可以用下面的公式计算出其属于类别 c c c 的得分,其中 k k k 表示最后一个卷积层的通道, x x x、 y y y 表示特征图的坐标, f f f 表示特征图, w w w 表示 Softmax 的权重:
S c = ∑ k w k c ∑ x , y f k ( x , y ) = ∑ x , y ∑ k w k c f k ( x , y ) S_c=\sum_kw_k^c\sum_{x,y}f_k(x,y)\\ =\sum_{x,y}\sum_kw_k^cf_k(x,y) Sc=k∑wkcx,y∑fk(x,y)=x,y∑k∑wkcfk(x,y)
对于类别
c
c
c,我们可以得到图片各个区域重要性的映射图,公式如下,即将特征图加权求和得到:
M
c
(
x
,
y
)
=
∑
k
w
k
c
f
k
(
x
,
y
)
M_c(x,y)=\sum_kw_k^cf_k(x,y)
Mc(x,y)=k∑wkcfk(x,y)
下面是 CAM 可视化的效果,能够比较清晰地定位到图像中比较相关的地方。
同时 CAM 对于不同的类别 class 生成的热力图是有所区别的,如下所示,对于类别 dome (圆顶),热力图重点关注建筑的顶部。
CAM 可以用于可视化 CNN,通过视觉解释 CNN 做出预测时重点关注的区域。但是 CAM 的实现依赖于全局平均池化层,通过全局平均池化得到 feature map 每一个通道的权重,然后线性加权求和得到网络关注区域的热力图。因此对于很多网络都不能直接使用,需要把网络后面的全连接层改为全局平均池化。CAM 算法的示意图如下:
本文介绍《Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization》论文提出的 Grad-CAM 算法,Grad-CAM 利用网络反向传播的梯度计算出 feature map 每一个通道的权重从而得到热力图。因此 Grad-CAM 可以直接用于各种 CNN 网络而无需重新训练 (如 VGG、ResNet),同时 Grad-CAM 也可以用于针对不同任务的网络 (如图像分类、看图说话、图像问答)。
在 Grad-CAM 论文里还提到了一些别的可视化方法,在这里先简单地介绍一下其中两种: Guided Backpropagation 和 Occlusion Sensitivity。
Guided Backpropagation 出自论文《Striving for Simplicity: The All Convolutional Net》,主要可视化网络反向传播的梯度,从而了解网络。这一种可视化方法具有很高的分辨率,能够展示图像中的细粒度细节,但是可视化的效果对于类别没有很好的判别性。
下图是 Guided Backpropagation 的原理以及可视化的效果:
Occlusion Sensitivity 出自论文《Visualizing and Understanding Convolutional Networks》,Occlusion Sensitivity (遮挡敏感) 主要是使用灰色的方块遮挡图片上的不同区域,并记录各个区域被遮挡后模型预测置性度的变化。如果说某一个位置被遮挡后,模型预测的置性度大幅度下降,则说明该区域是比较重要的。Occlusion Sensitivity 可视化的效果如下图所示,图中的第四列表示的就是遮挡不同区域后的置性度。
上面是 Grad-CAM 的示意图,右边的部分表示不同的计算机视觉任务,Image Classification、Image Captioning 等,即 Grad-CAM 可用于各式各样的任务。
图片左侧的部分表示可视化的过程,其中包括三个部分,其中 Grad-CAM 是本文介绍的重点:
上面是不同方法可视化效果的对比,第一行是针对 label 猫的可视化效果,第二行是针对 label 狗的可视化效果。
接下来重点介绍 Grad-CAM 的实现细节,如上图所示。和 CAM 算法类似,对于一个类别 c,首先需要获得 feature map 每一个通道的权重,然后线性加权求和得到热力图,权重就是图中的 w 1 w_1 w1, …, w n w_n wn。
Grad-CAM 利用反向传播的梯度计算权重,因此不用把网络最后一层改为全局平均池化,公式如下,其中 c c c 表示类别, y c y_c yc 是该类别对应的 logits (即还没经过 Softmax 的值), A A A 表示卷积输出的 feature map, k k k 表示 feature map 的通道, i i i、 j j j 表示 feature map 的横纵坐标, Z Z Z 表示 feature map 的尺寸 (即长乘宽)。这一过程相当于求 feature map 上梯度的均值,等价于一个全局平均池化操作。
得到权重后将 feature map 的通道线性加权融合在一起即得到热力图,公式如下,Grad-CAM 对融合后的热力图增加一个 Relu 操作,只保留对于类别 c c c 有正作用的区域。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。