【计算机视觉】CNN 可视化算法 CAM & Grad-CAM

简介: CAM 算法是论文《Learning Deep Features for Discriminative Localization》中提出的,作者发现 CNN 网络虽然在训练时可能未提供对象的位置,但是仍然具有很强的定位特征能力。《Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization》论文提出的 Grad-CAM 算法,Grad-CAM 利用网络反向传播的梯度计算出 feature map 每一个通道的权重从而得到热力图。因此 Grad-CAM 可以直接用于各种 CNN 网络而无需重新训

一、可视化模型背景

image.png
CAM 算法是论文《Learning Deep Features for Discriminative Localization》中提出的,作者发现 CNN 网络虽然在训练时可能未提供对象的位置,但是仍然具有很强的定位特征能力,如上图所示。

上图是 CAM 运行的效果,可以看到对于刷牙这一类,CNN 能有效地定位到牙刷,而对于锯树,CNN 能有效定位到电锯。

但是 CNN 后面通常会接全连接层,作者认为全连接层会影响 CNN 的定位能力。因此提出了 CAM 算法,用全局平均池化 GAP 代替全连接层,从而保留模型的定位特征能力。全局平均池化 GAP 通常起到正则化的作用,防止训练时的过拟合,GAP 和其他池化方法的区别如下图所示,全局的池化方法就是把池化的范围扩大到整个特征图的尺寸。
image.png
作者也在 ILSVRC 数据集上测试了 CAM 的目标定位能力,CAM 使用的是弱监督目标定位训练,得到了 37.1% 的 top-5 错误率,而使用完全监督目标定位训练的 AlexNet 的 top-5 错误率为 34.2%,二者非常接近。

弱监督目标定位训练和完全监督目标定位训练的区别如下图所示,即弱监督时图片只有类别没有目标框,而完全监督图片是有目标框的。
image.png

二、CAM

image.png
上图是 CAM 的模型示意图,最后一个卷积层后面采用了 GAP,GAP 后再利用 Softmax 层进行分类。图中最后一层卷积层的通道数为 $n$,因此 GAP 后得到的向量维度是 n,分别对应每个通道。图中的 $w_1$, ……, $w_n$ 指 Softmax 层的权重,这里对应的是一个类 class 的权重 (图中的类是 Australian terrier 即澳大利亚梗犬)。

最后一层卷积层输出的特征图包含 $n$ 个通道,利用该类的权重将特征图的 $n$ 个通道加权求和,再映射到原始图片上即可得到不同区域的重要程度。这里是由于特征图和原始图尺寸不同,所以要映射,CAM 直接使用 resize 将特征图缩放到和原始图一样的大小。接下来介绍 CAM 的一些公式。

对于一幅图像,可以用下面的公式计算出其属于类别 $c$ 的得分,其中 $k$ 表示最后一个卷积层的通道,$x$、$y$ 表示特征图的坐标,$f$ 表示特征图,$w$ 表示 Softmax 的权重:

$$ S_c=\sum_kw_k^c\sum_{x,y}f_k(x,y)\\=\sum_{x,y}\sum_kw_k^cf_k(x,y) $$
对于类别 $c$,我们可以得到图片各个区域重要性的映射图,公式如下,即将特征图加权求和得到:
$$ M_c(x,y)=\sum_kw_k^cf_k(x,y) $$

下面是 CAM 可视化的效果,能够比较清晰地定位到图像中比较相关的地方。

image.png
同时 CAM 对于不同的类别 class 生成的热力图是有所区别的,如下所示,对于类别 dome (圆顶),热力图重点关注建筑的顶部。

image.png

三、CNN 可视化算法 Grad-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

3.1 Guided Backpropagation

Guided Backpropagation 出自论文《Striving for Simplicity: The All Convolutional Net》,主要可视化网络反向传播的梯度,从而了解网络。这一种可视化方法具有很高的分辨率,能够展示图像中的细粒度细节,但是可视化的效果对于类别没有很好的判别性。

下图是 Guided Backpropagation 的原理以及可视化的效果:

