热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文笔记:VisualizingandUnderstandingConvolutionalNetworks

2014ECCV纽约大学MatthewD.Zeiler,RobFergus简单介绍(What)提出了一种可视化的技巧,能够看到CNN中间层

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
    1160281-20180723203644078-986445487.png

特征可视化

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

训练过程的特征演化

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

帮助提升模型

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

遮挡敏感性

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

实验

  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的预训练模型可以很好地泛化到其它数据集。

转:https://www.cnblogs.com/liaohuiqiang/p/9356753.html



推荐阅读
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • 解决Visual Studio Code中PHP Intelephense误报问题
    PHP作为一种高度灵活的编程语言,其代码结构可能导致Intelephense插件在某些情况下报告不必要的错误或警告。自1.3.3版本起,Intelephense引入了多个配置选项,允许用户根据具体的工作环境和编程风格调整这些诊断信息的显示。 ... [详细]
  • PyCharm 安装与首个 Python 程序实践
    本文将指导您如何安装 PyCharm,并通过创建一个简单的 'Hello, World' 程序来初步体验这一强大的 Python 集成开发环境。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 本文详细介绍了Windows网络编程中常用的几个关键结构体,包括sockaddr_in、in_addr和hostent,解释了它们的定义和用途,并提供了实际应用中的示例。 ... [详细]
  • 文章目录前言Program(程序)Identifier(标识符)Literal(字面量)Vari ... [详细]
  • UVa 1579 - 套娃问题
    本题主要涉及动态规划(DP)的应用,通过计算将前i个套娃合并成多个套娃组所需的最小操作次数来解决问题。具体来说,f(i) 表示前i个套娃合并成多个套娃组所需的操作次数,其计算公式为 f(i) = min(f(j) + dp(j+1, i))。 ... [详细]
  • c#  项目文件,C#viual studio使用方法
    一、项目文件1)Properties节点下主要存放的是当前程序集相关的信息,如版本号、标题等。双击”Properties“,打开如下项目属 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
author-avatar
manassatromble
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有