1、网络结构

VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。

根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。

介绍结构图:

  • conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128;
  • input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为3,即224224*3;
  • maxpool :是指最大池化,在vgg16中,pooling采用的是2*2的最大池化方法(如果不懂最大池化,下面有解释);
  • FC-4096 :指的是全连接层中有4096个节点,同样地,FC-1000为该层全连接层有1000个节点;
  • padding:指的是对矩阵在外边填充n圈,padding=1即填充1圈,5X5大小的矩阵,填充一圈后变成7X7大小;
  • 最后补充,vgg16每层卷积的滑动步长stride=1,padding=1,卷积核大小为333;

如上图VGG16的网络结构为,VGG由5层卷积层、3层全连接层、softmax输出层构成,层与层之间使用max-pooling(最大化池)分开,所有隐层的激活单元都采用ReLU函数。具体信息如下:

  • 卷积-卷积-池化-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-全连接-全连接-全连接
  • 通道数分别为64,128,512,512,512,4096,4096,1000。卷积层通道数翻倍,直到512时不再增加。通道数的增加,使更多的信息被提取出来。全连接的4096是经验值,当然也可以是别的数,但是不要小于最后的类别。1000表示要分类的类别数。
  • 用池化层作为分界,VGG16共有6个块结构,每个块结构中的通道数相同。因为卷积层和全连接层都有权重系数,也被称为权重层,其中卷积层13层,全连接3层,池化层不涉及权重。所以共有13+3=16层。
  • 对于VGG16卷积神经网络而言,其13层卷积层和5层池化层负责进行特征的提取,最后的3层全连接层负责完成分类任务。

2、VGG16的卷积核

  • VGG使用多个较小卷积核(3x3)的卷积层代替一个卷积核较大的卷积层,一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合/表达能力。
  • 卷积层全部都是3*3的卷积核,用上图中conv3-xxx表示,xxx表示通道数。其步长为1,用padding=same填充。
  • 池化层的池化核为2*2

3、卷积计算

具体的过程:

  1. 输入图像尺寸为224x224x3,经64个通道为3的3x3的卷积核,步长为1,padding=same填充,卷积两次,再经ReLU激活,输出的尺寸大小为224x224x64
  2. 经max pooling(最大化池化),滤波器为2x2,步长为2,图像尺寸减半,池化后的尺寸变为112x112x64
  3. 经128个3x3的卷积核,两次卷积,ReLU激活,尺寸变为112x112x128
  4. max pooling池化,尺寸变为56x56x128
  5. 经256个3x3的卷积核,三次卷积,ReLU激活,尺寸变为56x56x256
  6. max pooling池化,尺寸变为28x28x256
  7. 经512个3x3的卷积核,三次卷积,ReLU激活,尺寸变为28x28x512
  8. max pooling池化,尺寸变为14x14x512
  9. 经512个3x3的卷积核,三次卷积,ReLU,尺寸变为14x14x512
  10. max pooling池化,尺寸变为7x7x512
  11. 然后Flatten(),将数据拉平成向量,变成一维51277=25088。
  12. 再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU激活
  13. 最后通过softmax输出1000个预测结果

从上面的过程可以看出VGG网络结构还是挺简洁的,都是由小卷积核、小池化核、ReLU组合而成。其简化图如下(以VGG16为例):

 4、权重参数(不考虑偏置)

1)输入层有0个参数,所需存储容量为224x224x3=150k
2)对于第一层卷积,由于输入图的通道数是3,网络必须要有通道数为3的的卷积核,这样的卷积核有64个,因此总共有(3x3x3)x64 = 1728个参数。
所需存储容量为224x224x64=3.2M
计算量为:输入图像224×224×3,输出224×224×64,卷积核大小3×3。

所以Times=224×224×3x3×3×64=8.7×107

3)池化层有0个参数,所需存储容量为 图像尺寸x图像尺寸x通道数=xxx k
4)全连接层的权重参数数目的计算方法为:前一层节点数×本层的节点数。因此,全连接层的参数分别为:
7x7x512x4096 = 1027,645,444
4096x4096 = 16,781,321
4096x1000 = 4096000
按上述步骤计算的VGG16整个网络总共所占的存储容量为24M*4bytes=96MB/image 。

