可视化与理解卷积网络的探讨

卷积网络模型自问世以来,对AI技术的发展起了很大的推动作用。但其复杂的模型结构,庞大的参数规模也给模型优化带来很多问题。如果问某个参数的值问什么是3而不是6,很难得到有根据的回答。发表于2013年11月的论文《Visualizing and Understanding Convolutional Networks》系统展示了如何可视化卷积网络,并根据可视化后观察到的现象优化模型取得更好识别结果。本文根据个人的理解,对论文阐述的方法和实践作粗浅总结。

问题的提出

Convolutional Networks卷积网络由LeCun等于1989年提出,并在手写数字的识别上展示出其优异性能。在过去18个月(论文发表时)在图像分类任务应用上也取得出色表现。在ImageNet 2012 上,Krizhevsky使用卷积网络降低到16.4%的错误率,而第二名的错误率达到26.1%。尽管取得了很多进展,仍然对复杂的卷积模型的内部操作缺乏了解,也不能明确是如何取得好的表现。如果不理解它们如何工作和为什么有效,也就意味着开发更好的模型需要更多多的试错。
针对这个问题,文中所做的研究包括
1.对每一层模型的输入特征,观察训练过程中特征的演化。作者使用了Zeiler2011提出的多层反卷积网络,投射出输入层的像素空间。
2.进行敏感性分析,即通过遮盖图像的部分区域,找到图像的哪个部分是对分类结果是重要的。
通过这些研究,从Krizhevsky的模型架构开始优化,发现在ImageNet上更好表现的模型。
相关工作:
可视化,可视化化特征可以得到对网络的直觉,一般都只在第一层的图像,更高层的可视化非常复杂,简单的二次近似很难做到。
特征泛化,作者演示了卷积网络如何用于Caltech101的图像分类和PASCAL VOC的对象识别。

解决方法

作者在文中所使用的方式有:
卷积模型是LeCun等人定义,通过不同卷积层映射2维图像,最后的结果向量预测y值。
每一层的组成:
上一层输出
激活函数,通常为(relu(x)=max(x,0))
最大池化
局部对比度标准化
训练模型使用了大量标注过标签的图片,得到的训练结果是图片类别标签,交叉熵用于评估结果的误差损失。训练过程中需要优化的网络模型参数包括卷积层的卷积核参数、全联接层的权重weight与偏置bias,每次训练迭代后通过损失的反向传播更新这些参数。
1.通过反卷积网络可视化,可以理解中间层的卷积操作发生了什么。反卷积网络使用了卷积模型相同的组件(激活,池化),但是相反的方向。通过在每一层卷积层关联反卷积网络,提供了一直回溯到图片像素的路径。为了检验卷积的某个激活,把这个层上其它激活置为0,并输入到反卷积层,然后不断反池化,反激活,反卷积直到输入的像素空间。

  • 反池化:卷积操作中的最大池化是不可逆的,然而我们可以通过记录一组开关变量的每个池化区域的最大值得到近似反向值。
  • 反激活:卷积网络使用relu非线性激活函数,保证特征映射到正值,重建的特征也需要是保证正值,所以也使用了relu非线性激活函数。
  • 反卷积:卷积网络学习过的过滤器卷积每一层的特征。为了近似反向操作,反卷积网络使用正向操作相同过滤器但经过转置操作,通过开关设置逐渐还原原始图像的一小片区域

这张图显示了作者实现卷积可视化的整体结构,右边是正向的卷积训练,左边是反卷积重建。可以看到右边输入图片的不同区域卷积之后,在左边经过反卷积重建出图片。

训练细节

作者训练所使用的模型架构如下:

整个卷积模型分为8层。输入层是边长224*224的RGB正方形图片,第一层的卷积核共有96个,每个大小是7*7,x和y方向的步长都是2.结果特征图会经过:ReLU激活,3*3的最大池化,对比度标准化。同样的操作在2,3,4,5层重复。最后2层全联接层,输入向量为6*6*256=9216个维度,最终通过C-way softmax输出结果。
于Krizhevsky的训练模型相比,作者在3,4,5层使用了稠密连接而不是稀疏连接,第1,2层过滤器和步长也有所不同。每个批次训练128次,学习率是0.01,权重初始化为0.01,偏置设置为0.