image.png
image.png

四、Occlusion Sensitivity

Occlusion Sensitivity 出自论文《Visualizing and Understanding Convolutional Networks》,Occlusion Sensitivity (遮挡敏感) 主要是使用灰色的方块遮挡图片上的不同区域,并记录各个区域被遮挡后模型预测置性度的变化。如果说某一个位置被遮挡后,模型预测的置性度大幅度下降,则说明该区域是比较重要的。Occlusion Sensitivity 可视化的效果如下图所示,图中的第四列表示的就是遮挡不同区域后的置性度。

image.png

五、Grad-CAM 整体结构和效果

image.png
上面是 Grad-CAM 的示意图,右边的部分表示不同的计算机视觉任务,Image Classification、Image Captioning 等,即 Grad-CAM 可用于各式各样的任务。

图片左侧的部分表示可视化的过程,其中包括三个部分,其中 Grad-CAM 是本文介绍的重点:

  • Guided Backpropagation: 就是上一节中简要介绍的方法,具有高分辨率和高细粒度,但是可视化结果的判别性 (对于不同类别区分的能力) 较弱。
  • Grad-CAM: Grad-CAM 可视化的结果,分辨率不高,但是判别性强。
  • Guided Grad-CAM: Grad-CAM 和 Guided Backpropagation 的结果按位相乘得到,这样可以融合 Grad-CAM 和 Guided Backpropagation 的优点,使可视化即具有高分辨率也具有好的判别性。

image.png
上面是不同方法可视化效果的对比,第一行是针对 label 猫的可视化效果,第二行是针对 label 狗的可视化效果。

  • 第一列是原始图片。
  • 第二列是 Guided Backpropagation 的可视化,可以看到分辨率比较高,能够展示不少细粒度的细节,但是对于不同的类别 (猫和狗) 没有足够的判别性,二者的可视化效果很相近。
  • 第三列是 Grad-CAM 的可视化效果,具有比较好的判别性,能够区分猫和狗。
  • 第四列是 Guided Grad-CAM 即 Guided Backpropagation 和 Grad-CAM 相结合,既有高分辨率也有判别性。
  • 第五列是 Occlusion Sensitivity 的可视化效果,Occlusion Sensitivity 在第一节中介绍了。
  • 第六列是 Grad-CAM 可视化 ResNet 的效果。

六、Grad-CAM 实现细节

image.png

接下来重点介绍 Grad-CAM 的实现细节,如上图所示。和 CAM 算法类似,对于一个类别 c,首先需要获得 feature map 每一个通道的权重,然后线性加权求和得到热力图,权重就是图中的 $w_1$, ..., $w_n$。

Grad-CAM 利用反向传播的梯度计算权重,因此不用把网络最后一层改为全局平均池化,公式如下,其中 $c$ 表示类别,$y_c$ 是该类别对应的 logits (即还没经过 Softmax 的值),$A$ 表示卷积输出的 feature map,$k$ 表示 feature map 的通道,$i$、$j$ 表示 feature map 的横纵坐标,$Z$ 表示 feature map 的尺寸 (即长乘宽)。这一过程相当于求 feature map 上梯度的均值,等价于一个全局平均池化操作。

image.png
得到权重后将 feature map 的通道线性加权融合在一起即得到热力图,公式如下,Grad-CAM 对融合后的热力图增加一个 Relu 操作,只保留对于类别 $c$ 有正作用的区域。

image.png

相关文章
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
888 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
1113 3
|
11月前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB 2022a实现时间序列预测,采用CNN-GRU-SAM网络结构,结合鲸鱼优化算法(WOA)优化网络参数。核心代码含操作视频,运行效果无水印。算法通过卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征,全连接层整合输出。数据预处理后,使用WOA迭代优化,最终输出最优预测结果。
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
12月前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
机器学习/深度学习 传感器 算法
计算机视觉:撕裂时空的视觉算法革命狂潮
计算机视觉:撕裂时空的视觉算法革命狂潮
|
11月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。

热门文章

最新文章