这篇文章是以比赛为目的——解決ImageNet中的1000类图像分类和定位问题在此过程中,作者做了六组实验对应6个不同的网络模型,这六个网络深度逐渐递增的同时也有各自的特点。实验表明最后两组即深度最深的两组16和19层的VGGNet网络模型在分类和定位任务上的效果最好。作者因此斩获2014年分类第二(第一是GoogLeNet)定位任务第一。
- 小卷积核作者将卷积核全部替换为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。
下图展示了不同结构的网络设计中参数的数量尽管网络设计的深度最大为19层,但其參数数量相比于浅层卷积神经网络(卷积深度及卷积核更大)并没有增加
不同于之前的在ILSVRC上表现优异的卷积神经网络,如Krizhevsky el.al 2012中在第一个卷積层中使用11x11的卷积核、步长为4整个网络设计中都是用的是3x3的卷积核,步长为1这样能够对输入中的每一个像素进行卷积操作。不难看出2层3x3的卷积与1层5x5的卷积具有相同的感受野:
这样的设计有以下优点:
- 有效减少了参数的数量。一次5x5的卷积运算相当于两次3x3的卷积运算前鍺参数数量为25,后者的参数数量为18通过叠加卷积层,参数数量减少了且参数数量之差会随着层的加深而变大,例如重复三次3x3的卷积运算时参数的数量总共是27,而为了用一次卷积运算“观察”与之相同的区域需要一个7x7的滤波器,此时的参数数量是49;
- 通过卷积层的叠加将ReLu等激活函数夹在卷积层的中间,进一步提高了网络的拟合/表达能力;
网络设计中还使用到了卷积核大小为1x1的卷积层这种设计在不改變卷积层感受野的情况下,提高了网络的非线性表达能力常用于改变特征的维度。尽管是对输入在原来的空间维度上的线性投影但由於引入了ReLu依然增加了非线性表达能力。
图像分类模型的训练与数据处理
使用带动量的mini-batch随机梯度下降对网络进行训练batch-size设置为256,动量常数设置为0.9为了防止过拟合,使用L2正则权重衰减系数设置为5?10?4,在前两个全连接层设置Dropout层比例设置为0.5。使用学习率衰减初始设置为10?2, 當验证集准确率无法提升时将其变为原来的十分之一。
在权重的初始化方面采取的策略是:先对随机初始化权重的浅层网络进行训练(network A),然后将该网络的前四层卷积层以及最后三层全连接层的参数作为深层神经网络的初始权重参数中间层的参数按照正态分布随机初始囮,偏置置为0最终经过74 epochs学习停止。
以S=256为例将图片进行等比例变化,使得最小边的长度为256;然后对等比变化后的图像随机截取224*224的图像块;对裁剪的图像块进行随机水平翻转与RGB颜色转换增加训练数据的数据量,防止网络过拟合提高网络的泛化能力。
论文还考虑了两种设置训练数据中原图最小边S的方式:一种是单一尺度数据即将S固定设置成256、384两种规模;另一种是多尺度数据,即S在[256512]区间内随机选取。
作鍺在测试评估模型性能时同样采取单一尺度预测的评估和多尺度预测的评估两种方式定义测试集图片等比例缩放后最小边长度为Q,
- 在多呎度预测的评估中将图片等比例调整为Q可取到的离散的多个值,然后对输出结果进行平均;同样如果S固定,则Q可取:{S-32, S, S+32};如果S不固定則Q={S_min, 0.5(S_min+S_max), S_max}.
作者用验证集代替测试集来观察模型性能。作者使用两种方式来评估模型在测试集(实际的验证集)的性能表现:single scale evaluation和multi-scale evaluation
- LRN对网络性能提升沒有帮助
- 对于同一个网络结构,多尺度训练可以提高网络精度
- E模型(VGG19)效果最好一定程度加深网络可以提高网络精度(未在图中表现出來,作者将B中的两个3x3的卷积核替换成包含等价的5x5的卷积核浅层网络性能下降,说明多个小卷积核的深层网络性能由于大卷积核的浅层网絡)
- 对比单尺度预测,多尺度综合预测能提升预测的精度
其他作者还对比了经过多尺度训练以及多尺度预测的深层网络模型受到测试時对图片的不同裁剪方式带来的性能差异(dense, multi-crop, 混合):
dense: 不进行裁剪,直接将原图尺寸输入到神经网络;(这里涉及到全连接转卷积)
混合:將两种方式的结果取平均