MIT提出mNeuron:一个可视化深度模型神经元的Matlab插件
选自MIT
机器之心编译
参与:黄小天、Smith
近日,麻省理工学院(MIT)Antonio Torralba 等人发表了一篇题为《mNeuron: A Matlab Plugin to Visualize Neurons from Deep Models》的文章,介绍了一个可视化深度模型神经元的 Matlab 插件 mNeuron,能够可视化单个神经元和单个神经元模式;并共享了该插件实现的代码和 4 个应用演示。
项目链接:http://vision03.csail.mit.edu/cnn_art/?utm_content=buffer2ff9c&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
内容
代码:通过反向传播优化可视化从深度学习工具包中训练的神经元 [支持 Caffe 和 matconvnet]
演示:
可视化单个神经元
可视化单个神经元模式
类内变体(Intra-class variation):优化已学习的 fc6 或 fc7 relu mask
层级二进制 CNN 代码(Hierarchical binary CNN code):通过预定义的 relu mask 优化
CNN 图像完成(Image completion with CNN):通过边界条件优化
参考
可视化方法根据《Mahendran and Vedaldi. Understanding Deep Image Representations by Inverting Them》进行了改良。
说明书
演示 1:可视化单一神经元(V_neuronInv.m)
目的:找到一个图像,可以使单神经元的激活值优化 [Erhan et al., Simonyan et al., Zhou et al.]
a. 不同连接层(AlexNet):我们使从 ImageNet 数据集进行学习的 Conv 网络 1、3、5 层的神经元可视化。随着层的深度的增加,神经元学着去识别简单的边沿、斑点和纹理图案,以及复杂的物体局部和类别(从 Conv 网络的第 5 层,我们检索了真实图像从而与 Zhou et al. 的结果进行对比)。
b. 镶嵌艺术(Tessellation Art)我们不会在 1x1 的接受域(receptive field)内对单神经元的激活值进行优化,我们把接受域延伸到了全图范围(GoogleNet inception4a—14x14)。我们手动整理了一些神经元的可视化结果,从而把物体的局部镶嵌进艺术墙纸。
c. 不同的数据集:我们可视化了从两个不同数据集(ImageNet 和 Places)进行学习的 Conv 网络 4-5 层的神经元。
d. 不同的网络:(AlexNet、VGG-16、NIN、GoogleNet)给定四个语义片段「狗、火焰、钟表和车轮」,我们对四个不同网络的约齐层(roughly aligned layers—在全连层之前)的最活化(top-activated)神经元进行可视化。
演示 2:可视化类内变体
类内变体:在给定一个物体类别的训练图像的情况之下,我们集群 Fc 神经元反应以找到一般性的神经元放电模式(神经通路)。对于每个模式,我们选择 top-k 已激活的神经元,并从数字上找到一个优化这些神经元的全部激活值的图像。
演示 3:可视化二进制 CNN 代码
给定一张输入图像,我们可以把它的二进制代码定义为其 relu mask m5-7。[Agrawal et al.(https://arxiv.org/abs/1407.1610)] 指出,这些二进制代码取得了原始深度特征的相似分类结果。这里我们考虑三个不同的带有渐增长度的二进制代码:m7、m6-7、m5-7。
为了可视化一张图像的二进制代码,我们为 Fc8 标签执行相同的「单一神经元可视化」的操作,除却在优化过程之中原始 relu 层之后应用额外的二进制代码。通过更多层的二进制代码,我们可以恢复原始图像的本质(essence),这部分解释了它的分类有效性。
演示 4:用卷积神经网络完成图像 (V_inpaint.m)
详见说明书 5.3 章节。主旨是我们可以利用图像上的边界约束来进行神经元(单一神经元或者神经元模式)可视化。