深度学习方法(十一):卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。
技术交流QQ群:433250724,欢迎对算法、机器学习技术感兴趣的同学加入。
上一篇讲了深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling,本篇讲一讲Google的Inception系列net,以及还是Google的Xception。(扯一下,Google的Researcher们还是给了很多很棒的idea的,希望读者朋友和我自己在了解paper之余,可以提出自己的想法,并实现。)
如果想看Xception,就直接拉到最后看,有手画示意图。
Inception V1-V4
Inception V1:
V1是大家口头说的Googlenet,在之前的深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning有简单介绍,这里再凝练一下创新点:
图1
要想提高CNN的网络能力,比如分类准确率,一般的想法就是增大网络,比如Alexnet确实比以前早期Lenet大了很多,但是纯粹的增大网络——比如把每一层的channel数量翻倍——但是这样做有两个缺点——参数太多容易过拟合,网络计算量也会越来越大。
以下重点:目前很多工作证明,要想增强网络能力,可以:增加网络深度,增加网络宽度;但是为了减少过拟合,也要减少自由参数。因此,就自然而然有了这个第一版的Inception网络结构——同一层里面,有卷积1* 1, 3* 3,5* 5 不同的卷积模板,他们可以在不同size的感受野做特征提取,也算的上是一种混合模型了。因为Max Pooling本身也有特征提取的作用,而且和卷积不同,没有参数不会过拟合,也作为一个分支。但是直接这样做,整个网络计算量会较大,且层次并没有变深,因此,在3*3和5*5卷积前面先做1*1的卷积,降低input的channel数量,这样既使得网络变深,同时计算量反而小了;(在每一个卷积之后都有ReLU)
Inception V2-V3:
V2和V3版本比较接近,就不绝对区分了,具体可以看[3]。讲一讲其中的创新点:
首先,用两层堆叠的3*3代替了一层5*5,我们可以看到,这样做参数量少了,计算量少了,但是层数变深了,效果也变好了:
用1*3和3*1卷积替代3*3卷积,计算量少了很多,深度变深,思路是一样的。(实际上是1*n和n*1替代n*n,n可以变)
放到Inception结构里,下面是原始的Inception
下面图5-6-7是改进版本:
总体的网络结构:
我们看到,Inception并不是全程都用,是在图像比较小了采用,并且,图5-6-7的结构是依次用的,他们适合不同size的图像。
Inception V4:
v4研究了Inception模块结合Residual Connection能不能有改进?发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能 [7]
Inception-resnet-v1 and Inception-ResNet v2都是用的这个结构图,区别在于下图的注释中,
这篇文章通篇就是各种微结构变化,我在这里贴也没什么意思,希望读者移步论文[4],找到对应的图号,看一下。
其实我也有疑惑,虽然paper总可以说出一些道道,结果也确实有一定提升,但是对于不同层设计了完全不同的微结构,这样会不会模式上太不统一了?有没有用更简洁统一的方式,达到一样的效果呢?我相信是有的,自我感觉Inception V1的模式很简单,Resnet的跳层结构也很简单,美,但是到了V4这里,结构变化太多,很难理解为什么是必须的呢?**
就好比我们以前做电影推荐比赛,最终获胜的结果往往是多模型混合,但是我个人还是最感兴趣那个最最有效果的单模型是什么样的。
Xception
非常新的一个工作[5],前面讲了那么多Inception网络,那么Inception网络的极限是什么呢?其中一个极限版本如下:
在1*1卷积之后,对每一个channel,做3*3的*1的独立卷积,然后再concat。认为每一个spatial conv对cross channel feature是没有关系的。
[5]作者提出了Depthwise Separable Convolution,或者简称Depthwise Convolution,是下面这个样子:先做channel-wise conv,然后再过1*1卷积,中间没有ReLU,最后有ReLU。
上面提到两种结构的区别,文中这一段写的很清楚:
整个网络结构:
OK,本篇到这里,只是作为一个记录和引导,让大家发现更多结构设计的idea。
参考资料
下面参考资料部分paper还带了test error
[1] Going Deeper with Convolutions, 6.67% test error
http://arxiv.org/abs/1409.4842
[2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error
http://arxiv.org/abs/1502.03167
[3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error
http://arxiv.org/abs/1512.00567
[4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error
[5] Xception: Deep Learning with Depthwise Separable Convolutions
[6] 深入浅出——网络模型中Inceptionv1到 v4 的作用与结构全解析
[7] Inception in CNN
[8] 论文笔记 | Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
深度学习方法(十一):卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)的更多相关文章
- 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks
上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化--Spatial Transformer Networks,STN创造性地在CNN结构中装入了一个可学习的仿射变换,目的是增加CNN的旋转 ...
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
深度学习之卷积神经网络CNN及tensorflow代码实现示例 2017年05月01日 13:28:21 cxmscb 阅读数 151413更多 分类专栏: 机器学习 深度学习 机器学习 版权声明 ...
- 深度学习之卷积神经网络(CNN)的应用-验证码的生成与识别
验证码的生成与识别 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10755361.html 目录 1.验证码的制 ...
- 深度学习之卷积神经网络CNN及tensorflow代码实例
深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...
- 【神经网络与深度学习】卷积神经网络(CNN)
[神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...
- 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构 ...
- TensorFlow 深度学习笔记 卷积神经网络
Convolutional Networks 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有问题可以到Is ...
- 深度学习之卷积神经网络(CNN)
卷积神经网络(CNN)因为在图像识别任务中大放异彩,而广为人知,近几年卷积神经网络在文本处理中也有了比较好的应用.我用TextCnn来做文本分类的任务,相比TextRnn,训练速度要快非常多,准确性也 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
随机推荐
- jqury中关于ajax的几个常用的函数
一: AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术 ...
- Sqoop数据迁移工具
一.概述 sqoop 是 apache 旗下一款“ Hadoop 和关系数据库服务器之间传送数据”的工具. 导入数据: MySQL, Oracle 导入数据到 Hadoop 的 HDFS. HIVE. ...
- Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL
转: Mysql外键设置中的CASCADE.NO ACTION.RESTRICT.SET NULL 2017年06月11日 10:03:13 雅静8 阅读数:5491 版权声明:本文为博主原创文章 ...
- HBase基本操作-Java实现
创建Table public static void createTable(String tableName){ try { HBaseAdmin hbaseAdmin = new HBaseAdm ...
- ② 设计模式的艺术-08.桥接(Bridge)模式
为什么需要桥接(Bridge)模式 商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题? 采用多层继承结构: 多层继承结构代码示例 Computer.java package co ...
- Load an image from a url into a PictureBox
var url="https://xyk.cebbank.com/verify_code.jpg?3345789"; HttpClient client = new HttpCli ...
- 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
[题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...
- 【leetcode 简单】 第五十一题 有效电话号码
给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码. 你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxx ...
- 【译】第一篇 SQL Server代理概述
本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Serve ...
- VC拷贝字符串到剪切板
] ="中华人民共和国"; DWORD dwLength = ; // 要复制的字串长度 HANDLE hGlobalMemory = GlobalAlloc(GHND, dwLe ...