2014 ECCV
纽约大学 Matthew D. Zeiler, Rob Fergus

简单介绍(What)

  1. 提出了一种可视化的技巧,能够看到CNN中间层的特征功能和分类操作。
  2. 通过对这些可视化信息进行分析,我们可以
    • 直观了解和分析CNN学到的特征(中间层特征对应什么样的图像)
    • 可以找到提升模型的办法(观察中间层特征,分析模型可以改进的地方)
    • 分析CNN的遮掩敏感性(遮住某一块区域后对分类结果的影响)
  3. 这种可视化技巧主要用到反卷积的技术,把中间层的激活特征映射回输入空间。

论文动机(Why)

  1. 虽然CNN在图像任务上取得了优秀的表现,但是看不到CNN的内部操作和复杂模型的表现行为,不清楚它们为何会取得这么好的效果。
  2. 在科学的角度上,这是不能接收的,没有清晰地理解CNN是如何工作以及为什么这样运作,那么它的发展和进步就只能靠不断地“试错”。
  3. 所以论文提出了可视化的技巧,可以观察到训练过程中特征的演化和影响,可以分析模型潜在的问题。

怎么做的(How)

  1. 论文的网络结构和alexNet很类似,做了一些改动,比如stride变成2,11x11的卷积核变成7x7的卷积核。
  2. 为了把中间层的激活块映射回输入空间,使用了反卷积的技术,如下图所示,右边是卷积网,左边是反卷积网。
  3. 反池化:由于池化操作不可逆,使用了一个近似可逆的方法,用Switches记录每个池化块最大值的位置,如下图所示,这样就可以利用Switches和池化后的特征图,反池化成Unpooled Maps
  4. relu:反池化后,为了获得有效的特征重建,也使用relu,得到Rectified Unpooled Maps
  5. 反卷积:用原来卷积核的转置版本,进行卷积操作,得到重建的Reconstruction

特征可视化

  1. 下图是对ImageNet训练完成后,在验证集数据进行反卷积得到的各层的可视化结果。
  2. 对于某个给定的feature map,在数据集上选取激活值最强的9张图,画成一个九宫格。把它们映射回输入空间后可以看到不同结构的重建特征图(灰色的那些图),以及这些特征图对应图像块(那些彩色图)。
  3. 可以看到彩色图的变化比灰色图更大,因为灰色图是集中于给出那些具有区分性的信息。
  4. 可以看到每一层似乎在学习不同的东西,第二层学习边缘,角落信息;第三层学到了一些比较复杂的模式,网状,轮胎;第四层展示了一些比较明显的变化,但是与类别更加相关了,比如狗脸,鸟腿;第五层则看到了整个物体,比如键盘,狗。

训练过程的特征演化

  1. 下图是随着训练的迭代,特征图的变化,每一层里面的8列表示不同epoch时的特征图。
  2. 列出的特征图是,对于该层的某个feature map,在所有训练集中激活最强的那个样本的feature map。
  3. 可以看到,低层的特征图收敛地比较快,而高层的特征图要到后面的epoch才开始变动。

帮助提升模型

  1. 通过可视化可以看到alexNet模型中第一层和第二层(下图中的b和d)存在一些问题,比如第二层有一些重叠和混乱
  2. 通过把第一层的11x11卷积核变成7x7,然后stride从4变成2,得到的结果如图c和e所示,得到了更多的独特的特征。
  3. 这样的改动也提升了模型的效果。

遮挡敏感性

  1. 如下图所示,以第一张小狗图为例,b图表示第5层激活最强的feature map,每个位置的颜色表示那个位置被遮挡后的激活,可以看到遮住狗脸后,激活值最低,也就是蓝色那块区域,说明遮挡对模型有影响。
  2. c图表示被遮住不同区域后,第5层激活最强的feature map,第一个图表示遮住狗脸后的。
  3. d图中每个位置的颜色表示那个位置被遮挡后,正确类别的概率。可以看到遮住狗脸后,概率很低,蓝色那一块,说明遮挡对模型有影响。
  4. e图中每个位置的颜色表示那个位置被遮挡后,最可能的标签,可以看到如果遮挡其它区域,模型都能识别出为博美犬,但是如果遮住了狗脸,而不遮住球,模型就会将样本分类为球。
  5. 这展示了模型的遮挡敏感性,模型确实学到了物体的位置,而不是说只学到物体的环境上下文。

实验

  1. 基于可视化后对AlexNet模型进行了修改,提升了表现,说明可以通过可视化的技巧分析和改善模型。
  2. 对模型(alextNet以及自己修改后的模型)进行删除层,修改层神经元大小,对比实验结果,观察变化。
  3. 把ImageNet训练好的模型用于Caltech-101,Caltech-256和PASCAL 2012数据集的训练,发现ImageNet预训练过的模型表现要(比没预训练过的)好很多,而且击败了一些前人的工作,说明了CNN提取的特征的泛化能力,以及ImageNet特征的强大。
  4. 通过逐渐提升(预训练模型中保留的)层数(比如1层,2层,3层升到7层),把这些特征送到SVM和softmax中去分类,得到的结果对比,发现层数越深,学到的特征越有用。

