参见

  1. ​​​​​​【深度学习】全面理解VGG16模型_florrie-CSDN博客_vgg16模型介绍
  2. 深度学习-VGG16原理详解_é£的博客-CSDN博客_vgg16

1、网络结构

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

具体为:

1. 卷积-卷积-池化-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-全连接-全连接-全连接 。

2. 通道数分别为64,128,512,512,512,4096,4096,1000。卷积层通道数翻倍,直到512时不再增加。通道数的增加,使更多的信息被提取出来。全连接的4096是经验值,当然也可以是别的数,但是不要小于最后的类别。1000表示要分类的类别数。

3. 所有的激活单元都是Relu 。

4. 用池化层作为分界,VGG16共有6个块结构,每个块结构中的通道数相同。因为卷积层和全连接层都有权重系数,也被称为权重层,其中卷积层13层,全连接3层,池化层不涉及权重。所以共有13+3=16权重层。

5. 对于VGG16卷积神经网络而言,其13层卷积层和5层池化层负责进行特征的提取,最后的3层全连接层负责完成分类任务。


vgg16总共有16层,13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,再采用pooling,再重复两次三个512个卷积核卷积后,再pooling,最后经过三次全连接。

2、VGG16的卷积核

  1. conv3-xxx:卷积层全部都是3*3的卷积核,用上图中conv3-xxx表示,xxx表示通道数。其步长为1,用padding=same填充。池化层的池化核为2*2
  2. input(224x224 RGB image) :指的是输入图片大小为224*244的彩色图像,通道为3,即224*224*3;
  3. maxpool :是指最大池化,在vgg16中,pooling采用的是2*2的最大池化方法;
  4. FC-4096 :指的是全连接层中有4096个节点,同样地,FC-1000为该层全连接层有1000个节点;
  5. padding:指的是对矩阵在外边填充n圈,padding=1即填充1圈,5X5大小的矩阵,填充一圈后变成7X7大小;
  6. 最后补充,vgg16每层卷积的滑动步长stride=1,padding=1,卷积核大小为333;

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。 
11)再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU激活 
12)最后通过softmax输出1000个预测结果
VGG16模型所需要的内存容量

4、什么是卷积?

image为需要进行卷积的图片,而convolved feature为卷积后得到的特征图;那么什么是卷积的过滤器也就是filter呢?图中黄色矩阵即为filter,image为5X5大小的一维图像,filter为3X3大小的一维矩阵;卷积过程是:filter与image对应位置相乘再相加之和,得到此时中心位置的值,填入第一行第一列,然后在移动一个格子(stride=1),继续与下一个位置卷积…最后得到是3X3X1的矩阵。
——这里需要注明:卷积后的结果矩阵维度=(image矩阵维数-filter矩阵维数+2xpad)/2+1,对应上图即宽width:3=(5-3+2x0)/1+1,高height:3=(5-3+2x0)/1+1;


在这里补充经过padding填充,那么卷积后图片大小不会发生改变,如5X5的图像大小,padding=1变成7X7,再用3X3的filter进行卷积,那么卷积后的宽高为(7-3+2x1)/1+1=7。

5、什么是maxpool?

最大池化就是取filter对应区域内最大像素值替代该像素点值,其作用是降维。在这里,池化使用的滤波器都是2*2大小,因此池化后得到的图像大小为原来的1/2。下图为最大池化过程:

6.1、从input到conv1

由于224不太好计算,那么这里使用input图片大小为300x300x3举例:
图片:

首先两个黄色的是卷积层,是VGG16网络结构十六层当中的第一层(Conv1_1)和第二层(Conv1_2),合称为Conv1。

那么,第一层怎么将300x300x3的矩阵变成一个300x300x64的呢??

假设RGB图像为蓝色框,橙色方块为3x3x3的卷积核(即filter),那么卷积后得到的图像应为298x298x1(此处没有进行padding,步长为1),但是经过填充一圈的矩阵,所以得到的结果为300x300x1,在这层中有64个卷积核,那么原来的300x300x1就变成了300x300x64。

6.2、从conv1到conv2之间的过渡

在上面的结构图可以看到,第一层卷积后要经过pooling,才到第二层,那么:

这层,pooling使用的filter是2x2x64,且步长为2,那么得到的矩阵维数刚好为原来的一半,第三个维度64不改变,因为那个指的是filter个数。

6.3、conv2到conv3

我们从上面的过程中知道了,input为300x300x3的图片,经过第一层之后变成150x150x64,那么第二层里面有128个卷积核,可以推出经过第二层后得到是75x75x128。

6.4、进入conv3


可知,第三层有256个卷积核,那么得到就是75x75x256

6.5、从conv3到conv4之间的过渡


这里75是奇数,经过pad之后变成偶数76,那么就得到结果为38x38x256
其余的过程与上述一样,最终得到10x10x512。

7、最后到三层全连接FC层

