CNN的发展历史(LeNet,Alexnet,VGGNet,GoogleNet,ReSNet)

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。

关于卷积神经网络CNN,网络和文献中有非常多的资料,我在工作/研究中也用了好一段时间各种常见的model了,就想着简单整理一下,以备查阅之需。如果读者是初接触CNN,建议可以先看一看“Deep Learning(深度学习)学习笔记整理系列”中关于CNN的介绍[1],是介绍我们常说的Lenet为例,相信会对初学者有帮助。

  1. Lenet,1986年
  2. Alexnet,2012年
  3. GoogleNet,2014年
  4. VGG,2014年
  5. Deep Residual Learning,2015年

Lenet(1986)

就从Lenet说起,可以看下caffe中lenet的配置文件(点我),可以试着理解每一层的大小,和各种参数。由两个卷积层,两个池化层,以及两个全连接层组成。 卷积都是5*5的模板,stride=1,池化都是MAX。下图是一个类似的结构,可以帮助理解层次结构(和caffe不完全一致,不过基本上差不多)

这里写图片描述

Alexnet(2012)

2012年,Imagenet比赛冠军的model——Alexnet [2](以第一作者alex命名)。caffe的model文件在这里。说实话,这个model的意义比后面那些model都大很多,首先它证明了CNN在复杂模型下的有效性,然后GPU实现使得训练在可接受的时间范围内得到结果,确实让CNN和GPU都大火了一把,顺便推动了有监督DL的发展。

模型结构见下图,别看只有寥寥八层(不算input层),但是它有60M以上的参数总量,事实上在参数量上比后面的网络都大。

这里写图片描述

这个图有点点特殊的地方是卷积部分都是画成上下两块,意思是说吧这一层计算出来的feature map分开,但是前一层用到的数据要看连接的虚线,如图中input层之后的第一层第二层之间的虚线是分开的,是说二层上面的128map是由一层上面的48map计算的,下面同理;而第三层前面的虚线是完全交叉的,就是说每一个192map都是由前面的128+128=256map同时计算得到的。

Alexnet有一个特殊的计算层,LRN层,做的事是对当前层的输出结果做平滑处理。下面是我画的示意图:

这里写图片描述

前后几层(对应位置的点)对中间这一层做一下平滑约束,计算方法是:

这里写图片描述

具体打开Alexnet的每一阶段(含一次卷积主要计算)来看[2][3]:

(1)con - relu - pooling - LRN

这里写图片描述

具体计算都在图里面写了,要注意的是input层是227*227,而不是paper里面的224*224,这里可以算一下,主要是227可以整除后面的conv1计算,224不整除。如果一定要用224可以通过自动补边实现,不过在input就补边感觉没有意义,补得也是0。

(2)conv - relu - pool - LRN

这里写图片描述

和上面基本一样,唯独需要注意的是group=2,这个属性强行把前面结果的feature map分开,卷积部分分成两部分做。

(3)conv - relu

这里写图片描述

(4)conv-relu

这里写图片描述

(5)conv - relu - pool

这里写图片描述

(6)fc - relu - dropout

这里写图片描述

这里有一层特殊的dropout层,在alexnet中是说在训练的以1/2概率使得隐藏层的某些neuron的输出为0,这样就丢到了一半节点的输出,BP的时候也不更新这些节点。 
(7) 
fc - relu - dropout 
这里写图片描述
(8)fc - softmax 
这里写图片描述

以上图借用[3],感谢。

GoogleNet(2014)

googlenet[4][5],14年比赛冠军的model,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构。(当然,它并没有证明浅的层次不能达到这样的效果)

这里写图片描述

这个model基本上构成部件和alexnet差不多,不过中间有好几个inception的结构:

这里写图片描述

是说一分四,然后做一些不同大小的卷积,之后再堆叠feature map。

计算量如下图,可以看到参数总量并不大,但是计算次数是非常大的。 
这里写图片描述

VGG(2014)