总结

  1. 提出了一种可视化CNN的方法,说明了内部特征并不是随机的,是可以解释的。
  2. 通过可视化CNN了解到了一些直觉上的特性,比如随着增加层数,类别的可区分度越高,特征越有用。
  3. 通过可视化CNN可以对模型进行分析和改善。
  4. 通过可视化CNN的遮蔽实验,发现模型对局部结构是敏感的,并不是只用到了广阔的场景信息。
  5. 展示了ImageNet的预训练模型可以很好地泛化到其它数据集。

论文笔记:Visualizing and Understanding Convolutional Networks的更多相关文章

  1. Visualizing and Understanding Convolutional Networks论文复现笔记

    目录 Visualizing and Understanding Convolutional Networks 论文复现笔记 Abstract Introduction Approach Visual ...

  2. 深度学习论文翻译解析(十):Visualizing and Understanding Convolutional Networks

    论文标题:Visualizing and Understanding Convolutional Networks 标题翻译:可视化和理解卷积网络 论文作者:Matthew D. Zeiler  Ro ...

  3. [论文解读]CNN网络可视化——Visualizing and Understanding Convolutional Networks

    概述 虽然CNN深度卷积网络在图像识别等领域取得的效果显著,但是目前为止人们对于CNN为什么能取得如此好的效果却无法解释,也无法提出有效的网络提升策略.利用本文的反卷积可视化方法,作者发现了AlexN ...

  4. 0 - Visualizing and Understanding Convolutional Networks(阅读翻译)

    卷积神经网络的可视化理解(Visualizing and Understanding Convolutional Networks) 摘要(Abstract) 近来,大型的卷积神经网络模型在Image ...

  5. 【网络结构可视化】Visualizing and Understanding Convolutional Networks(ZF-Net) 论文解析

    目录 0. 论文地址 1. 概述 2. 可视化结构 2.1 Unpooling 2.2 Rectification: 2.3 Filtering: 3. Feature Visualization 4 ...

  6. 深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)

    Visualizing and understandingConvolutional Networks 本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主 ...

  7. Visualizing and Understanding Convolutional Networks

    前言:研究卷积神经网络,把阅读到的一些文献经典的部分翻译一下,写成博客,代码后续给出,不足之处还请大家指出. 本文来自:tony-tan.com Github:github.com/Tony-Tan ...

  8. ZFNet: Visualizing and Understanding Convolutional Networks

    目录 论文结构 反卷积 ZFnet的创新点主要是在信号的"恢复"上面,什么样的输入会导致类似的输出,通过这个我们可以了解神经元对输入的敏感程度,比如这个神经元对图片的某一个位置很敏 ...

  9. 论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition

    Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grain ...

随机推荐

  1. 分布式消息通信ActiveMQ

    消息中间件 消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间的通信. 消息中间件能 ...

  2. [iOS]app的生命周期

    对于iOS应用程序,关键的是要知道你的应用程序是否正在前台或后台运行.由于系统资源在iOS设备上较为有限,一个应用程序必须在后台与前台有不同的行为.操作系统也会限制你的应用程序在后台的运行,以提高电池 ...

  3. iOS开发Mac配置(CocoaPods、SourceTree、ssh key)

    作为开发,有一个自己的饭碗还是有必要的.因为交接旧电脑的时候,你会遇到了一些问题,而自己的电脑就方便很多了. 要开发,当然要装一些与开发相关的东西,那么新电脑入手,要做些什么呢? 1.安装Xcode: ...

  4. css中的定位问题

    由于我最近在修改自己的网页布局,突然发现了自己对css中的定位概念还是混淆的,于是通过查官方文档,大神博客,自己实践,重新梳理了css定位的知识点.如果有不对的地方,请指正

  5. PHP目前比较常见的五大运行模式

    做 php 开发的应该都知道 php 运行模式概念吧,本文将要和大家分享的是关于php目前比较常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作 ...

  6. 树莓派3B+学习笔记:13、不间断会话服务screen

    screen是一款能够实现多窗口远程控制的开源服务程序,简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序.用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够 ...

  7. 两组数据的均值是否具有显著差异的T检验

    最近在做分析的时候,遇到了T检验,然而对于没有统计学背景的人来说完全不知如何下手 当然了,遇到问题第一反应就是百度. 果然百度出来了很多链接,当时第一次直接选择了用Excel去做T检验.下面是源数据 ...

  8. linux内存碎片的概念

    一般在内核术语中的“碎片”都是基于物理内存而言的,我没有太看懂你得出碎片是针对地址空间这个结论的逻辑.但我认为,既然你知道了malloc是用户空间调用的,那么你所谓的碎片也是从用户空间的视角而言的,但 ...

  9. 20155308 实验四 Android开发基础

    20155308 实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组件.布局管理器的使用: 掌握Android中 ...

  10. 20145207 2016-2017-2 《Java程序设计》第4周学习总结

    一.继承与多态 1.继承的定义 面对对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承,滥用而继承会导致程序维护上的问题. 程序代码重复在程序设计上就是不好的信号,多个类 ...