文章首发于微信公众号《与有三学AI》

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构

从本篇开始,我们将带领大家解读深度学习中的网络的发展

这是深度学习模型解读第一篇,本篇我们将介绍LeNet,AlexNet,VGGNet,它们都是卷积+池化串联的基本网络结构。

作者&编辑 | 言有三

01 LeNet5

LeNet5【1】有3个卷积层,2个池化层,2个全连接层。卷积层的卷积核都为5*5,stride=1,池化层都为Max pooling,激活函数为Sigmoid,具体网络结构如下图:

下面我们详细解读一下网络结构,先约定一些称呼。

我们先约定一些叫法,比如featuremap为28*28*6,卷积参数大小为(5*5*1)*6。其中28*28是featuremap的高度,宽度,6是featuremap的通道数。(5*5*1)*6卷积核表示5*5的高度,宽度,通道数为1的卷积核有6个。你可以把(5*5*1)想象成一个厚度为1,长度,宽度各为5的卷积块,以下依此类推。

1.Input

输入图像统一归一化为32*32。

2.C1卷积层

经过(5*5*1)*6卷积核,stride=1, 生成featuremap为28*28*6。

3.S2池化层

经过(2*2)采样核,stride=2,生成featuremap为14*14*6。

4.C3卷积层

经过(5*5*6)*16卷积核,stride=1,生成featuremap为10*10*16。

5.S4池化层

经过(2*2)采样核,stride=2,生成featuremap为5*5*16。

6.C5卷积层

经过(5*5*16)*120卷积核,stride=1, 生成featuremap为1*1*120。

7.F6全连接层

输入为1*1*120,输出为1*1*84,总参数量为120*84。

8.Output全连接层 。

输入为1*1*84,输出为1*1*10,总参数量为84*10。10就是分类的类别数。

02  AlexNet

2012年,Imagenet比赛冠军—Alexnet (以第一作者Alex命名)【2】直接刷新了ImageNet的识别率,奠定了深度学习在图像识别领域的优势地位。网络结构如下图:

1.Input

输入图像为227*227*3。

2.Conv1

经过(11*11*3)*96卷积核,stride=4, (227-11)/4+1=55,生成featuremap为55*55*96。

3.Pool1

经过3*3的池化核,stride=2,(55-3)/2+1=27,生成featuremap为27*27*96。

4.Norm1

local_size=5,生成featuremap为27*27*96。

5.Conv2

经过(5*5*96)*256的卷积核,pad=2,group=2,(27+2*2-5)/1+1=27,生成featuremap为27*27*256。

6.Pool2

经过3*3的池化核,stride=2,(27-3)/2+1=13,生成featuremap为13*13*256。

7.Norm2

local_size=5, 生成featuremap为13*13*256。

8.Conv3

经过(3*3*256)*384卷积核,pad=1, (13+1*2-3)/1+1=13,生成featuremap为13*13*384。

9.Conv4

经过(3*3*384)*384卷积核,pad=1,(13+1*2-3)/1+1=13,生成featuremap为13*13*384。

10.Conv5

经过(3*3*384)*256卷积核,pad=1,(13+1*2-3)/1+1=13,生成featuremap为13*13*256。

11.Pool5

经过(3*3)的池化核,stride=2,(13-3)/2+1=6,生成featuremap为6*6*256。

12.Fc6

输入为(6*6*256)*4096全连接,生成featuremap为1*1*4096。

13.Dropout6

在训练的时候以1/2概率使得隐藏层的某些神经元的输出为0,这样就丢掉了一半节点的输出,BP的时候也不更新这些节点,以下Droupout同理。

14.Fc7

输入为1*1*4096,输出为1*1*4096,总参数量为4096*4096。

15.Dropout7

生成featuremap为1*1*4096。

16.Fc8

输入为1*1*4096,输出为1000,总参数量为4096*1000。

总结:

1.网络比LeNet更深,包括5个卷积层和3个全连接层。

2.使用relu激活函数,收敛很快,解决了Sigmoid在网络较深时出现的梯度弥散问题。

3.加入了dropout层,防止过拟合。

4.使用了LRN归一化层,对局部神经元的活动创建竞争机制,抑制反馈较小的神经元放大反应大的神经元,增强了模型的泛化能力。

