VGG16学习笔记
VGG16学习笔记
网络结构
VGG卷积神经网络是牛津大学在2014年提出来的模型。当这个模型被提出时,由于它的简洁性和实用性,马上成为了当时最流行的卷积神经网络模型。它在图像分类和目标检测任务中都表现出非常好的结果。在2014年的ILSVRC比赛中,VGG 在Top-5中取得了92.3%的正确率。
VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN, B, C, D, E共6个配置(ConvNet Configuration),其中以D, E两种配置较为常用,分别称为VGG16和VGG19。
VGG16结构:
- 13个卷积层(Convolutional Layer),分别用conv3-XXX表示。
- 3个全连接层(Fully connected Layer),分别用FC-XXXX表示。
- 5个池化层(Pool layer),分别用maxpool表示。
其中,卷积层和全连接层具有权重系数,因此也被称为权重层,总数目为13+3=16,这即是VGG16中16的来源。(池化层不涉及权重,因此不属于权重层,不被计数)。
卷积计算
-
输入图像尺寸为224x224x3,经64个通道为3的3x3的卷积核,步长为1,padding=same填充,卷积两次,再经ReLU**,输出的尺寸大小为224x224x64。
-
经max pooling(最大化池化),滤波器为2x2,步长为2,图像尺寸减半,池化后的尺寸变为112x112x64。
-
经128个3x3的卷积核,两次卷积,ReLU**,尺寸变为112x112x128。
-
max pooling池化,尺寸变为56x56x128。
-
经256个3x3的卷积核,三次卷积,ReLU**,尺寸变为56x56x256。
-
max pooling池化,尺寸变为28x28x256。
-
经512个3x3的卷积核,三次卷积,ReLU**,尺寸变为28x28x512。
-
max pooling池化,尺寸变为14x14x512。
-
经512个3x3的卷积核,三次卷积,ReLU,尺寸变为14x14x512。
-
max pooling池化,尺寸变为7x7x512。
-
然后Flatten(),将数据拉平成向量,变成一维51277=25088。
-
再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU**。
-
最后通过softmax输出1000个预测结果。
权重参数
权重参数包括卷积核权重和全连接层权重:
图中蓝色是计算权重参数数量的部分;红色是计算所需存储容量的部分。VGG16具有如此之大的参数数目,可以预期它具有很高的拟合能力;但同时缺点也很明显:
- 即训练时间过长,调参难度大。
- 需要的存储容量大,不利于部署。例如存储VGG16权重值文件的大小为500多MB,不利于安装到嵌入式系统中。
VGG16特点
-
VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3×3的小型卷积核和2×2的最大池化层,VGGNet成功地构筑了16-19层深的卷积神经网络;
-
VGGNet结构简洁,整个网络都使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2)
-
拥有5段卷积,每段内有2-3个卷积层,每段段尾连接一个最大池化层,用来缩小图片
-
使用非常多的3*3卷积串联:
- 2个3 * 3卷积串联 == 1个5 * 5的卷积
- 3个3 * 3卷积串联 == 1个7 * 7的卷积
- 优点:卷积串联比单独使用一个较大的卷积核,拥有更少的参数量,同时会比单独一个卷积层拥有更多的非线性变换。
-
层数加粗样式更深特征图更宽:基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量缓慢的增加。
-
全连接转卷积 :网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。