1 介绍
本文研究了卷积神经网络的深度在大规模图像数据集上对分类准确性的影响。2012年AlexNet的横空出世,使得CNN重新获得学界关注,从而产生了许多基于该结构的改进,如对第一层使用更小的卷积尺寸和步长,以及融合多尺度输入训练网络等等。而本文专注于探讨网络深度对网络性能的影响,通过使用多个小尺寸卷积层增进网络深度同时达到大幅提升网络性能的效果。
本文设计了著名的VGG模型,该模型在大规模图像识别中效果良好,并在ImageNet2014中取得亚军。该模型与GoogLeNet各有所长,但基本都是AlexNet框架的拓展,二者在15年ResNet出现之前各占半壁江山,常被用于目标检测等任务中作为骨架网络结构,直到现在也因其相对于ResNet更小的计算量而在对网络运行速度要求高、可以适当牺牲精度的情况下用于网络结构中。
2 模型概述
2.1 数据预处理
1. 归一化:图片的每个像素值减去整个训练集上计算的平均RGB值。
2. 数据增广:为了获得更多有效的训练图片,同时避免模型“死记硬背”、只学到对应位置应该是某一个值这种情况的出现,采用以下几种随机化方式对图片进行处理。
(1) 随机裁剪:设图片大小为S×S,模型的输入为224×224的图片,所以S应不小于224。当S=224时,输入就是整个图片即不进行裁剪操作。当S>224时,采用随机裁剪,在每一次随机梯度下降迭代中都在归一化后的图片上随机裁剪一个224×224的方块作为训练的输入。
(2) 随机水平翻转。
(3) 随机打乱RGB颜色。
此外,由于数据集中的图像大小是不一致的,所以需要通过缩放将其变为想要的尺寸S×S。对于尺寸,文中有两种处理方式,固定尺寸和多尺度方法。固定尺度训练中,文中设置了两种尺度,分别是S=256和S=384,当S=384时,训练集太大导致训练时间大大增加,为了减少训练时间,加快训练过程,作者直接使用S=256的训练的结果来初始化S=384的参数,并设置较小的学习率10e×-3。在多尺度训练中,对于每一个图像,作者随机从[Smin,Smax](作者的模型中Smin=256,Smax=512)中取一个值为缩放后S的大小。训练图像的大小都是不固定的,这也可以看成通过尺寸抖动增加训练集。同样,为了增加速度作者使用S=384的训练结果作为多尺度训练的初始化。
2.2 模型结构
文中给出了六种网络结构,如Table 1所示,每一个卷积层和全连接层之后都使用ReLU函数作为激活函数。本文希望只使用小尺寸即3x3和1x1的卷积核,而尽可能加深网络深度,而且与其他网络不同的是,网络越深,每一层中卷积核的个数越多,可能作者希望借此使网络学习到更多不同的信息。其中在模型C中引入了1×1的卷积核是为了增加整个模型的非线性表达能力(GoogLeNet中1x1卷积核的作用则是进一步特征融合、减少输出通道数,从而减少该层之后的网络的计算量)。
图一为Table1中模型D的结构,展示了输入图片经每一层变换后的输出图片大小与数量,其中卷积层有十六层,全部是用ReLU函数作为激活函数,使用增加padding的方式使得卷积层的输入和输出尺寸保持一致,这个网络结构的padding大小为1。max-pooling层有五个,每一次经过max-pooling尺寸都减半。最后经过三个全连接层和一个softmax层得到输出。
此外文中通过使用带有momentum的mini-batch梯度下降法来优化神经网络。批量(batch)的大小设置为256,momentum设置为0.9。训练通过权重衰减(L2惩罚系数设置为5×10-4)和对前两个全连接进行dropout正则化(随机失活率为0.5)来防止过拟合。学习率最初设置为10-2,然后当在验证集上的精度停止提高时学习率以10倍的速率下降。总的来说,学习率下降了3次,并且在370K次迭代之后停止。
网络的初始化也尤为重要,由于深度神经网络通常采用随机梯度下降法,不好的初始化可能导致模型困于局部最优点、无法学习到更好的解。为了规避这个问题,文中首先训练了模型A(Table 1),因为模型A比较浅,所以可以通过随机初始化参数的方法进行训练。之后训练其他更深的网络时,使用网络A的结果来初始化其他网络前四个卷积层和后三个全连接层。但是文中指出可以通过使用Glorot&Bengio(2010)的随机初始化过程来初始化权重,而不用进行预训练。
2.3模型测试
在测试过程中,文中也将图像进行缩放,缩放后的尺寸为Q×Q大小的图像,Q与S基本无关,文中指出在测试过程中使用了多个Q进行测试,结果取平均。测试方法首先将网络转化为全卷积网络,第一个全连接层转为7×7的卷积层,后两个全连接层转化为1×1的卷积层。结果得到的是一个N×N×M的结果,称其为类别分数图,其中M等于类别个数,N的大小取决于输入图像尺寸Q,计算每个类别的最终得分时,将N×N上的值求平均,此时得到1×1×M的结果,此结果即为最终类别分数,这种方法文中称为密集评估。
此外,还有另外一种测试方法,和训练过程类似,不用将网络转化为全卷积网络,是从Q×Q大小的图中随机裁剪224×224的图作为输入,文中裁剪了50个图像,而每个图像之前缩放为三个尺寸,所以每个图像的测试图像数目变为150个,最终结果就是在150个结果中取平均。但是作者指出,该方法效率低下,并且不能证明比第一种方法效果好。
除此之外,本文还采取了全卷机网络和随机裁剪相结合的方法,即两者结果取平均。其能大大增加网络的感受野,因此捕获更多的上下文信息,实验中也发现这种方法表现最好。
3实验结果
3.1 单尺度评估
单一尺度即为测试时,将测试集图像全部缩放都Q×Q的单一尺度,表中前四个Q=256,第五六个Q=384。由Table3得出以下三个结论:
第一,比较模型A和A-LRN,作者发现使用局部响应归一化与未使用局部响应归一化相比,效果更差,所以作者在之后的B,C,D,E模型中均未使用局部响应归一化了(之后的经典模型如GoogLeNet等也都没有使用过LRN方法)。
第二,作者观察到从A的11层至E的19层,随着卷积神经网络深度的增加,效果越来越好。值得注意的是,配置C(包含三个1×1的卷积核的卷积层)在深度不增加的情况下,仅仅将1×1的卷积核换成3×3的卷积核,效果就提高较多,这说明虽然附加1×1的卷积核来增加非线性的表达能力确实比较有帮助(C优于B),但是通过增加更大感受野的卷积过滤器来捕获空间上下文也是非常重要的(D优于C)。当深度达到19层时,此架构达到饱和,但是可能更深的模型对更大的数据集更有益。作者还将网络B和具有五个5×5的卷积层的浅层卷积网络进行比较,其通过单个5×5的卷积层来代替B中的每对3×3的卷积层得到。浅层网络的top-1误差高于B网络7%。作者表明这证实了具有小过滤器的深度网络优于具有较大过滤器的浅层网络。
第三,即使在测试的时候使用单一尺度,训练时采用尺度抖动(S∈[256,512])比在固定最小边(S=256,或S=384)的图像上训练产生更好的效果。作者表明这证实了通过尺寸抖动的训练集增加确实能够有助于捕获多尺度的图像统计数据。
3.2 多尺度评估
多尺度评估的尺度是有公式的(作者采用三个尺度进行评估),当训练尺度S固定时,多尺度评估的尺度Q={S-32,S,S+32}。当训练尺度S是在[Smin,Smax]采用抖动随机获取方式时,Q={Smin,0.5(Smin+Smax),Smax}。表中test(Q)一栏中的数据可以通过这种方式计算得到。
从Table 3和Table 4中看出使用多尺度评估比单尺度评估结果要好得多。而且采用尺寸抖动比固定尺寸S的结果要好。
3.3 密集评估和裁剪评估
在Table 5表中,作者比较了密集评估、多裁剪评估和两者结合的方式得到错误率并进行比较。其中可以看出多裁剪方式比密集方式的效果好,而两者结合方式比两者都要好,说明两种评估方法是互补的。作者表示这可能因为卷积边界条件的不同处理造成的。
3.4 多模型融合
到ILSVRC提交的时间,作者只训练了一个单一尺度的网络,和一个多尺度的模型D(仅仅是通过微调了全连接层而不是所有层)。所得到的7个网络的融合具有6.8%的ILSVRC的错误率。在提交之后,作者考虑融合两个表现最好的多尺度模型D和E,在这种方法上使用密集评估的时候将错误率降低到7.0%,并且在使用密集和多尺度评估组合的时候将错误率减少到6.8%。作为参考,作者最好的单个模型准确率为7.1%(模型E,Table5)。
3.5 与其他模型对比
表中显示作者的最好结果6.8%的错误率仅仅与冠军模型GoogleNet差0.1%的错误率。并且在单个模型错误率(作者模型最好的单个模型错误率为7.0%)上比GoogleNet高0.9%。值得注意的是,该网络结果没有偏离LeCun et al. (1989)的经典结构,而且大大提高了其深度。但实际上,由于执着于仅仅使用3x3和1x1的卷积,卷积核个数太多,网络计算量着实不少,这也是该网络的一个不足之处。
4 总结
VGG模型虽然只是ImageNet的亚军,但是其使用很小的卷积核,并通过增加卷积神经网络深度的方式来证明卷积神经网络深度在视觉领域的重要性。其网络结构简单易懂,并在其他数据集上也有很好的效果。