所有参数为138M
VGG16具有如此之大的参数数目,可以预期它具有很高的拟合能力;

但同时缺点也很明显:
即训练时间过长,调参难度大。
需要的存储容量大,不利于部署。
5、VGG模型所需要的内存容量

借鉴一下大佬的图:

 6、总结

  • 通过增加深度能有效地提升性能;
  • VGG16是最佳的模型,从头到尾只有3x3卷积与2x2池化,简洁优美;
  • 卷积可代替全连接,可适应各种尺寸的图片。

深度学习——VGG16模型详解相关推荐

  1. 深度学习-VGG16原理详解

    1.网络结构 根据卷积核大小和卷积层数,VGG共有6中配置,分别为A,A-LRN,B,C,D,E,其中D和E两种最为常用,即i我们所说的VGG16和VGG19.看下图红色框所示.具体为: 1. 卷积- ...

  2. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

  3. 从未看过如此详细的深度学习推荐系统应用详解,读它!

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...

  4. 深度学习 --- 玻尔兹曼分布详解

    上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...

  5. 深度学习 --- BP算法详解(BP算法的优化)

    上一节我们详细分析了BP网络的权值调整空间的特点,深入分析了权值空间存在的两个问题即平坦区和局部最优值,也详细探讨了出现的原因,本节将根据上一节分析的原因进行改进BP算法,本节先对BP存在的缺点进行全 ...

  6. 深度学习归一化算法详解(BN,LN,IN,GN)

    目录 一.Batch Normalization(BN) 1.1为什么提出BN? 1.2BN的基本原理和公式 1.3BN在神经网络中的实现 1.4BN的优点和缺点 二.LN,IN,GN的原理和适用范围 ...

  7. 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)

    上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...

  8. 【MobileNet】移动端深度学习网络MobileNet详解

    阅读论文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application,对移动端深度学习网络Mobi ...

  9. 深度学习生态圈【详解深度学习工具Keras】

    文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...

  10. 深度学习 --- BP算法详解(误差反向传播算法)

    本节开始深度学习的第一个算法BP算法,本打算第一个算法为单层感知器,但是感觉太简单了,不懂得找本书看看就会了,这里简要的介绍一下单层感知器: 图中可以看到,单层感知器很简单,其实本质上他就是线性分类器 ...

最新文章

  1. 达沃斯群英纵论人工智能,核心观点汇总
  2. 百度天气api android,为什么百度apistore的天气api在Java项目中能用而在安卓项目中不能用?...
  3. AI科普微视频丨人类的智能是如何产生的?
  4. hihoCoder 网络流四·最小路径覆盖
  5. SQL 2005新增的几个函数之学习
  6. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法
  7. 【Scratch】青少年蓝桥杯_每日一题_3.07_画金字塔
  8. python分片上传_python上传文件到oss
  9. 微软水下数据中心“浮出水面”、GitHub代码保存在北极,数据黑科技贮藏方式大曝光!...
  10. 科多大数据_redis缓存的简单使用—科多大数据
  11. 华为网赛存储基础原理自测答案
  12. Swift-理解值类型
  13. Hadoop1.0之集群搭建
  14. Linux 下串口编程入门教程
  15. 每天一道剑指offer-把数组排成最小的数
  16. Linux基础知识练习题
  17. python自然语言处理之spacy详解
  18. 问题 B: 结构体---职工信息结构体
  19. MT7628路由器工作原理,MT7628处理器相关参数介绍
  20. Echarts 图例分两行显示

热门文章

  1. densepose的IUV图像I通道数字与身体部分对应关系
  2. 敏感词过滤-DFA算法
  3. 软件过程— 螺旋模型
  4. 华为电脑管家PcManager多屏协同功能破解
  5. endnote X7 超级初学者教程
  6. kindle刷机ttl_kindle咕咪版如何刷成普通kindle版本?
  7. (一)MATLAB中的输入与输出
  8. 一小时入门proteus使用教程
  9. svnadmin dump导入导出命令
  10. 微信小程序 java通过 rawData 和 session_key 生成 signature 签名