5.使用裁剪翻转等操作做数据增强,增强了模型的泛化能力。预测时使用提取图片四个角加中间五个位置并进行左右翻转一共十幅图片的方法求取平均值,这也是后面刷比赛的基本使用技巧。

6.分块训练,当年的GPU没有这么强大,Alexnet创新地将图像分为上下两块分别训练,然后在全连接层合并在一起。

7.总体的数据参数大概为240M。

03 VGG

VGGNet【3】主要的贡献是利用带有很小卷积核(3*3)的网络结构对逐渐加深的网络进行评估,结果表明通过加深网络深度至16-19层可以极大地改进前人的网络结构。这些发现也是参加2014年ImageNet比赛的基础,并且在这次比赛中,分别在定位和分类跟踪任务中取得第一名和第二名。

VGGNet的网络结构如下图:

类型从A到E。此处重点讲解VGG16。也就是图中的类型D。如图中所示,共有13个卷积层,3个全连接层。其全部采用3*3卷积核,步长为1,和2*2最大池化核,步长为2。

1.Input层

输入图片为224*224*3。

2.CONV3-64

经过(3*3*3)*64卷积核,生成featuremap为224*224*64。

3.CONV3-64

经过(3*3*64)*64卷积核,生成featuremap为224*224*64。

4.Max pool

经过(2*2)max pool核,生成featuremap为112*112*64。

5.CONV3-128。

经过(3*3*64)*128卷积核,生成featuremap为112*112*128。

6. CONV3-128

经过(3*3*128)*128卷积,生成featuremap为112*112*128。

7.Max pool

经过(2*2)maxpool,生成featuremap为56*56*128。

8.CONV3-256

经过(3*3*128)*256卷积核,生成featuremap为56*56*256。

9.CONV3-256

经过(3*3*256)*256卷积核,生成featuremap为56*56*256。

10.CONV3-256

经过(3*3*256)*256卷积核,生成featuremap为56*56*256。

11.Max pool

经过(2*2)maxpool,生成featuremap为28*28*256

12.CONV3-512

经过(3*3*256)*512卷积核,生成featuremap为28*28*512

13.CONV3-512

经过(3*3*512)*512卷积核,生成featuremap为28*28*512。

14.CONV3-512

经过(3*3*512)*512卷积核,生成featuremap为28*28*512。

15.Max pool

经过(2*2)maxpool,生成featuremap为14*14*512。

16.CONV3-512

经过(3*3*512)*512卷积核,生成featuremap为14*14*512。

17.CONV3-512

经过(3*3*512)*512卷积核,生成featuremap为14*14*512。

18.CONV3-512

经过(3*3*512)*512卷积核,生成featuremap为14*14*512。

19.Max pool

经过2*2卷积,生成featuremap为7*7*512。

20.FC-4096

输入为7*7*512,输出为1*1*4096,总参数量为7*7*512*4096。

21.FC-4096

输入为1*1*4096,输出为1*1*4096,总参数量为4096*4096。

22.FC-1000

输入为1*1*4096,输出为1000,总参数量为4096*1000。

总结:

1. 共包含参数约为550M。

2. 全部使用3*3的卷积核和2*2的最大池化核。

3. 简化了卷积神经网络的结构。

04 总结

LeNet5是早期用于工程应用的网络结构,发展到AlexNet,激活函数从sigmoid变为relu,加入了Dropout层等操作,引起了新一轮的深度学习热潮。VGG基本是AlexNet的加强版,深度上是其2倍,参数量大小也是两倍多。

这三个网络结构本质上都是(卷积+池化)堆叠的网络结构,是深度学习复兴以来的第一个有重大工程意义的网络设计系列。

参考文献

【1】Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.

【2】Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.

【3】Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science, 2014.

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

—END—

转载请留言,侵权必究

本系列的完整目录:

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构

【模型解读】network in network中的1*1卷积,你懂了吗

【模型解读】GoogLeNet中的inception结构,你看懂了吗

【模型解读】说说移动端基准模型MobileNets

【模型解读】pooling去哪儿了?

【模型解读】resnet中的残差连接,你确定真的看懂了?

【模型解读】“不正经”的卷积神经网络

【模型解读】“全连接”的卷积网络,有什么好?

【模型解读】从“局部连接”回到“全连接”的神经网络