在全连接层中的每一个节点都与上一层每个节点连接,把前一层的输出特征都综合起来。在VGG16中,第一个全连接层FC1有4096个节点,上一层pool之后得到是10x10x512=51200个节点,同样第二个全连接层FC2也有4096个节点,最后一个FC3有1000个节点。

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. 时间复杂度 
1)卷积层的时间复杂度大致是同一数量级的 2)随着网络深度加深,卷积层的空间复杂度快速上升(每层的空间复杂度是上层的两倍) 3)全连接层的空间复杂度比卷积层的最后一层还大 
6. 特点 
1)小的卷积核 :3x3的卷积核 2)小的池化核 :2x2的池化核 3)层数更深特征图更宽 :基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量缓慢的增加; 4)全连接转卷积 :网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。 
7. 感受野 
VGG主要使用较小的卷积核代替较大的卷积核。在VGG16中,作者认为两个3x3的卷积堆叠获得的感受野大小,相当一个5x5的卷积;而3个3x3卷积的堆叠获取到的感受野相当于一个7x7的卷积。这样做一方面可以减少参数,增加了网络深度,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合/表达能力。

1)替代性
下图为2个3x3的卷积核代替1个5x5

2)参数减少 对于2个3x3卷积核,所用的参数总量为2x(3x3)xchannels, 对于1个5x5卷积核为5x5xchannels 对于3个3x3卷积核,所用的参数总量为3x(3x3)xchannels, 对于1个7x7卷积核为7x7xchannels 因此可以显著地减少参数的数量

深度学习之学习(1-1) VGG16网络结构详解相关推荐

  1. 深度学习之目标检测(五)-- RetinaNet网络结构详解

    深度学习之目标检测(五)-- RetinaNet网络结构详解 深度学习之目标检测(五)RetinaNet网络结构详解 1. RetinaNet 1.1 backbone 部分 1.2 预测器部分 1. ...

  2. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  3. pytorch图像分类篇:6. ResNet网络结构详解与迁移学习简介

    前言 最近在b站发现了一个非常好的 计算机视觉 + pytorch 的教程,相见恨晚,能让初学者少走很多弯路. 因此决定按着up给的教程路线:图像分类→目标检测→-一步步学习用pytorch实现深度学 ...

  4. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...

  5. php laravel入口文件,Laravel学习教程之从入口到输出过程详解

    php 的 Laravel学习教程之从入口到输出过程详解 本文主要给大家介绍了关于Laravel从入口到输出过程的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. I. 预备 ...

  6. 【相机标定与三维重建原理及实现】学习笔记1——相机模型数学推导详解

    目录 前言 一.小孔成像模型 二.坐标系的变换 1.世界坐标系到相机坐标系的变换(刚体变换)[xw^→xc^\boldsymbol {\hat{x_{w}}}\rightarrow \boldsymb ...

  7. AlexNet网络结构详解与代码复现

    参考内容来自up:3.1 AlexNet网络结构详解与花分类数据集下载_哔哩哔哩_bilibili up主的CSDN博客:太阳花的小绿豆的博客_CSDN博客-深度学习,软件安装,Tensorflow领 ...

  8. AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现

    AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现 1.AlexNet之前的思考 2.AlexNet网络结构 3.AlexNet网络结构的主要贡献 4.PyTorch实现     ...

  9. U-Net网络结构详解

    U-Net网络结构详解 U-Net网络结构是对称的,由于网络结构像U型,所以被命名为U-Net.整体而言,U-Net是一个Encoder-Decoder(编码器-解码器)的结构,这一点是与FCN的结构 ...

  10. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    from:http://www.csdn.net/article/2015-08-05/2825390 [编者按]深度学习是近年来迅速发展和突破的机器学习领域,具有非常广泛的应用前景.将服务器GPU应 ...

最新文章

  1. C语言基础(12)-输入和输出
  2. 阿里开源台柱 Ant Design 源码仓库被删了...
  3. pytorch计算模型参数量
  4. 【408预推免复习】计算机网络(谢希仁第七版)第二章——物理层
  5. stl set求交集 并集 差集
  6. Command of SVN for linux
  7. SHA256安全散列算法
  8. 如何提升JavaScript的任务效率?学会后教给你同事
  9. jQuery 3.4.0 Released(2019.4.10)
  10. python附加索引_python – 附加两个多索引的pandas数据帧
  11. mysql批量删除进程_小程序批量删除云数据库里的数据
  12. 【数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】
  13. kalipython图形界面_Kali入侵入门版笔记!!!
  14. ​倒卖二手书,一个被忽略的项目,​做的​好月赚1w+
  15. 好玩Spring之TransactionSynchronization相关的几个类
  16. 2021 编程语言排行榜出炉
  17. Git报错解决:fatal: unable to access ‘https://github.com/.......‘: OpenSSL SSL_read: Connection was reset
  18. Hourglass网络的理解和代码分析
  19. Gartner发布2022年新兴技术成熟度曲线,推动沉浸式、AI自动化发展
  20. 抓取微博热搜榜数据并保存在Excel中

热门文章

  1. webstorm主题风格jar包下载
  2. Activiti6 下载安装
  3. CSS面试题汇总(三)
  4. svn之回滚到指定版本
  5. 自动控制原理9.4---李雅普诺夫稳定性分析
  6. 资深制作人谈游戏策划如何入行
  7. 小字符喷码机和高解析喷码机的区别
  8. matlab 状态空间极点,传递函数、零极点增益与状态空间转换的matlab算法实现
  9. linux典型压缩包操作 tar打包、压缩与解压
  10. 八种点云聚类方法(一)— DBSCAN