概述

虽然CNN深度卷积网络在图像识别等领域取得的效果显著,但是目前为止人们对于CNN为什么能取得如此好的效果却无法解释,也无法提出有效的网络提升策略。利用本文的反卷积可视化方法,作者发现了AlexNet的一些问题,并在AlexNet基础上做了一些改进,使得网络达到了比AlexNet更好的效果。同时,作者用“消融方法”(ablation study)分析了图片各区域对网络分类的影响(通俗地说,“消融方法”就是去除图片中某些区域,分析网络的性能)。
  1. 反卷积神经网络(Deconvolutional Network)
反卷积神经网络可以看做用与卷积神经网络相同的卷积核、池化层等等进行的相反过程。为了用反卷积神经网络去分析卷积神经网络,我们需要将反卷积网络各层与卷积神经网络各层衔接起来。如下图所示,右半部分进行的是卷积过程,而左半部分进行的是反卷积过程。从右边卷积的过程开始,首先用卷积核F对上一层池化出来的Pooled Maps进行卷积,得到Feature Maps, 然后在逐步进行Relu归一化(Rectified Linear)和最大值池化(Max Pooling)。而反卷积过程则是从反最大值池化开始(Max unpooling),逐步得到unpooled、rectified unpooled和reconstruction map。

反卷积神经网络主要组成部分:
  • 反池化:
对于最大值池化来说,它是不可逆的过程,因此作者的技巧就是在池化的时候记录下每个最大值的位置。这样的话,在反池化的时候只要把池化过程中最大激活值所在的位置激活,其它位置的值赋0。(具体反池化过程可参考hjimce的博客:http://blog.csdn.net/hjimce/article/details/50544370)
  • 反激活:
对于Relu激活函数来,激活值均为非负值。因此对于反向过程,同样需要保证每层的特征值为非负值,因此Reluctant反激活过程和激活过程相同。
  • 反卷积:

卷积网络就是网络利用学习到的卷积核对上一层的特征进行卷积得到本层的feature map。而反卷积就是这个过程的逆过程,用本层的feature map与转置后的卷积核进行卷积,得到上一层的特征。

2. 可视化结果

  •  特征曾学到了什么?

从上图可是化的结果中,我们可以看出,不同层的layer学习到的是不同的特征。对于Layer1和Layer2来说,网络学习到的基本上是边缘、颜色等图像中底层的特征;Layer3开始可以学习到一些复杂些的特征,类似网格纹理等;Layer4可以学习到更高维的特征,比如说狗头、鸟类的脚、同心环等;Layer5则是更加具有辨别性的关键特征。

  • 特征层是如何随训练演化的?

上图展示了网络中各个特征层是如何随着训练步数而进化的。各子图中每列分别代表训练了[1,2,5,10,20,30,40,64]个epoch。可以看出,对于较低的特征层来说,它们的特征很快就学到并稳定下来了。而对于像Layer5这样比较高维的特征层来说,则是在学习了30个epoch后才学习到了比较有辨别性的关键特征。说明训练步数的增加还是能够比较好地提升网络的学习和收敛能力的。

  • 可视化网络如何提升网络性能?

作者可视化了原版AlexNet各特征层,发现了对于AlexNet来说,第一层的卷积核大部分是高频和低频的特征,而对中频段图像特征整提取得不好。同时,第二层特征的可视化的结果显示出了由于第一层卷积步长太大(4)导致的“ 混叠伪影”。因此作者对AlexNet的改善包括:将第一层的卷积核从11x11减小为7x7;将卷积步长减小为2,而不是4。经过作者改善后的模型在ImageNet2012的分类误差均比AlexNet有提高。

  • 消融分析(Ablation Analysis)

作者用消融分析对三张图进行了分析,发现当遮挡掉图片中的关键部位后,相关卷积核卷出来的特征激励会大幅变小(上图第二列)。同时发现遮挡掉关键部位后,网络很容易将图片放入错误的分类中去,而遮挡一些背景部位则不会(第五列)。

这篇文章是CNN网络可视化相关研究非常重要的一篇文章,在这之后的许多研究工作都基于了这篇文章的成果。所以说是研究CNN 网络可视化的必读文献也不为过。

参考资料:

1. http://blog.csdn.net/hjimce/article/details/50544370

2. Zeiler, M. D. and Fergus, R. Visualizing and understanding convolutional networks. In ECCV, 2014.

[论文解读]CNN网络可视化——Visualizing and Understanding Convolutional Networks的更多相关文章

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

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

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

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

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

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

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

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

  5. 论文笔记:Visualizing and Understanding Convolutional Networks

    2014 ECCV 纽约大学 Matthew D. Zeiler, Rob Fergus 简单介绍(What) 提出了一种可视化的技巧,能够看到CNN中间层的特征功能和分类操作. 通过对这些可视化信息 ...

  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. 论文解读2——Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    背景 用ConvNet方法解决图像分类.检测问题成为热潮,但这些方法都需要先把图片resize到固定的w*h,再丢进网络里,图片经过resize可能会丢失一些信息.论文作者发明了SPP pooling ...

  9. ZFNet: Visualizing and Understanding Convolutional Networks

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

随机推荐

  1. javascript语言扩展:可迭代对象(4)

    js 1.7中还包含一个数组推导(array comprehension)的特性,如果不在最后介绍它好像显得不怎么完整. 数组推导其实很简单: let a = [x*x for(x in range( ...

  2. rails中migration数据库后测试不通过的问题

    rails项目中由于后期需求变化,需要在products数据库中增加一个字段来满足多国家商品的分类: rails g migration add_locale_to_products locale:s ...

  3. 40款非常棒的 jQuery 插件和制作教程(系列一)

    jQuery 在现在的 Web 开发项目中扮演着重要角色,jQuery 让网站有更好的可用性和用户体验,让访问者对网站留下非常好的印象.jQuery以其插件众多.独特.轻量以及支持大规模的网站开发闻名 ...

  4. oracle数据库的备份与还原(本地及远程操作)

    数据的导出 exp qh/qh@qh  file='d:\backup\qh\qh20060526.dmp'  grants=y  full=n  1 将数据库TEST完全导出,用户名system 密 ...

  5. java-将评论内容过滤特殊表情emoj符号,保存到mysql中

    正常操作评论,保存时,若评论内容含有特殊表情符号,后台将报错如下: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_ ...

  6. Nginx服务器导致CSS无法解析不起效果

    最近部署一个项目html,js正常加载,css也没有报404,css能够正常获取,只是浏览器无法解析,研究了一下发现,原来是配置Nginx的时候将/etc/nginx/nginx.conf的一行inc ...

  7. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  8. Selenium2Lib库之键盘常用关键字实战

    Press Key关键字 按F5 查看Press Key关键字的说明,如下图: Press Key关键字是用于通过键盘模拟由定位器确定的元素的用户按键.‘值’是单个字符,字符串或数值的ASCII码的“ ...

  9. 如何在自定义组件中使用v-model

    文章属于速记,有错误欢迎指出.风格什么的不喜勿喷. 先来一个组件,不用vue-model,正常父子通信 <!-- parent --> <template> <div c ...

  10. css 实现文字自动换行切同行元素高度自适应

    1.实现div行内布局所有行跟随最大高度自适应 html代码样例: <div class="row-single"> <div class="colsp ...