VGG有很多个版本,也算是比较稳定和经典的model。它的特点也是连续conv多,计算量巨大(比前面几个都大很多)。具体的model结构可以参考[6],这里给一个简图。基本上组成构建就是前面alexnet用到的。 
这里写图片描述

下面是几个model的具体结构,可以查阅,很容易看懂。

这里写图片描述

Deep Residual Learning(2015)

这个model是2015年底最新给出的,也是15年的imagenet比赛冠军。可以说是进一步将conv进行到底,其特殊之处在于设计了“bottleneck”形式的block(有跨越几层的直连)。最深的model采用的152层!!下面是一个34层的例子,更深的model见表格。 
这里写图片描述 
其实这个model构成上更加简单,连LRN这样的layer都没有了。

这里写图片描述

block的构成见下图:

这里写图片描述

总结

OK,到这里把常见的最新的几个model都介绍完了,可以看到,目前cnn model的设计思路基本上朝着深度的网络以及更多的卷积计算方向发展。虽然有点暴力,但是效果上确实是提升了。当然,我认为以后会出现更优秀的model,方向应该不是更深,而是简化。是时候动一动卷积计算的形式了。

参考资料

[1] http://blog.csdn.net/zouxy09/article/details/8781543/ 
[2] ImageNet Classification with Deep Convolutional Neural Networks 
[3] http://blog.csdn.net/sunbaigui/article/details/39938097 
[4] http://blog.csdn.net/csyhhb/article/details/45967291 
[5] Going deeper with convolutions 
[6] VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在VMWare的Ubuntu虚拟机中设置共享文件夹

亲测有效:Ubuntu18.04 LTS、虚拟机VMware Workstation 14 Pro 14.1.3 build-9474260、Window7 自己的第一篇博文,由于时(shuǐ)间(png)原(yǒu)因(xin)&…

容器+AOP实现动态部署(四)

上篇咱们介绍了容器和AOP的结合,结合后怎样将对象增强服务并没有过多的说明,这里将详细说明怎样将对象 进行增强 ,达到一个一对多和多对多的增强方式 先从简单的方式说起 /** *JDK代理类,实现动态调用对象方法 */ public class JD…

深入理解卷积层,全连接层的作用意义

有部分内容是转载的知乎的,如有侵权,请告知,删除便是,但由于是总结的,所以不一一列出原作者是who。 再次感谢,也希望给其他小白受益。 首先说明:可以不用全连接层的。 理解1: 卷…

用ionic快速开发hybird App(已附源码,在下面+总结见解)

用ionic快速开发hybird App(已附源码,在下面总结见解) 1.ionic简介 ionic 是用于敏捷开发APP的解决方案。核心思路是:利用成熟的前端开发技术,来写UI和业务逻辑。也就是说,就是一个H5网站,这个区别于react-…

40 个重要的 HTML5 面试问题及答案

2019独角兽企业重金招聘Python工程师标准>>> 介绍 我是一个ASP.NET MVC开发人员。最近当我找工作的时候,我发现很多问题都是围绕HTML 5和它的新功能展开的。所以,下面我将列出40个有助于你提高相关HTML 5知识的重要问题。 这些问题并不能保证…

利用光学流跟踪关键点---30

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 关键点:是多个方向上亮度变化强的区域。 opencv:版本是2.4. 光学流函数:calcOpticalFlowPyrLK()。(关键点侦测器使用goodFeaturesToTrack())二者结合。 相应的启动文…

register_globals(全局变量注册开关)

register_globals,是php.ini文件里面的一个配置选项,接下来,我们可以通过例程来分析一下,当register_globals on 与 register_globals off 的时候,对php语言的一些安全影响。测试源代码如下:index.html 源…

精述IBM的MQTT协议和MQTT-S协议

一.MQTT简介 MQTT (Message Queuing Telemetry Transport) 是由IBM研发的构建在TCP/IP之上的简单轻量的消息协议,目标使用场景为受限制环境,如低带宽、高延迟、不可靠网络,很适用于M2M和IoT中。它的竞争协议包括XMPP协议和IETF的C…