卷积可视化

在使用以上模型的同时,我们使用反卷积可视化在ImageNet验证数据集上的特征激活。

特征可视化

对每个特征图,作者挑选了9个激活区域,每个对应像素空间的不同区域。从中可以观察到不同区域对激活的影响。

文中所举例说明,红色框内的图片显示原始图中的草地对激活影响更大,而不是草地前的待识别对象。
模型中 每一层的映射也显示出被识别对象的特性层次。如第2层反映出角和其它边/颜色的交汇,第3层捕捉到纹理模式,第4层显示了狗的脸或鸟的腿,第5层 就显示出整个物体,如键盘,狗等。。

训练过程中的特征演化

通过可视化和观察训练过程中的特征图变化,在模型靠前层少数几个epoch,而靠后的层需要比较多的epoch(40-50)才会充分汇集特征。

架构选择

通过可视化预训练模型的内部操作,可以帮助选择更好的模型架构。作者通过可视化Krizhevsky所用模型的第1,2 层,发现了不同问题。第1层 混合了特别高频和低频的信息 ,同时覆盖了部分 中频信息。(这里的高频低频是指图像中灰度变化剧烈程度的指标)
第2层的可视化表现出锯齿假影,是由第一层卷积采用较大的4步长有关。为了解决这些问题,作者采取以下措施:1,把第一层的卷积核从11*11改为7*7; 2,把步长从4改为2。
新的架构在训练中保留了更多信息,也在改进了分类结果的表现。

作者对CNN网络内中间特征和分类操作提供了一种新的可视化方法,研究了不同模型层对模型表现的贡献。优化之后的模型架构,也表现出较好的泛化能力。作者就对ImageNet训练后,在Caltech-101 and Caltech-256上也取得了较好的效果。

遮盖敏感度

在图片分类中,一个基本问题是模型是否真正的识别了目标对象,还是用背景环境做出的判断。为了找到答案,文中使用灰色方块遮盖了图片中的不同位置,然后观察输出的分类。如果遮住识别对象后分类成功率下降,说明模型实在使用正确的识别对象。

实验对比

作者分别使用了2个模型,一个是Krizhevsky在论文《ImageNet Classification with Deep Convolutional
Neural Networks》中所使用的

一个是作者设计的模型,在前面训练细节中有描述。然后分别使用可视化卷积方法后优化调整模型的的对应参数,都取得了明显改进。

另外,为了检验模型的泛化能力,作者把ImageNet数据集训练过的模型到Caltech256上测试。测试之前先把每个类别中的6个样本做了训练,并在测试集合上取得较好的结果。

延伸阅读

作者开创性的使用反卷积模型观察和优化卷积模型的表现,Arxiv上显示被引用次数高达9576,可见对卷积模型的应用和发展产生巨大影响。例如这篇《ImageNet Classification with Deep Convolutional Neural Networks》,尝试把反卷积模型接在正向卷积模型之后,在还原出的图片上做分段标注,改进了原来只用正向卷积模型无法 识别图片中较小对象的问题。

Visualizing and Understanding Convolutional Networks:

https://arxiv.org/pdf/1311.2901.pdf​arxiv.org

ImageNet Classification with Deep Convolutional Neural Networks:

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf​papers.nips.cc

文中所提到的数据说明:

Caltech101 这个数据集包含了101类的图像,每类大约有40~800张图像,大部分是50张/类; 在2003年由lifeifei收集,每张图像的大小大约是300x200。

Caltech256 共 30607 张图片,256个分类,其中 29 个分类与Caltech-101重合.

ImageNet项目是一个大型视觉数据库,用于视觉目标识别软件研究。该项目已手动注释了1400多万张图像,以指出图片中的对象,并在至少100万张图像中提供了边框。ImageNet包含2万多个典型类别,例如“气球”或“草莓”,每一类包含数百张图像。

