详解深度学习之经典网络架构(四):VGG-Net

一、简介

VGG全称是Visual Geometry Group属于牛津大学科学工程系,其发布了一些列以VGG开头的卷积网络模型,可以应用在人脸识别、图像分类等方面,分别从VGG16~VGG19。VGG研究卷积网络深度的初衷是想搞清楚卷积网络深度是如何影响大规模图像分类与识别的精度和准确率的,最初是VGG-16号称非常深的卷积网络全称为(GG-Very-Deep-16 CNN),VGG在加深网络层数同时为了避免参数过多,在所有层都采用3x3的小卷积核,卷积层步长被设置为1。

二、网络结构

VGG的输入被设置为224x244大小的RGB图像,在训练集图像上对所有图像计算RGB均值,然后把图像作为输入传入VGG卷积网络,使用3x3或者1x1的filter,卷积步长被固定1。VGG全连接层有3层,根据卷积层+全连接层总数目的不同可以从VGG11 ~ VGG19,最少的VGG11有8个卷积层与3个全连接层,最多的VGG19有16个卷积层+3个全连接层,此外VGG网络并不是在每个卷积层后面跟上一个池化层,还是总数5个池化层,分布在不同的卷积层之下,下图是VGG11 ~GVV19的结构图:

详解深度学习之经典网络架构(四):VGG-Net_第1张图片

 2.1网络参数设置

名称 参数设置
输入图像大小 224x224
预处理 减去均值
卷积核 3x3,1x1
padding 1 for 3x3
Max-pooling 2x2 s-2
激活函数 ReLU

 理解:

1x1卷积核:降维,增加非线性
3x3卷积核:多个卷积核叠加,增加空间感受野,减少参数

 论文中,作者指出,虽然LRN(Local Response Normalisation)在AlexNet对最终结果起到了作用,但在VGG网络中没有效果,并且该操作会增加内存和计算,从而作者在更深的网络结构中,没有使用该操作。

2.2网络具体结构

详解深度学习之经典网络架构(四):VGG-Net_第2张图片

 参数数量(百万):

2.3一些基本问题

Q1: 为什么3个3x3的卷积可以代替7x7的卷积?

  • 3个3x3的卷积,使用了3个非线性激活函数,增加了非线性表达能力,使得分割平面更具有可分性
  • 减少参数个数。对于C个通道的卷积核,7x7含有参数7^2C^2, 3个3x3的参数个数为3*3^2C^2,参数大大减少

Q2: 1x1卷积核的作用

  • 在不影响感受野的情况下,增加模型的非线性性
  • 1x1卷机相当于线性变换,非线性激活函数起到非线性作用

Q3: 网络深度对结果的影响(同年google也独立发布了深度为22层的网络GoogleNet)

  • VGG与GoogleNet模型都很深
  • 都采用了小卷积
  • VGG只采用3x3,而GoogleNet采用1x1, 3x3, 5x5,模型更加复杂(模型开始采用了很大的卷积核,来降低后面卷机层的计算)

2.4模型训练

VGG采用了min-batch gradient descent去优化multinomial logistic regression objective

名称 参数设置
batch size 256
momentum 0.9
learn rate 10^{-2}(训练过程中,降低了三次,每次减少\frac{1}{10})
max iterations 370K/74epochs

 

正则化方法:

  • 增加了对权重的正则化,5*10^{-4}||W||_{L^2}
  • 对FC全连接层进行dropout正则化,dropout ratio = 0.5

说明:虽然模型的参数和深度相比AlexNet有了很大的增加,但是模型的训练迭代次数却要求更少:a)正则化+小卷积核,b)特定层的预初始化

初始化策略:

  • 首先,随机初始化网络结构A(A的深度较浅)
  • 利用A的网络参数,给其他的模型进行初始化(初始化前4层卷积+全连接层,其他的层采用正态分布随机初始化,mean=0,var=10^{-2}, biases = 0)最后证明,即使随机初始化所有的层,模型也能训练的很好

训练输入:
       采用随机裁剪的方式,获取固定大小224x224的输入图像。并且采用了随机水平镜像和随机平移图像通道来丰富数据。

Training image size: 令S为图像的最小边,如果最小边S=224,则直接在图像上进行224x224区域随机裁剪,这时相当于裁剪后的图像能够几乎覆盖全部的图像信息;如果最小边S>>224

,那么做完224x224区域随机裁剪后,每张裁剪图,只能覆盖原图的一小部分内容。
注:因为训练数据的输入为224x224,从而图像的最小边S,不应该小于224

数据生成方式:首先对图像进行放缩变换,将图像的最小边缩放到S大小,然后

  • 方法1: 在S=224和S=384的尺度下,对图像进行224x224区域随机裁剪
  • 方法2: 令S随机的在[S_{min}, S_{max}]区间内值,放缩完图像后,再进行随机裁剪(其中S_{min}=256, S_{max}=512

预测方式:作者考虑了两种预测方式:

  • 方法1: multi-crop,即对图像进行多样本的随机裁剪,然后通过网络预测每一个样本的结构,最终对所有结果平均
  • 方法2: densely, 利用FCN的思想,将原图直接送到网络进行预测,将最后的全连接层改为1x1的卷积,这样最后可以得出一个预测的score map,再对结果求平均

上述两种方法分析:

  • Szegedy et al.在2014年得出multi-crops相对于FCN效果要好
  • multi-crops相当于对于dense evaluatio的补充,原因在于,两者在边界的处理方式不同:multi-crop相当于padding补充0值,而dense evaluation相当于padding补充了相邻的像素值,并且增大了感受野
  • multi-crop存在重复计算带来的效率的问题

三、实验效果

3.1单尺度

详解深度学习之经典网络架构(四):VGG-Net_第3张图片

结论:

  • 模型E(VGG19)的效果最好,即网络越深,效果越好
  • 同一种模型,随机scale jittering的效果好于固定S大小的256,384两种尺度,即scale jittering数据增强能更准确的提取图像多尺度信息

3.2多尺度

详解深度学习之经典网络架构(四):VGG-Net_第4张图片

 

结论:

  • 对比单尺度预测,多尺度综合预测,能够提升预测的精度
  • 同单尺度预测,多尺度预测也证明了scale jittering的作用

3.3多尺度裁剪

详解深度学习之经典网络架构(四):VGG-Net_第5张图片

 

结论:

  • 数据生成方式multi-crop效果略优于dense,但作者上文也提高,精度的提高不足以弥补计算上的损失
  • multi-crop于dense方法结合的效果最后,也证明了作者的猜想:multi-crop和dense两种方法互为补充

3.4模型融合

详解深度学习之经典网络架构(四):VGG-Net_第6张图片

 

结论:

  • 通过多种模型融合输出最终的预测结果,能达到the state-of-the-art的效果

3.5对比

详解深度学习之经典网络架构(四):VGG-Net_第7张图片

结论:

  • 与其他模型对比发现,VGG也能达到非常好的效果。

 

四、总结

作者指出,VGG模型不仅能够在大规模数据集上的分类效果很好,其在其他数据集上的推广能力也非常出色。

你可能感兴趣的:(详解深度学习之经典网络架构(四):VGG-Net)