目录
研究背景
研究成果
摘要
1.介绍
2 卷积神经网络的设置
2.1 架构
2.2 设置
2.3 讨论
使用3*3卷积核的优点:
1*1卷积核的作用
3 分类框架
3.1 训练
3.2 测试
3.3 实现细节
4 分类实验
4.1 单一尺寸测试数据评估
结论:
4.2 多尺寸测试数据评估
结论:
4.3 多裁剪评估
结论:
4.4 卷积网络融合
结论:
4.5 与业界最好结果的比较
结论:
5 结论
贡献
自从2012年AlexNet将深度学习的方法应用到ImageNet的图像分类比赛中并取得state of the art的惊人结果后,大家都竞相效仿并在此基础上做了大量尝试和改进
1、小卷积核
在第一个卷积层用了更小的卷积核和卷积步长;
2、多尺度
训练和测试使用整张图的不同尺度
vgg作者不仅将上面的两种方法应用到自己的网络设计和训练测试阶段,同时还考虑了网络深度对结果的影响。
在2014年在ILSVRC比赛上获得了分类项目的第二名(第一是GoogLeNet),和定位项目的第一名。同时模型对其他数据集有很好的泛化能力。
VGG由于其结构简单,提取特征能力强,所以应用场景广泛
例如:快速风格迁移算法、目标检测的backbone、提取特征(fater rcnn,ssd等)gan网络内容特征提取,进行内容计算(内容损失是gan网络损失的一部分)
本文研究了在大规模图片识别中,卷积神经网络的深度对准确率(accuracy)的影响。我们的主要贡献是通过非常小的3x3卷积核的神经网络架构全面评估了增加深度对网络的影响,结果表明16-19层的网络可以使现有设置的网络性能得到显著提高。这项发现是我们在2014年的ImageNet比赛中提交方案的基础,我们的团队分别在定位和分类中获得了第一和第二的成绩。我们还证明了此模型可以泛化到其他数据集上,并达到当前最佳水平。我们已经公布了两个性能最佳的卷积神经网络模型,以便深度视觉在计算机视觉中的进一步研究。
卷积神经网络最近在大规模图片和视频识别中取得了重大成功,这可能得益于大型开源图片库,比如ImageNet,以及高性能计算系统,如GPU或大规模分布式集群。特别是ImageNet大规模视觉识别挑战(ILSVRC),对深度视觉识别架构的发展起到了重要作用,它为几代大规模图片识别系统——从高维浅层特征编码(ILSVRC-2011的获胜者)到深层卷积神经网络(ILSVRC-2012的获胜者)——提供了测试平台。
随着卷积神经网络在计算机视觉领域的应用越来越广,越来越多的人尝试改进Krizhevsky等人在2012年提出的原始架构,以得到更好的准确率。例如,在2013年ImageNet大赛中性能最好的改进方案——在第一个卷积层中使用较小的接受域窗口以及较小的步长,另一种改进方案是在整幅图片及多个尺寸上多次训练和测试网络。在本文中,我们着眼于卷积神经网络中的另一个方面——深度。为此,我们固定了架构中的其他参数,并通过添加卷积层稳定地增加网络深度。这是可行的,因为我们在每层都使用非常小的3x3卷积核。
因此,我们提出了更精确的卷积神经网络架构,不仅在ILSVRC分类和定位中取得最好成绩,还在其他图片识别数据集中取得卓越性能,即便只作为简单框架的一部分(如不需要微调的线性SVM深度特征分类器)。我们公布了两个最佳性能模型,以便进一步研究。
本文组织结构如下。在第二部分,描述了卷积神经网络的设置。图片分类的训练及评估细节在第三部分中阐述。在ILSVRC分类任务中不同设置的比较在第四部分中阐述。在第五部分,总结本文内容。为了完整性,我们还在附录A中描述评估了我们在ILSVRC-2014中的物体定位系统,并在附录B讨论了深度特征在其他数据集上的泛化。最后,在附录C中列出了本文的主要修订记录。
为了公平衡量增加卷积深度对网络的影响,我们所有卷积层的设置均使用与Ciresan(2011)和Krizhevsky(2012)相同的设计原则。在这一部分,我们首先描述了卷积神经网络的通用结构,然后详细介绍了评估中具体配置细节。最后描述了我们的模型与先前最好网络的比较。
在整个训练中,卷积神经网络的输入为固定的224x224的RGB图片。唯一的预处理是对每个像素减去ImageNet训练集中RGB的平均值。图片通过一系列3x3卷积核(是用来获取上下左右及中心的最小尺寸)的卷积层。在一种配置中,也使用1x1的卷积核,这可以看做是输入通道的线性变换(后面接一个非线性变换)。卷积滑动步长固定为1;卷积层的空间填充(padding)模式为保留原空间分辨率,例如3x3的卷积层,padding为1。空间池化(pooling)包含5个最大池化层,接在部分卷积层后面(不是所有卷积层)。最大池化层使用2x2的窗口,滑动步长为2。
在一系列卷积层(不同架构有不同深度)后为3个全连接层(Fully-Connected):前两个每个含有4096个通道,第三个用来给ILSVRC进行分类,因此有1000个通道(1000个类)。最后一层使用softmax。全连接层的设置与所有网络一致。
所有隐藏层都使用ReLU非线性激活函数。注意到我们的网络(除了一个)都不包含局部响应标准化(LRN):在第四部分 中会展示,这个标准化并不会提高网络在ILSVRC数据集上的性能,反而会增加内存消耗和计算时间。在使用的情况下,LRN层的参数是(Krizhevsky et al. 2012)的参数。
本文所评估的卷积神经网络的设置在表1列出,每列一个。接下来我们称他们为(A-E)。所有配置都遵循2.1所述的通用设计,只有深度不同:从网络A的11层(8个卷积层3个全连接层)到网络E的19层(16个卷积层3个全连接层)卷积层的宽度(通道数)非常小,从第一层的64开始,每个最大池化层后增加1倍,直到512。
表1:网络设置(按列显示)。网络的深度从A到E依次增加,增加的层用加粗显示。卷积层的参数用“conv<接受域大小>-<通道数>”来表示,为了简洁,Relu激活函数没有显示。
表2给出了每个设置的参数数目。尽管网络很深,但是网络的权重数目并没有一个更浅但是卷积层更宽和接受域更大的网络权重数目大(sermanet et al., 2014有144M的权重)。
表2:参数数量(百万)
本文网络的设置与ILSVRC-2012好ILSVRC-2013大赛中的前几名完全不同。没有在第一个卷积层使用大的接受域(如11x11的卷积核,滑动步长为4,或者7x7的卷积核,滑动步长为2),我们在整个网络使用3x3的卷积核,与每个像素值进行卷积(步长为1)。很明显,两个3x3卷积层(中间没有池化层)相当于5x5的接受域;三个这样的层相当于7x7的接受域。那么用三个3x3的卷积层代替一个7x7的卷积层有什么好处呢?首先,我们包含三个非线性修正层而非单一层,这使决策函数更具有区分性。其次,我们减少了参数数量:假设一个含有三层3x3卷积层堆叠的输入和输出都包含C个通道的网络,权重数量为3(32C2)=27C2; 而一个7x7的卷积层,需要72C2=49C2个权重参数,相对增加了81%,这相当于在7x7的滤波器上加了一个正则化,迫使它们通过3x3的滤波器进行分解(中间有非线性的加入)。
1x1卷积层的加入(表1中的C)是一种为决策增加非线性因素的方式,不影响卷积层接受域。尽管在这里,1x1的卷积实质上是相同空间维度的线性投影(输入和输出通道相同),但是修正函数引入了非线性因素。值得注意的是1x1卷积层最近被Lin等人(2014)用在“Network in Network”结构中。
小尺寸的卷积滤波器之前被Ciresan等人用过,但是他们的网络深度远小于我们,并且他们没有在大规模ILSVRC数据集上做评估。Goodfellow等人在识别街景数字的任务中使用了深度卷积神经网络(11层),展示了增加深度带来的优越性能。GoogLeNet,在ILSVRC-2014的识别任务中获得了最佳表现,虽然与我们的网络不同,但是相似的是都基于很深的卷积网络(22层)以及很小的卷积滤波器(除了3x3,他们还使用了1x1和5x5的滤波器)。但是他们的网络拓扑比我们的更复杂,而且为了减少计算量,特征图的空间分辨率在第一层衰减的很严重。在第4.5部分将展示我们的模型在单一网络分类中准确率优于GoogLeNet。
1.深度更深并增加了非线性
3个3*3的卷积核感受野与一个7*7卷积核感受野等效,但是三个3*3卷积之间加入了激活函数,与仅使用一个7*7卷积核相比,深度更深且增加了非线性。
2.参数量减少
假设输入数据i道大小为c
3个C通道的3*3的卷积核参数量为3*(C*3*3*C)= 27C*C
1个C通道的7*7卷积核参数量为C*7*7*C= 49C*C
一种为决策增加非线性因素的方式,调整网络维度扩维或者缩小维度
eg:mobilenet使用1*1卷积核来扩维
resnet使用1*1 卷积核来减小维度
前面的部分我们介绍了网络设置的细节。这一部分,我们将详细描述分类卷积神经网络的训练与评估。
卷积神经网络的训练过程与Krizhevsky等人(除了多尺寸训练数据样本的裁剪,后面会介绍)的一样。就是说,通过用包含动量的小批量梯度下降(基于反向传播)做多项式逻辑回归的优化器来对模型进行训练。批次大小为256,动量为0.9,通过权值衰减(L2惩罚因子设置为5*10-4)和对前两个全连接层进行dropout(比率0.5)实现正则化。学习率初始化为0.01,当验证集准确率不提升时以10倍速率衰减(除以10)。总的来说,学习率会衰减3次,然后训练次数为370K(74代)。我们猜想,尽管与Krizhevsky等人的网络相比,我们的网络参数更多,深度更深,但是却需要更少的epoch次数来收敛,因为(1)深度及更小的滤波器数量隐式增强了正则化;(2)某些层执行了预初始化。
网络权重的初始化很重要,由于深度网络梯度下降的不稳定性,不好的初始化会阻碍学习。为了规避这个问题,我们从训练网络A(表1)开始,它足够浅,能用随机初始化。然后,当训练更深网络结构时,我们用网络A的权重初始化前四个卷积层和后三个全连接层(中间层随机)。对预初始化层,不降低学习率,允许他们在学习过程中改变。对于随机初始化,我们从0均值和0.01方差的正态分布中取值。偏差初始化为0。值得注意的是,我们发现可以用Glorot&Bengio(2010)中的随机初始化程序来对权重进行初始化,而不需要进行预训练。
为了得到固定的224x224的RGB输入图片,我们随机从经过尺寸缩放的训练集图片中进行裁剪(每张图的每次SGD迭代时裁剪一次)。为了进一步对训练集数据进行增强,被裁剪图片将进行随机水平翻转及RGB颜色转换。训练图片的尺寸缩放将在后面阐释。
训练集图片尺寸 令S为各向同性缩放的训练图像最小边, 卷积神经网络的输入就是从中裁剪的(S也称为训练尺寸)。裁剪尺寸固定为224x224,原则上S可以取任何大于等于224的值:若S=224,裁剪图像将使用整个图像的统计信息,完全涵盖训练图像的最小边;若S>>224,裁剪图像就会取图像的一小部分,包含一个很小的对象或对象的一部分。
我们考虑使用两种方式来设置训练尺寸S。第一种是固定S,针对单尺寸图片的训练。(注意,裁剪的样本图像内容仍然能够代表多尺寸图片的统计信息)在实验中,评估了两种固定尺寸的训练模型:S=256(在之前研究中广泛使用)和S=384。给一个卷积神经网络,首先用S=256训练。为了加速S=384的训练,使用在S=256上的预训练权重来初始化权重,并且使用较小的初始学习率0.001。
第二种设置S的方式是使用多尺寸图像训练,即每个训练图片的尺寸是[Smin,Smax]之间的随机数(这里使用Smin=256,Smax=512)。由于图像中的对象可能大小不一,所以训练中采用这种方式是有利的。这可以看作是一种尺寸不定(scale jittering)的训练集数据增强,使得一个单一模型能够识别各种尺寸的对象。考虑到速度,我们使用与微调后的S=384的单一尺寸预训练模型相同设置的模型,来训练多尺寸模型。
在测试时,给定一个训练后的卷积神经网络及一张输入图片,用以下方式进行分类。首先,各向同性缩放成预定义的最小边,设为Q(也称为测试尺寸,注意Q不需要等于训练尺寸S(将在第4部分解释),每个S使用多个Q可以提高性能)。然后,根据Sermanet的方法将网络密集应用在测试图片上,也就是说,全连接层先转化为卷积层(第一个全连接层转为7x7的卷积层,后两个转化为1x1的卷积层)。再将这样得到的全卷积网络运用在整幅图像上(未裁切的)。输出是一个分类得分图,空间分辨率依赖于输入图片的尺寸。最后,为了得到固定尺寸的分类得分向量,将分类得分图进行空间平均化(求和——池化)。我们同样使用水平翻转对测试图像进行增强;在原始图像和翻转图像上的soft-max分类概率的平均值作为这幅图像的最终得分。
由于测试阶段将全卷积网络用在了整个图像,因此不需要对图像进行多个裁切采样(Krizhevsky2012),因为网络对每个裁切的重新计算会使效率降低。但是,使用大量裁切图像可以提高准确率,如同Szegedy等人的网络,因为和全卷积网络相比,它能生成关于输入图像更好的采样。同样的,由于不同的卷积边界条件,多重裁切评估与密集评估是互补的:对一个裁剪图片使用卷积网络,卷积得到的特征图被0填充,而密度评估中,相同裁切图的填充自然而然来自于图片的相邻像素(由于卷积和空间池化),大大增加了网络整体的接受域,所以更多上下午信息被获取。尽管我们认为在实践中多尺寸裁切图像增加的计算时间并不能证明其具有更高准确率的潜质,但是为了参考,我们依然在评估时对每个尺寸使用了50 张裁切图像(5×5个规则网格以及水平翻转),3种尺寸一共150张裁切图像,这和Szegedy等人的网络中使用4种尺寸一共144张裁切图像是可比的。
我们的实现使用开源的C++ Caffe工具箱,但是进行了一些重新修改,允许我们用同一个系统的多个GPU训练和评估模型,以及对全尺寸(未裁剪)图片的多种缩放(上文提到的)进行训练评估。GPU批量梯度下降计算完成后,取平均数作为所有批次的梯度。梯度计算在多个GPU间是并行计算的,所以结果与在单个GPU上训练是一样的。
虽然最近提出了更复杂的加速卷积网络训练的方法(Krizhevsky2014),它在网络不同层上用模型和数据并行计算,但是我们发现我们的方法更简单,且在4个GPU系统上的速度相对于单GPU提升了3.75倍,在NVIDIA Titan Black GPU上,训练单个网络需要2~3周的时间。
数据集 在本章,我们讲述了卷积神经网络在ILSVRC2012数据集上的分类结果(被用在ILSVRC2012——2014挑战赛上)。数据集包含1000个类别,被分为三部分:训练集(1.3M张图片),验证集(50K张图片),测试集(100K张图片,没有标签)。分类性能使用两个办法评估:top-1和top-5 error。前者是一个多类分类错误率,即错误分类图像的比例;后者是在ILSVRC上的主要评估标准,即真实类别不在top-5预测类别之中的图像的比例。
对于大部分实验,我们使用验证集作为测试集。某些实验也在测试集上进行,并提交给官方ILSVRC服务器作为“VGG”团队参加ILSVRC-2014竞赛。
我们从评估在单一尺度上使用第2.2中配置的独立卷积网络模型的性能开始。测试集图片大小如下设置:对于固定的S,Q=S,对于变动的S∈[Smin, Smax>],Q=0.5(Smin + Smax>)。结果如表3中。
表3 单一尺寸上的卷积网络性能
首先,注意使用局部相应标准化网络(A-LRN)的性能并没有比未用标准化层的A高。因此我们没有在更深的网络结构上使用标准化操作(B-E)。
其次,我们发现分类的错误率随着卷积层的增加而减少:从11层的A到19层的E。注意,尽管深度相同,配置C(包含3个1x1卷积层)没有配置D(使用3x3卷积层)性能好,这意味着添加非线性层的确有用(C比B好),但是使用卷积获取空间上下文信息更有用(D比C好)。当深度达到19层时,错误率达到饱和,但是更大的数据集使用更深的模型会更好。我们也用网络B与一个5x5的浅卷积网络(派生自B但是将3x3卷积层换成了一个5x5卷积层,与2.3种所述接受域相同)进行了比较,浅层网络的top-1错误率比B(在中心裁剪图像上)高了7%,证明了小滤波器的神剧卷积网络比大滤波器的浅层网络性能更好。
最后,训练时尺寸变化(S ∈ [256;512]) 的性能比固定最小边(S = 256 or S = 384)的性能要好,尽管测试时使用的是单一尺寸。这证明训练集通过变化尺寸来进行数据增强的确能获取更多尺寸的图片统计信息。
第一点:LRN对网络性能提升没有帮助
第二点:对于同一个网络结构多尺度训练可以提高网络精度
第三点:E模型(VGG19)效果最好,一定程度加深网络可以提高网络精度
评估了卷积网络模型在单一尺度上的性能之后,我们现在来评估在测试阶段使用尺寸抖动的效果。先在多个尺寸的测试数据上运行模型(多个Q值),然后计算每个类概率的平均值。考虑到训练尺寸与测试尺寸的差异太大会导致性能下降,模型使用固定的S训练,通过3个接近训练集的测试集尺寸评估,:Q={S-32, S, S+32}。同时,训练时的尺寸波动使测试时能使用更大范围尺寸的图像,所以使用S ∈ [Smin;Smax]训练的模型用更大范围的Q来评估,Q={Smin, 0.5(Smin, Smax), Smax}。
结果如表4,表明在测试时图片尺寸波动会使性能更好(对比表3中单一尺寸的结果)。与之前相同,最深的配置(D和E)表现的最好,并且训练时尺度波动比固定最小边S表现更好。我们在验证集上最好的单一网络模型错误率为24.8%(top-1)7.5%(top5),在表4种加粗。在测试集上,配置E达到了7.3%的top-5错误率。
表4 多尺寸测试集上的卷积网络表现
1、对比单尺度预测,多尺度综合预测,能够提升预测的精度证明了scale jittering(尺度抖动)的作用
2、vgg16为best model
Table5 中我们对密集卷积网络评估和多重裁切评估进行了比较(见Sect 3.2)。我们同样还评估了两种技术通过计算两者soft-max输出平均值的互补结果。可以看出,使用多重裁切比密集评估的效果略好,并且两种方法是完全互补的,因为两者组合的效果比每一种都要好。根据以上结果,我们假设这是由对于卷积边界条件的不同处理方法造成的。
表5 卷积网络评估技术比较。所有实验中,S来源于[256,512],三个测试尺寸Q为{256, 384, 512}
dense evluation&multi-crop两种测试方式联合使用效果最好
到目前为止,我们评估了独立卷积网络模型的性能。这一部分的实验,我们将通过计算多个模型soft-max分类概率的平均值来对它们的输出进行组合。由于模型的互补性,性能得到了改善,这也用在2012 和2013的ILSVRC的最佳结果中。
结果如表6。在ILSVRC比赛中我们进训练了单一尺寸网络和多尺寸网络D(仅仅微调了全连接层而非所有层)。7个模型组合结果在ILSVRC中测试的错误率为7.3%。提交后,我们考虑禁用两个最好表现的多尺寸模型(D和E)进行组合,使用密集评估时错误率减少到7.0%,使用密集和多裁剪评估时错误率为6.8%。作为参考,我们的最佳单一模型错误率为7.1%(E,表5)。
融合模型D E之后模型错误率进一步下降
最后,我们在表7与业界最好结果进行了比较。在2014年的ILSVRC比赛的分类任务中,我们的VGG团队取得了第二名的成绩,使用了7个模型组合的测试错误率,为7.3%,提交后,使用2个模型的组合,将错误率降低到了6.8%。
从表7可以看出,我们的深度卷积神经网络比在ILSVRC-2012和ILSVRC-2013中成绩最好的模型效果明显要好。我们的结果与分类任务的冠军旗鼓相当(GoogLeNet为6.7%的错误率),并且明显比ILSVRC-2013的冠军Clarifai的表现好得多,它使用外部训练数据时的错误率为11.2%,而不使用外部数据时为11.7%。更标志性的是,我们最佳的结果是通过对两个模型的组合——这明显比大多数ILSVRC参赛模型要少。在单一网络性能上,我们的模型取得了最好的结果(7.0%的测试错误率),比单一的GoogLeNet低0.9%。值得注意的是,我们并没有摒弃经典的卷积网络框架,并通过显著增加深度对它的性能进行了提升。
表7 与ILSVRC分类任务中的最佳结果比较。我们的方法叫VGG,只显示了未使用外部训练数据的结果
GooglLeNet分类效果冠军、VGG亚军优于其他网络
本文评估了深度卷积网络(到19层)在大规模图片分类中的应用。结果表明,深度有益于提高分类的正确率,通过在传统的卷积网络框架中使用更深的层能够在ImageNet数据集上取得优异的结果。附录中,展示了我们的模型可以很好的泛化到更多数据集种,性能达到甚至超过了围绕较浅深度的图像表达建立的更复杂的识别流程。我们的实验结果再次确认了深度在视觉表达中的重要性。
1、在一定范围内,通过增加深度能有效地提升网络性能;
2、最佳模型:VGG16,从头到尾只有3x3卷积与2x2池化,简洁优美;
3、多个小卷积核比单个大卷积核性能好(与alxnet对比可知);
4、AlexNet曾经用到的LRN层并没有带来性能的提升,因此在其它组的网络中均没再出现LRN层;
5、尺度抖动scale jittering(多尺度训练,多尺度测试)有利于网络性能的提升。