VGG(作者所在的牛津大学视觉几何组Visual Geometry Group的缩写)是 [Very Deep Convolutioinal Networks for Large-Scale Image Recognition]提出的卷积神经网络模型,在2014年ImageNet图像分类与定位挑战赛中,取得了 分类任务第二,定位任务第一的好成绩。
VGG结构
VGG的核心是五组卷积操作,每两组之间做Max-Pooling空间降维。同一组内采用多次连续的3x3卷积,卷积核的数目由较浅组的64增多到最深组的512,同一组内的卷积核数目是一样的。卷积之后接两层全连接层,之后是分类层。由于每组内卷积层的不同,有11/13/16/19层这几种模型。
根据卷积核大小和卷积层数目的不同,VGG分为A、A-LRN、B、C、D、E六种配置,其中D、E两种配置较为常用,分别称为VGG16和VGG19。
VGG16 特点
- 13个卷积层均采用相同的卷积核参数(kernel_size=3,stride=1,padding=1),每一个卷积层与前一层保持相同的宽和高。
- 5个池化层均采用相同的池化核参数(kernel_size=(2,2), stride=(2,2))和max池化方式。使每一个池化层的宽和高是前一层的1/2。
- 3个全连接层。
块结构
VGG16的卷积层划分为不同的块(block),每一个块内包含若干个卷积层和一个池化层,并且同一块内,卷积层的通道(channel)数是相同的。随着层数的增加,后一个块比前一个块通道数翻倍,由64依次增加到128,再到256,直至512保持不变。相应的高和宽减半,由224->112->56->28->14->7。
权重参数
卷积层和全连接层具有权重系数,被称为权重层,池化层不涉及权重,不属于权重层。尽管VGG16结构简单,但是所包含的权重数目却很大(138357544个参数)。
- 卷积层参数计算:kernel_sizekernel_sizeinput_channel*output_channel
- 全连接层权重参数计算:前一层节点数*本层的节点数
图中蓝色是计算权重参数数量的部分,红色是计算所需存储容量部分。
VGG16具有很高的拟合能力,但是参数数量较多,需要的存储容量大,不利于部署。训练时间过长,调参难度大。
参考资料
VGG16学习笔记