概述
VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。
VGG模型是2014年ILSVRC(ImageNet)竞赛的第二名,第一名是GoogLeNet。但是VGG模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。
VGG16 模型可以达到 92.7% 的测试准确度,在ImageNet的前5位。它的数据集包括 1400万张图像,1000个类别。
VGG16的分类信息:
https://www.malaoshi.top/show_1EF4vj09R8GC.html
VGG的输入图像 是 224x224x3,所以在卷积层中,每个卷积核有 3个通道
PS:该模型较早,现在有更快、更深、更准的模型
结构
VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN,B,C,D,E共6个配置(ConvNet Configuration)
其中以 D,E 两种配置较为常用,分别称为 VGG16 和 VGG19
六种结构配置:
由上图可,VGG16共包含:
- 13个卷积层(Convolutional Layer),分别用conv3-XXX表示。
- 3是卷积核尺寸(kernel size),即宽(width)和高(height)均为3
- XXX是卷积核数量
- 3个全连接层(Fully connected Layer),分别用FC-XXXX表示
- XXXX是感知机数量
- 5个池化层(Pool layer),分别用maxpool表示
其中,卷积层 和 全连接层 具有权重参数,因此也被称为 权重层(weight layers)
总数目为13+3=16个权重层(weight layers),即:VGG16中16的来源。
池化层不涉及权重,因此不属于权重层
特点
简单易懂,卷积核小,神经网络深:
卷积核大小相同
卷积核宽(width)和高(height)均为3,3*3是很小的卷积核尺寸,步幅stride=1,填充方式padding=same,这样就能够使得每一个卷积层(张量)与前一层(张量)保持相同的宽和高。池化层均采用相同的池化核参数
池化层的参数均为2,即:池化后 缩小一半模型是由若干 卷积层 和 池化层 堆叠(stack)构成,比较容易形成较深的网络结构
(在2014年,16层已经被认为很深了)。
VGG的优点为: Small filters, Deeper networks.
块结构
VGG16的卷积层和池化层可以划分为不同的 块(Block),从前到后依次编号为Block1~Block5。
每一个块内包含若干卷积层和一个池化层,在同一块内,卷积核数量相同

如上图:
- block2中包含2个卷积层,每个卷积层用conv3-128表示,即卷积核数量都是128
- block3中包含3个卷积层,每个卷积层用conv3-256表示,即卷积核数量都是256
卷积核数量翻倍,由64依次增加到128,再到256,直至512保持不变,不再翻倍
图像高和宽减半,由 224→112→56→28→14→7
权重参数
尽管VGG的结构简单,但是所包含的权重数量却很大,达到了惊人的139,357,544个参数。这些参数包括卷积核权重和全连接层权重。
- 对于第一个卷积层,卷积核数量是64,卷积核的通道数是3(输入图像的通道数是3),卷积核大小是3x3,因此总共有(3x3x3)x64 = 1728个参数
- 计算全连接层的权重参数数目的方法为:前一层节点数×本层的节点数前一层节点数×本层的节点数。因此,全连接层的参数分别为:
- 第一个全连接层:7x7x512x4096 = 1027,645,444
- 第二个全连接层:4096x4096 = 16,781,321
- 第三个全连接层:4096x1000 = 4096000
优点 VS 缺点
VGG16具有如此之大的参数数目,优点、缺点也很明显
优点:具有很高的拟合能力
缺点:
- 参数多,训练时间慢,调参难度大。
- 需要的存储容量大,不利于部署。
例如存储VGG16权重值文件的大小为500多MB,不利于安装到嵌入式系统中。
VGG16的应用
https://blog.csdn.net/sparkexpert/article/details/70208572
keras api
https://www.malaoshi.top/show_1EF4cJOvhrva.html
感谢:https://www.cnblogs.com/lfri/p/10493408.html