tictoc正方形网络模型_反卷积:可视化并理解卷积网络相关推荐

  1. Visualizing and Understanding Convolutional Networks - 可视化和理解卷积网络 - 看懂卷积网络

    Visualizing and Understanding Convolutional Networks 可视化和理解卷积网络 - 看懂卷积网络 Matthew D Zeiler, Rob Fergu ...

  2. 图像分类经典卷积神经网络—ZFNet论文翻译(中英文对照版)—Visualizing and Understanding Convolutional Networks(可视化和理解卷积网络)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[ZFNet纯中文版] Visualizing and Understanding Con ...

  3. tictoc正方形网络模型_Trick | 分类网络Trick大汇总

    本文介绍了训练分类网络的各个阶段可以用来提升性能的Trick,也就是俗称的调参术.结果顶级调参术的调教,ResNet- 50的top-1验证精度在ImageNet上从75.3%提高到79.29%.这个 ...

  4. 双向长短期记忆网络模型_一种基于双向长短期记忆网络的定位修正方法与流程...

    本发明属于行人导航定位修正领域,具体涉及一种基于双向长短期记忆网络的定位修正方法. 背景技术: 近些年来,随着室内定位技术的不断发展,很大程度弥补了类似gps等利用卫星信号进行定位而卫星信号穿透力较差 ...

  5. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...

    今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...

  6. 从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网

    从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网络 ...

  7. 神经网络通俗理解和理解,卷积神经网络通俗理解

    通俗易懂:彻底明白什么是神经网络 想象一个黑箱子,你给它输入(样本),它给你输出(实际输出),但是输出和你想要的结果有偏差,于是你事先告诉它你想要的结果(期望输出),它做一些调整(调整内部权值和阈值) ...

  8. 一维卷积神经网络结构图,一维卷积神经网络原理

    1.卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Fe ...

  9. pytorch 反卷积 可视化_手推反卷积

    先手推卷积热个身 在推导反卷积之前,先推导一下卷积. 假设输入为 ,卷积核为 ,输出大小的计算公式为 .当 时,输出为 . 将输入矩阵转成一个 的列阵,卷积核扩展为 的矩阵,即 则 , 所以 . 用p ...

最新文章

  1. Adobe推出HTML5动画设计工具Edge
  2. ASP连接MYSQL问题点解决
  3. Spring MVC中jsessionid所引起的问题 和解决
  4. 使用Maven Archetype生成工程报错的解决
  5. java 数据object_java常用的object数据处理
  6. linux shell 多个命令一起执行的几种方法
  7. android wifi 信道,WiFi不稳定经常断?手机WiFi信道小工具【图】_Android资讯_太平洋电脑网...
  8. adrunio蜂鸣器音乐(天空之城)c调
  9. Auto.js实现自动删除朋友圈照片
  10. R语言数学建模(1):Regression analysis
  11. 4种常见分支模式解析及优劣对比 | 研发效能提升36计
  12. YOLOX升级 | 阿里巴巴提出YOLOX-PAI,1ms内精度无敌!
  13. AVL CRUISE硬件在环台架测试
  14. Material Design之定制动画--触摸反馈,循环揭露,转场动画,共享元素和曲线运动
  15. 孙青椒排版八法 和 黄金分割0.618法则和构图法
  16. 12对胸椎对应体表标志_人体体表标志【图文】
  17. [二维DP] 洛谷P1736 创意吃鱼法(预处理)
  18. FFmpeg合并多个视频
  19. mysql 授权与回收权限_mysql用户授权以及权限收回
  20. sinr是什么意思_seo信噪比是什么,seo信噪比是什么意思

热门文章

  1. Git根据远程分支建立条新的远程分支
  2. a标签传值到另一个页面_Vue组件传值与通信集合
  3. ip冲突 scan windows_Linux下IP 冲突查看及解决方法
  4. 【若依(ruoyi)】No message found under code ‘xxx‘ for locale ‘zh_CN‘.
  5. 【UEditor】百度编辑器插入video视频
  6. @SentinelResource使用
  7. JAVA 三种线程实现创建方式
  8. JavaScript中的箭头函数
  9. 侧边栏跳转_微信和三星首次系统级合作:在负一屏和侧边栏直接打开小程序
  10. java的json解析工具_json文件解析工具类(java)