20150103--SQL连接查询+视图-02

20150103--SQL连接查询视图-02 子查询 一条查询语句出现在另外一条查询语句的内部,这条语句就被称之为子查询语句。 子查询分类 子查询可以根据子查询返回的结果以及子查询出现的位置两种方式进行分类 按结果分类: 标量子查询:子查询返回的结…

QtQuick controls和controls2 自定义样式

2019独角兽企业重金招聘Python工程师标准>>> controls import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Rectangle {color: "green"Button {id:buttontext: qsTr("Second page")anchors.centerIn: parentpr…

电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...

上门维修电脑已经非常普及了,上门维修电脑费用要比送修(送到维修店)费用高,送修电脑只有一项维修费用,上门维修电脑比送修多了一项费用,这项费用就是上门费。有人说维修电脑收取上门费用不合理,其实这样的说法非常自私…

jQuery属性筛选选择器

2019独角兽企业重金招聘Python工程师标准>>> 代码一 <h2>属性筛选选择器</h2><h3>[attval]、[att]、[att|val]、[att~val]</h3><div class"left" testattr"true" ><div class"div" testattr"t…

java 代码优化

Java程序中的内存管理机制是通过GC完成的&#xff0c;“一个对象创建后被放置在JVM的堆内存中&#xff0c;当永远不在应用这个对象的时候将会被JVM在堆内存中回收。被创建的对象不能再生&#xff0c;同时也没有办法通过程序语句释放”&#xff08;这个是《Java的GC机制》中提到…

MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法

在Matlab中&#xff0c;做短时傅里叶变换需要使用函数spectrogram&#xff0c;而在Matlab2019中&#xff0c;引入了一个新的函数stft&#xff0c;下面我们就来看下这两个函数都如何使用。短时傅里叶变换的基本原理就是将数据分段加窗&#xff0c;做fft&#xff0c;在分段时会有…

图像处理基础——灰度共生矩阵

标准定义如下&#xff1a;对于取定的方向θ 和距离 d, 在方向为θ的直线上, 一个像元灰度为 i, 另一个与其相距为 d 像元的灰度为 j 的点对出现的频数即为灰度共生矩阵第(i, j)阵元的值。 怎样理解呢&#xff1f;看起来好复杂呀 呜呜呜 小白理解&#xff1a;灰度共生矩阵就…

iphone查看删除的短信_iPhone12发布!刚买的苹果手机短信全部消失了怎么办?

原标题&#xff1a;iPhone12发布&#xff01;刚买的苹果手机短信全部消失了怎么办&#xff1f;目前&#xff0c;人们的社交除了面对面交谈&#xff0c;用的最多的就是通过手机进行聊天&#xff0c;比如用QQ、微信和短信、邮件等方式&#xff0c;虽然短信不会用来一般的聊天&…

python基础之01数据类型-变量-运算浅解

python的数据类型 1 数字 数字分为整型&#xff08;int&#xff09;&#xff0c;长整型&#xff08;long&#xff09;&#xff0c;浮点型&#xff08;float&#xff09;&#xff0c;复数&#xff08;complex&#xff09; 整型较为常用的功能&#xff1a; >>> a-4 >…

使用Caffe进行手写数字识别执行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples实现对手写数字进行识别&#xff0c;这里详细介绍下其执行流程并精简了实现代码&#xff0c;使用Caffe对MNIST数据集进行train的文章可以参考 http://blog.csdn.net/fengbingchun/…

obs可以装手机吗?_原神PC和手机数据互通吗 PC和手机可以一起玩吗

在原神中&#xff0c;很多玩家都在PC端创建了角色&#xff0c;那么疑问来了&#xff0c;PC端与手机端的账号会是互通的吗&#xff1f;下面小编就为大家带来原神PC和手机数据互通吗的相关内容&#xff0c;一起来看看吧&#xff01;更多攻略&#xff1a;原神攻略大全PC和手机数据…