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. Python 学习笔记(十五)Python类拓展(二)方法

    方法 绑定方法和非绑定方法 绑定方法和非绑定方法在创建时没有任何区别,同一方法,既可以为绑定方法,也可以为非绑定方法,一切不同都只在调用时的手法上有所区别. 绑定方法即该方法绑定类的一个实例上,必须将 ...

  2. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  3. Linux基础入门 第一章:Linux环境搭建——Redhat 6.4图文安装教程

    1.创建新的虚拟机 2.选择自定义 3.选择Workstation 10.0 4.选择稍后安装操作系统 5.选择Red Hat 6 64位 6.对虚拟机命名和选择安装位置 7.选择处理器配置 8.选择 ...

  4. emlog 百度熊掌号提交插件-基于Emlog6.0.1特别版美化

    插件截图 插件简介 此插件在发布文章的时候自动向百度熊掌号提交,有利于百度熊掌号收录.基于Emlog6.0.1特别版美化的插件. 在百度推送插件的基础上修改制作而成与百度推送共存,解放双手,走向人生巅 ...

  5. Git很简单--图解攻略

    Git Git 是目前世界上最先进的分布式版本控制系统(没有之一) 作用 源代码管理 为什么要进行源代码管理? 方便多人协同开发 方便版本控制 Git管理源代码特点 1.Git是分布式管理.服务器和客 ...

  6. linux 命令 uniq

    linux命令uniq去重 实例详细说明linux下去除重复行命令uniq 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉 ...

  7. 构建WebGL目标时的内存考量

    Memory Considerations when targeting WebGL 构建WebGL目标时的内存考量 Memory in Unity WebGL can be a constraini ...

  8. PHP分页函数 学习笔记

    function smarty_function_assign_debug_info($params, &$smarty){ $assigned_vars = $smarty->_tpl ...

  9. 07.centos7构建 IntelliJ IDEA(简称IDEA)开发环境

    一.安装IDEA 进入官网下载linux版的社区便,IDEA分为社区版和旗舰版,社区版免费,并且基本满足spark开发需求. 解压安装 目录为/opt/idea 注意:centos命令行界面下是无法安 ...

  10. 嵌入式C语言自我修养 06:U-boot镜像自拷贝分析:section属性

    6.1 GNU C 的扩展关键字:attribute GNU C 增加一个 __atttribute__ 关键字用来声明一个函数.变量或类型的特殊属性.声明这个特殊属性有什么用呢?主要用途就是指导编译 ...