一、可视化卷积神经网络的中间输出(中间**):有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义。
二、可视化卷积神经网络的过滤器:有助于精确理解卷积神经网络中每个过滤器容易接受的视觉模式或视觉概念。
三、可视化图像中类**的热力图:有助于理解图像的哪个部分被识别为属于某个类别,从而可以定位图像中的物体。
可视化中间**,是指对于给定输入,展示网络中的各个卷积层和池化层输出的特征图(即**函数的输出)。
这让我们看到输入如何被分解为网络学到的不同过滤器。我们希望在三个维度对特征图进行可视化:宽度、高度和深度(通道)。每个通道都对应相对独立的特征,所以将这些特征图可视化的正确方法是将每个通道的内容分别绘制成二维图像。
我们加载一个保存好的猫狗分类器模型,结构如下图所示:
输入一张猫咪图像,绘制con2d_2层所有特征图(通道数为64):
需要注意的是,**的稀疏度随着层数的加深而增大。在第一层里所有过滤器都被输入图像**,但在后面的层里,会出现越来越多的过滤器是空白的。我们所示图像为第三层,已经有不少过滤器显示空白信息。
可视化卷积神经网络的过滤器,显示每个过滤器所响应的视觉模式。这可以通过在输入空间中进行梯度上升来实现:从空白输入图像开始,将梯度下降应用于卷积神经网络输入图像的值,其目的是让某个过滤器的响应最大化。得到的输入图像是选定过滤器具有最大响应的图像。
卷积神经网络的每一层都学习一组过滤器,以便将其输入表示为过滤器的组合。随着层数的加深,卷积神经网络的过滤器变得越来越复杂,越来越精细。
可视化类**的热力图,有助于了解一张图像的哪一部分让卷积神经网络做出了最终的分类决策。
输入图像生成类**的热力图是与输出类别相关的二维分数网格,对任何输入图像的每个位置都要进行计算,它表示每个位置对该类别的重要程度。
实现方法:给定一张输入图像,对于一个卷积层的输出特征图,用类别相对于通道的梯度对这个特征图中的每个通道进行加权。直观上来看,理解这个技巧的一种方法是,你是用“每个通道对类别的重要程度”对“输入图像对不同通道的**强度”的空间图进行加权,从而得到了“输入图像对类别的**强度”的空间图。