深度学习模型VGG

背景介绍

这篇文章是以比赛为目的——解决ImageNet中的1000类图像分类和定位问题。在此过程中,作者做了六组实验,对应6个不同的网络模型,这六个网络深度逐渐递增的同时,也有各自的特点。实验表明最后两组,即深度最深的两组16和19层的VGGNet网络模型在分类和定位任务上的效果最好。作者因此斩获2014年分类第二(第一是GoogLeNet),定位任务第一。

其中,模型的名称——“VGG”代表了牛津大学的Oxford Visual Geometry Group,该小组隶属于1985年成立的Robotics Research Group,该Group研究范围包括了机器学习到移动机器人。

VGG特点:

  • 小卷积核。作者将卷积核全部替换为3x3(极少用了1x1);
  • 小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核;
  • 层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓;
  • 全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。

深层神经网络结构设计

总体结构设计

卷积神经网络的输入是一个固定大小的224x224的RGB图像,唯一做的预处理是将图像每一个像素值减去RGB三通道的均值。输入图像经过一系列堆叠的卷积层,使用小感受野的3x3卷积核,卷积的步长固定为1。在部分网络结构设计中,包含大小为1x1的卷积核,相当于对输入做非线性变换。卷积时需要对输入特征填充以使输出与输入分辨率相同。网络中包含5个最大池化层,池化作用在2x2的区域上,步长为2。网络的最后包含三个全连接层,前两个全连接层包含4096个神经元,最后一层是1000个神经元对应ILSVRC分类任务的1000个类别,最后是softmax层。所有的隐藏层都使用的是Relu非线性激活函数。

不同深度的网络结构设计

如下为不同的网络结构设计,都遵循上一节中的总体设计原则,区别仅在于网络的深度不同。网络A包含8个卷积层和3个全连接层,网络E包含16个卷积层和3个全连接层。每一个卷积层的卷积深度都很小,初试值为64,每经过一个最大池化层卷积深度乘2,直到最后达到512。

深度学习模型VGG_第1张图片

下图展示了不同结构的网络设计中参数的数量。尽管网络设计的深度最大为19层,但其参数数量相比于浅层卷积神经网络(卷积深度及卷积核更大)并没有增加。

深度学习模型VGG_第2张图片

设计细节的讨论

不同于之前的在ILSVRC上表现优异的卷积神经网络,如Krizhevsky el.al 2012中在第一个卷积层中使用11x11的卷积核、步长为4,整个网络设计中都是用的是3x3的卷积核,步长为1,这样能够对输入中的每一个像素进行卷积操作。不难看出,2层3x3的卷积与1层5x5的卷积具有相同的感受野:

深度学习模型VGG_第3张图片

深度学习模型VGG_第4张图片

这样的设计有以下优点:

  • 有效减少了参数的数量。一次5x5的卷积运算相当于两次3x3的卷积运算,前者参数数量为25,后者的参数数量为18,通过叠加卷积层,参数数量减少了。且参数数量之差会随着层的加深而变大,例如重复三次3x3的卷积运算时,参数的数量总共是27,而为了用一次卷积运算“观察”与之相同的区域,需要一个7x7的滤波器,此时的参数数量是49;
  • 通过卷积层的叠加,将ReLu等激活函数夹在卷积层的中间,进一步提高了网络的拟合/表达能力;

网络设计中还使用到了卷积核大小为1x1的卷积层,这种设计在不改变卷积层感受野的情况下,提高了网络的非线性表达能力,常用于改变特征的维度。尽管是对输入在原来的空间维度上的线性投影,但由于引入了ReLu依然增加了非线性表达能力。

图像分类模型的训练与数据处理

训练

使用带动量的mini-batch随机梯度下降对网络进行训练。batch-size设置为256,动量常数设置为0.9。为了防止过拟合,使用L2正则,权重衰减系数设置为 5 ∗ 1 0 − 4 5*10^{-4} 5104,在前两个全连接层设置Dropout层,比例设置为0.5。使用学习率衰减,初始设置为 1 0 − 2 10^{-2} 102, 当验证集准确率无法提升时将其变为原来的十分之一。

在权重的初始化方面,采取的策略是:先对随机初始化权重的浅层网络进行训练(network A),然后将该网络的前四层卷积层以及最后三层全连接层的参数作为深层神经网络的初始权重参数,中间层的参数按照正态分布随机初始化,偏置置为0。最终经过74 epochs学习停止。

数据的处理

Let S be the smallest side of an isotropically-rescaled training image

以S=256为例,将图片进行等比例变化,使得最小边的长度为256;然后对等比变化后的图像随机截取224*224的图像块;对裁剪的图像块进行随机水平翻转与RGB颜色转换,增加训练数据的数据量,防止网络过拟合,提高网络的泛化能力。

深度学习模型VGG_第5张图片

论文还考虑了两种设置训练数据中原图最小边S的方式:一种是单一尺度数据,即将S固定设置成256、384两种规模;另一种是多尺度数据,即S在[256,512]区间内随机选取。

作者在测试评估模型性能时同样采取单一尺度预测的评估和多尺度预测的评估两种方式。定义测试集图片等比例缩放后最小边长度为Q,

  • 在单一尺度预测的评估中,Q始终为固定值:如果S固定,则Q=S; 如果S在[256,512]内随机选取,Q=0.5(256+512)=384。
  • 在多尺度预测的评估中,将图片等比例调整为Q可取到的离散的多个值,然后对输出结果进行平均;同样,如果S固定,则Q可取:{S-32, S, S+32};如果S不固定,则Q={S_min, 0.5(S_min+S_max), S_max}.

实验和结论

12年到14年的挑战赛都使用的是1000个类别的ILSVRC-2012数据集(Large Scale Visual Recognition Challenge),其中:

训练集:130万张图片;
验证集:5万张图片;
测试集:10万张图片,这组数据的label没有给出(with held-out class labels)。
两个性能评估准则:top-1和top-5 error。

作者用验证集代替测试集来观察模型性能。作者使用两种方式来评估模型在测试集(实际的验证集)的性能表现:single scale evaluation和multi-scale evaluation。

深度学习模型VGG_第6张图片

结论:

  • LRN对网络性能提升没有帮助
  • 对于同一个网络结构,多尺度训练可以提高网络精度
  • E模型(VGG19)效果最好,一定程度加深网络可以提高网络精度(未在图中表现出来,作者将B中的两个3x3的卷积核替换成包含等价的5x5的卷积核浅层网络,性能下降,说明多个小卷积核的深层网络性能由于大卷积核的浅层网络)。

深度学习模型VGG_第7张图片

结论:

  • 对比单尺度预测,多尺度综合预测能提升预测的精度
  • vgg16为最佳模型

其他,作者还对比了经过多尺度训练以及多尺度预测的深层网络模型受到测试时对图片的不同裁剪方式带来的性能差异(dense, multi-crop, 混合):

dense: 不进行裁剪,直接将原图尺寸输入到神经网络;(这里涉及到全连接转卷积

深度学习模型VGG_第8张图片

multi-crop:中心裁剪

混合:将两种方式的结果取平均。

深度学习模型VGG_第9张图片

结论:

  • 混合multi-crop与dense具有更好的性能。

你可能感兴趣的:(机器学习,深度学习)