MIT提出Matlab插件mNeuron:实现深度模型神经元的可视化

MIT提出Matlab插件mNeuron:实现深度模型神经元的可视化

By 黄小天 2017年6月27日 15:49
近日,麻省理工学院(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 章节。主旨是我们可以利用图像上的边界约束来进行神经元(单一神经元或者神经元模式)可视化。



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目标: 本实验的目标是完成一个可以在QEMU仿真器上运行的x86操作系统。具体地说,我们将编写引导扇区代码和内核代码,并将它们组合成一个可引导的磁盘映像。最后,我们将使用QEMU仿真器启动我们的操作系统。 实验步骤: 1. 准备工作 准备工作包括安装必要的软件和工具、下载实验代码和文档等。 2. 编写引导扇区代码 引导扇区是操作系统的第一个扇区,它需要被放置在磁盘的第一个扇区。引导扇区必须包含一个512字节的主引导记录(MBR),其中包括一个引导程序和分区表。我们需要编写一个能够在引导扇区中运行的汇编代码,它将加载内核并将控制权转交给内核。 3. 编写内核代码 内核是操作系统的核心部分,它负责管理计算机的硬件资源、提供系统调用接口等。我们需要编写一个简单的内核,该内核将输出“Hello, world!”并进入无限循环。我们可以使用C语言编写内核代码,并使用GCC编译器将其编译成汇编代码。 4. 构建磁盘映像 我们需要将引导扇区和内核代码组合成一个可引导的磁盘映像。为此,我们可以使用dd命令将引导扇区和内核代码写入一个空白磁盘映像中。 5. 启动操作系统 最后,我们需要使用QEMU仿真器启动我们的操作系统。我们可以使用以下命令启动QEMU并加载磁盘映像: ``` qemu-system-i386 -hda os.img ``` 实验结果: 经过以上步骤,我们成功地编写了一个简单的操作系统,并使用QEMU仿真器进行了测试。当我们启动操作系统时,它将输出“Hello, world!”并进入无限循环。 实验总结: 本实验让我了解了操作系统的基本概念和架构,并学会了如何编写一个简单的操作系统。通过实验,我更深入地理解了计算机系统的底层原理,对操作系统的工作原理有了更深入的了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值