通过卷积神经网络查找哪些图像部分对图像分类贡献最大的常用技术是什么?
通常,假设我们有2d矩阵,其浮点值介于0和1之间.每个矩阵与标签(单标签,多类)相关联,目标是通过(Keras)2D CNN进行分类.
我正在尝试找到提取对分类贡献最大的行/列的相关子序列的方法.
两个例子:
https://github.com/jacobgil/keras-cam
https://github.com/tdeboissiere/VGG16CAM-keras
其他关注Keras的示例/资源将非常受欢迎.
请注意,我的数据集不是实际图像,因此在这种情况下使用ImageDataGenerator的方法可能不会直接应用.
最佳答案 有许多可视化方法.这些方法中的每一种都有其优点和缺点.
但是,您必须记住,这些方法部分地可视化不同的事物.以下是基于此paper的简短概述.
您可以区分三个主要可视化组:
>函数(渐变,显着性图):这些方法可视化输入空间的变化如何影响预测
>信号(deconvolution,Guided BackProp,PatternNet):可视化信号(神经元激活的原因).因此,这可视化了什么模式导致特定神经元的激活.
>归因(LRP,深泰勒分解,PatternAttribution):这些方法可视化单个像素对预测的贡献程度.因此,您将获得一个热图,突出显示输入图像的哪些像素对分类的贡献最大.
由于您在询问像素对分类的贡献程度,因此您应该使用归因方法.然而,其他方法也有其存在的权利.
一个可视化热图的漂亮工具箱是iNNvestigate.
此工具箱包含以下方法:
> SmoothGrad
> DeConvNet
> Guided BackProp
> PatternNet
> PatternAttribution
>遮挡
> Input times Gradient
> Integrated Gradients
> Deep Taylor
> LRP
> DeepLift