【模型解读】深度学习网络只能有一个输入吗

【模型解读】从2D卷积到3D卷积,都有什么不一样

【模型解读】浅析RNN到LSTM

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构相关推荐

  1. 卷积池化与LeNet5网络模型

    1 前言 经过前面三篇文章的介绍,我们已经知道了卷积的原理.卷积的计算过程以及池化的原理和过程等.在接下来的这篇文章中,笔者将开始介绍如何通过Pytorch这一深度学习框架来实现卷积和池化的操作,以及 ...

  2. 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )

    文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...

  3. 人工智能-作业5:卷积-池化-激活

    目录 实现[卷积-池化-激活]代码,并分析总结 For循环版本:手工实现 Pytorch版本:调用函数完成 卷积 池化 激活 可视化:了解数字与图像之间的关系 运行效果如下: 原图 卷积核 特征图 总 ...

  4. 个人理解卷积 池化 的用处

    卷积 池化 的用处 卷积让局部特征更加明显.更加突出有用的特征. 池化,降低特征纬数,方便运算. 参考: 如何理解卷积神经网络(CNN)中的卷积和池化? - 知乎 CNN中卷积层和池化的作用和理解 - ...

  5. 卷积神经网络系列之卷积/池化后特征图大小怎么计算??

    1.卷积后的大小: W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长 width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高 w ...

  6. 一个在线卷积池化计算器-推荐不会计算的同学

    很多刚入门的身边的小伙伴不会计算卷积和池化,于是为了方便大家计算顺便根据卷积池化计算公式设计了一个在线计算器 卷积池化计算器地址 如果你很懒的话,可以用这个计算.

  7. 【卷积神经网络--卷积/池化后特征图大小计算公式】

    [卷积神经网络–卷积/池化后特征图大小计算公式] 参考链接: 卷积神经网络系列之卷积/池化后特征图大小怎么计算?? torch中的Conv2d卷积的输入的Tensor张量是:[batch, chann ...

  8. CNN基本原理以及卷积池化的实现细节

    看到很好的CNN解释的文章,博客也很优秀https://www.cnblogs.com/charlotte77/p/7759802.html 1. 神经网络的优势 特征提取的高效性. 即可以省去特征工 ...

  9. Keras卷积+池化层学习

    转自:https://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/ https://keras-cn.readthedoc ...

最新文章

  1. TVM开发三个示例分析
  2. AR普及后的未来是怎样的?
  3. linq2db.mysql_Linq to SQlite简单示例(linq2db版)
  4. 【深度学习入门到精通系列】R2 Unet解释
  5. 互联网文本内容安全:腾讯云天御AI对抗实践
  6. PLS-00215:字符串长度限制在范围
  7. Spring源码学习:day2
  8. cifar10数据集测试有多少张图_基于特定数据集的Oracle、ClickHouse、ES测试报告
  9. 水晶报表官方实例大全
  10. Keepalived+Nginx实现高可用,反向代理---模拟实现线上环境
  11. linux之我常用的系统重要文件备份命令
  12. iOS in-app purchase详解
  13. 云计算的思想领袖:与橡树岭国家实验室云计算研究员Rob Gillen的谈话
  14. 浏览器 Cookie 的使用
  15. HTML5七夕情人节表白网页制作【花瓣图片表白】HTML+CSS+JavaScript html生日快乐祝福网页制作
  16. canvas教程13-使用图片
  17. JUC下的CountDownLatch,CyclicBarrier、Semaphore的使用方法
  18. C#Task执行线程及其相关问题
  19. 从学生到机器视觉工程师,我有话要说!
  20. kickstart自动化系统安装_利用Kickstart自动化安装CentOS的教程

热门文章

  1. volatile 手摸手带你解析
  2. LeetCode 04寻找两个正序数组的中位数(困难)二分法
  3. javascript之DOM总结
  4. 【转】makefile写法2
  5. 一些常见的Find 命令
  6. 事务复制提示初始快照不可用_谈谈数据库的事务ACID
  7. 【实验】不会部署VRRP?看完就会了
  8. 云原生 DevOps 的 5 步升级路径
  9. 自动化 CICD 与灰度发布
  10. 6 个 K8s 日志系统建设中的典型问题,你遇到过几个?