CNN关注/激活地图

时间:2017-06-24 01:51:42

标签: deep-learning keras

通过卷积神经网络查找哪些图像部分对图像分类贡献最大的常用技术

一般来说,假设我们有2d矩阵,其浮点值介于0和1之间。每个矩阵与标签(单标签,多类)相关联,目标是通过(Keras)2D CNN进行分类。

我试图找到提取对分类贡献最大的行/列的相关子序列的方法。

两个例子:

https://github.com/jacobgil/keras-cam

https://github.com/tdeboissiere/VGG16CAM-keras

非常感谢关注Keras的其他示例/资源。

注意我的数据集不是实际图像,因此在这种情况下使用ImageDataGenerator的方法可能不会直接应用。

1 个答案:

答案 0 :(得分:1)

有许多可视化方法。这些方法都有其优点和缺点。

但是,您必须记住,这些方法可以部分可视化不同的事物。以下是基于此paper的简短概述。 您可以区分三个主要的可视化组:

  • 功能(梯度,显着性图):这些方法可以直观显示输入空间的变化如何影响预测
  • 信号(去卷积,Guided BackProp,PatternNet):可视化信号(神经元激活的原因)。因此,可以直观地看到是哪种模式导致了特定神经元的激活。
  • 归因(LRP,深度泰勒分解,PatternAttribution):这些方法可以直观地显示单个像素对预测的贡献。结果,您将获得一个热图,突出显示输入图像中哪些像素对分类的贡献最大。

由于您要问像素对分类有多少贡献,因此应使用归因方法。尽管如此,其他方法也有其存在的权利。

用于可视化热图的一个不错的工具箱是iNNvestigate。 该工具箱包含以下方法: