logo头像

猪老大要进步!

TensorFlow 2.x可视化--类激活图

本文于 1207 天之前发表,文中内容可能已经过时。

卷积神经网络在分类问题中如何更好地可视化以证明它确实学习到了一些“知识”?这是写论文的时候导师给我的一个难题。

集思广益之后我发现了这个——“类热力图”。它可以表现出卷积神经网络具体在关注哪些地方,对哪些特征比较敏感。

类激活映射(CAM)是一种生成热力图的技术,用于突出图像的类的特定区域。 由于最终的表达形式看起来像是热力图,即神经网络越“重视”的地方越红,所以我把它叫做“类热力图”,但是多数时候我们都叫它“类激活图”。

如果将“类热力图”在训练过程中可视化,我们将会得到以下的效果。

training process

计算方法:给定一张输入图像,对于一个卷积层的输出特征,用类别相对于通道的梯度对这个特征图中的每个通道进行加权。

通俗地来讲,就是计算最后一个卷积层对应预测结果的梯度,梯度越大代表该通道越重要,越重要的通道最后就越红色。

程序实现包括以下几个步骤:

  • 载入库和模型
  • 读取一张图片进行判断
  • 计算类激活图
  • 将类激活图加诸原来的图像上面

我在我先前训练的tensorflow2.0图像分类实例跑了一下,得到了以下结果:

heatmap

代码下载:我的Github仓库

参考资料:

1、可视化卷及神经网络热力图

2、论文:Grad-CAM: Why did you say that?

3、知乎大佬:如何利用CAM(类激活图)动态可视化模型的学习过程

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励