基于更深卷积网络的大规模图像识别

       本文是 “VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION” 文章的翻译,第一次读外文文献,不知道该怎么选文献,就挑了比较新也出名的“VGG”文献来进行翻译。之后对它的进一步解读将在下一篇博客中写出。全文翻译非常业余,只求看懂就行。实际上这篇文献已经被很多大佬翻译并解读过了,我选它主要是为了在翻译和解读过程中能在网上得到一定的指导,毕竟自学最新的文章遇到问题比较难解决,想从简单的开始,一步步提高。

       如果没有看过此文章的小伙伴可以在这个地址中下载:

链接:https://pan.baidu.com/s/1WXYMHNQHnDyhWlUlgqASjg 密码:gqbm

正文:

 

题目:基于更深卷积网络的大规模图像识别


 

摘要

在这次工作中,我们基于大规模图像识别的设置从而调查了卷积网络深度对其精度的影响。我们的主要工作是对采用超小型(3x3)卷积滤波器架构来增加深度的网络进行了彻底的评估,这次评估表明了将深度推到16-19权重层能实现在现有技术配置上的重大提升。这些发现是我们在2014年ImageNet 挑战赛上提出的基础,在这场比赛上我们团队分别在定位和分类项目中获得了第一名和第二名。我们也表明我们的方法很好地推广到了其他数据集上,在那里他们取得了最新的结果。我们已经公开了两个性能最好的卷积网络模型,以便进一步在计算机视觉中使用深度视觉表征。

 

1、引言

最近,由于大型公共图片库例如ImageNet,和高性能计算机系统例如GPUs或大型分布式集群,卷积网络(ConvNets)在大规模图像和视频识别领域取得了巨大成功。尤其是从高维浅特征编码到深度卷积网络,ILSVRC已经成为几代大规模图片分类系统的试验台,并在最先进的深度视觉识别架构中发挥了重要作用。

随着卷积网络在计算机视觉领域广泛应用,在Krizhevsky等人的原始架构上做了很多尝试改进的方法,以便达到更高的准确率。例如,在ILSVRC-2013中性能最好的提交方案使用了更小的接收窗口大小和在第一个卷积层更小的步长。另一种改进方案是在整张图片和多个范围内密集地训练和测试网络。在本文中,我们提出了卷积网络架构设计上的另一种重要方面——深度。最后,我们修复了架构中的其他参数,并且增加更多卷积层来稳定提升网络深度,这种方法的可行性在于它在每一层中都使用了很小的(3x3)卷积滤波器。

因此,我们提出了更加精确的卷积网络架构,这种架构不仅在ILSVRC的分类和定位项目中达到了最高准确率,还能应用在其他图片识别数据集上,甚至是作为相对简单流程中的一部分时,也能获得优异的表现(例如,使用没有经过微调的线性SVM进行深度特征分类)。我们公开了两种表现最好的模型以便进一步研究。

本文剩下部分的结构如下:在第二部分,我们描述的卷积神经网络的配置;在第三部分中展示了图片分类训练的细节和评估;在第四部分,ILSVRC分类任务中不同配置的对比;第五部分,总结本文。为了完整性,在附录A中描述并评估了ILSVRC-2014目标定位系统,在附录B中讨论了深度特征在其他数据集上的泛化能力,附录C中是论文修改列表。

 

2、卷积网络配置

为了在一个公平的环境中测量卷积网络深度带来的提高,我们参照Ciresan等人和Krizhevsky等人,将所有的神经网络层都用同一种设计原则。在本节中,我们首先描述了卷积网络配置的通用设计,然后详细的描述评估中使用的具体配置(2.2节)。随后,在2.3节中讨论了我们的设计选择并与之前的技术相比较。

2.1、 构架

在训练过程中,将固定大小的224x224 RGB图片喂给神经网络。唯一的预处理是在训练集上计算每一个像素点减去平均RGB值。将图像传入一堆卷积层,卷积层中使用了感受野非常小的滤波器:3x3(这是捕获左右,上下,中心的概念中的最小尺寸)。在其中一个配置中还使用了 1x 1 的卷积滤波器,这个过程可以看作是输入通道的一个线性变化(接着是非线性变换)。卷积步长固定为一个像素值;卷积层的空间填充是卷积后保留下来的空间分辨率,即在3x3的卷积层之后填充是1个像素。空间池化是由五个最大池化层实现的,在一些卷积层之后(并不是所有卷积层后面都有最大池化层)。最大池化层的执行窗口是2x2 的像素,步长为2。

一堆卷积层(不同构架中具有不同深度)后面是三个全连接层(FC):前两层有4096个通道,第三个执行1000类ILSVRC分类因此包含了1000个通道(每一个类对应一个通道)。最后一层是soft-max层。全连接层的配置在所有网络中都是一样的。

所有隐藏层都配有非线性矫正(ReLU)。我们注意到,我们的网络只有一个包含了局部响应正则化(LRN):将会在第四节中介绍,这种正则化不能提高在ILSVRC数据集中的性能,反而造成内存消耗和计算时间增加。如果需要使用,LRN的参数可以参考AlexNet。

 

2.2、配置

本文所评估的卷积网络的配置列在表格1中,每列一个。在下文中我们会用他们的编号(A-E)来代替。所有配置都遵循2.1节提到的通用设计,只在深度上有所不同:从网络A中11个权重层(8个卷积和3个全连接层)到网络E中19个权重层(16个卷积和3个全连接层)。卷积层的宽度,从第一层64开始随后在每一个最大池化层之后增加两倍,直到达到512。

表2中给出了每个配置中的参数数量。尽管深度很大,我们网络中权重的数量不超过有着更大卷积层宽度和接收野的较浅网络中的权重数量(144M权重在(Sermanet 等人.2014))。

 

2.3、讨论

我们的卷积网络配置与ILSVRC-2012(2012年Krizhevsky等人)和ILSVRC-2013(2013年Zeiler和Fergus等人)比赛中性能最好的模型配置有很大不同。在第一层卷积层中没有使用相对大的感受野(例如,2012年,Krizhevsky等人使用的11x11步长为4,或2013年Zeiler和Fergus和2014年Sermanet等人使用的7x7步长为2),我们在整个网络中都使用较小的3x3感受野,这对输入中每个像素进行卷积(步长为1)。很轻易可以看出一堆两个3x3的卷积层(不含空间池化)能形成一个5x5的有效感受野;3个这样的卷积层能形成一个7x7的有效感受野。例如,一堆三个3x3的卷积层代替了单个7x7的卷积层,那么我们从这样用法中获取了什么?首先,我们将三个非线性矫正层合并起来代替单个卷积层,这种方式能使决策函数更加具有辨别能力。其次,我们减少了参数的个数:假定一个三层的3x3卷积堆的输入和输出都有C个通道的,这个堆由3(32C2)= 27C2 权重进行参数化;与此同时,单个7x7的卷积层需要72C2=49C2 个参数,即多了超过81%。这可以看作在7x7的卷积滤波器上利用了正则化,迫使它们凭借3x3的滤波器进行分解(在其间注入非线性)。

引入1x1的卷积层(表1,配置C)是在不影响卷积层感受野的情况下增加决策函数非线性的一种方法。即使在我们的这种情况下,1x1的卷积本质上是在同一空间维度上的线性映射(输入和输出通道数量相同),由纠正函数引入附加非线性。应该注意的是,最近Lin等人在“Network in Network”构架中已经使用了1x1的卷积层(2014年)。

Ciresan等人(2011年)早就使用过小尺寸的卷积滤波器,但是他们的网络没有我们的网络深,并且他们没有对大规模ILSVRC数据集进行评估。Goodfellow等人将深度卷积网络应用在街道号码识别任务上,并表明增加网络深度会能得到更好的性能。ILSVRC-2014分类任务中性能最好的模型——GoogLeNet(Szegedy等人,2014),虽然是独立于我们的工作而开发出来的,但相似之处是它也是基于非常深的卷积网络(22个权重层)和卷积滤波器的(他们除了使用3x3的滤波器也使用了1x1和5x5的滤波器)。然而他们的网络拓扑结构比我们的网络要复杂得多,在第一层急剧减少特征放映的空间分辨率达到减少计算量的目的。正如4.5节中,我们的模型在单网络分类准确率方面要优于Szegedy等人的模型(2014)。

3、分类框架

在之前的小节中我们展示了网络配置的细节。在本节中,我们会描述分类卷积网络训练和评估的细节。

3.1、训练

训练卷积网络的过程通常都是依照Krizhevsky等人提出的方法(2012)(除了从多尺寸训练图片集中抽取输入量,接下来的会解释)。也就是说,通过带有momentum的mini-batch梯度下降算法来优化多项式逻辑回归目标函数的方法来进行训练。Batch的大小设置为256,momentum设置为0.9。通过权重衰减(L2惩罚系数设置为5*10-4)和对最开始的两个全连接层进行dropout正则化(dropout系数设为0.5)的方法来实现训练正则化。学习率最初设为10-2,然后在验证集上准确率不再提高时将学习率以10的倍数下降。总的来说,学习率下降了三次,并且在370K迭代(74次训练)后停止学习。我们推测,尽管我们的网络相较于(Krizhevsky等人,2012)由跟多的参数和更深的深度,然而由于(a)更深的深度和更小的卷积滤波器尺寸增强了隐性正则化;(b)某些层的预初始化,使得网络需要更少的训练次数来达到收敛。

由于在深度网络中梯度的不稳定,较差的初始化会拖延学习过程,所以网络权重的初始化很关键。为了规避这个问题,我们开始训练配置A(表格1),这个配置深度足够浅可以用来进行随机初始化训练。然后,当训练到更深的构架时,我们使用网络A的卷积层来初始化最初四个卷积层和最后三个全连接层(中间层随机初始化)。我们没有为了预初始化卷积层来降低学习率,而是允许它们在学习过程中发生变化。为了随机初始化(可以应用的话),我们从均值为0和方差为10-2的正态分布中采样均值。初始化偏置为0。但在论文发表后就失去了价值,因为我们发现使用Glorot&Bengio(2010)提出的随机初始化过程不需要预训练就可以初始化权重。

为了获得固定大小224x224的卷积网络输入图像,他们从重新获取的训练图片中任意裁剪(每次SGD迭代时对每张图片进行裁剪)。为了进一步增加训练集,对裁剪图片进行随机水平翻转和随机RGB颜色替换(Krizhevsky等人,2012)。训练集图片的重新调整会在下文解释。

训练集图片大小。令S为各向同性重新调整后图片的最小侧,其中对卷积网络的输入进行裁剪(我们也将S成为训练尺度)。当裁剪尺度规定为224x224时,原则上S可以取不小于224的任何值:当S=224,裁剪将会捕获整张图片的统计数据,完全穿过训练图片的最小端;当S》224,裁剪将会对应图片的一小部分,包含一个小对象或者对象的一小部分。

我们考虑了两种设置训练尺度S的方法。第一个是固定S,这就意味着单一尺寸的训练(需要注意的是,采样裁剪中的图片内容任然可以代表多尺寸的图片统计数据)。在我们的实验中,我们在两个固定的尺度上评估训练模型:S=256(在之前的方法中广泛使用)和S=384。给定了卷积网络配置之后,我们首先用S=256连训练网络。用S=384的网络来加速训练,使用S=256的预训练权重来对它进行初始化,并使用了更小的初始学习率10-3。

第二种方法是设S为多尺寸训练,这种方法中每一张训练图片使用从特定的范围[Smin, Smax]中随机采样的S来独立重新调整(我们采用的是Smin=256,Smax=512)。因为图片中的对象可以由不同的大小,所以在训练期间就将这点考虑进来是非常有益的。这可以看作使用尺寸抖动(scale jittering)来增加训练集,其中单个模型被训练来识别大范围尺度上的对象。考虑到速度方面,我们使用微调具有相同配置、固定S=384预训练的单尺寸模型的所有层来训练多尺度模型。

 

3.2测试

在测试时,给定训练卷积网络和输入图片,按以下方式进行分类。首先,按照预定义最小图片边接进行各向同性的重新调整,用Q来表示(我们也称它为测试大小)。我们注意到Q没必要等于训练尺寸S(正如我们将在第4部分给出的,对每个S使用Q中的几个值可以提高性能)。然后,用类似(Sermanet等人,2014)的方法将网络密集地应用于重新调整的测试图片上。也就是说,全连接层首先转换成卷积层(第一个全链接层转换成7x7的卷积层,最后两个全连接层转换成1x1的卷积层)。接着产生的全卷积网络应用于整张(未裁剪)图片。结果就是一个通道数等于类的数量的类别分数图,和一个取决于输入图片大小的多变的空间分辨率。最终,为了得到图片的一个类别分数的定长向量,类别分数图要在空间上平均(sum-pooled)。我们还通过对图片进行水平翻转来增大测试集;将原始图片和翻转图片进行归一化函数(soft-max)分类后,取其平均值得到了图片的最终分数。

因为全连接卷积网络应用在整张图片上,所以图片不需要在测试时(Krizhevsky等人,2012)进行采样多重裁剪——这种方法为了每次裁剪要对网络进行重新计算,所以效率不高。与此同时,像Szegedy等人(2014)那样使用大量的裁剪,能达到提高准确率的目的,因为它比全卷积网络得到了一个更好的输入图片采样。此外,由于不同卷积边界条件,多裁剪评估方式是密集评估方式的一种补充:当将卷积网络应用在一种裁剪方式上时,卷积特征图进行零填充,此时如果在同样一种裁剪方式上进行的密集评估的填充自然是来自于同一张图片的相邻部分(由于卷积和空间池化),这种方法极大地增加了整个网络的感受野,所以能捕获更多内容。尽管我们相信在实际中多裁剪所增减的计算时间不能与预期达到的准确率相匹配,但为了参考,我们仍对每个尺寸上进行50次裁剪来评估我们的网络(5x5个规则网格和2次翻转),与Szegedy等人(2014)在4个尺寸上进行144次裁剪相比,我们只在3个尺寸上就一共进行150次裁剪。

 

3.3实现细节

我们使用了公开的C++ Caffe工具箱(2013年10月提供)进行实现,包含的一些重要的模型参数,允许我们在单一系统的多种GPUs平台上进行训练和进行评估,也可以对多规格(如上所述)的全尺寸图片(未裁剪)进行训练和评估。多GPU训练利用了数据的并行性,并且将每批训练图像分开进到多个GPU小批块上运行,并在每块GPU上并行运行。在计算GPU小批块梯度之后,他们取均值来得到整个批次的梯度。梯度计算在GPUs上是同步的,所以结果跟在单块GPU上训练时一模一样的。

尽管最近提出了更加复杂的卷积网络加速方法(Krizhevsky,2014),这种方法对网络的不同层采取模型和数据并行处理,我们发现从概念上看,相较于使用单个GPU,在现有的4-GPU系统上更简单的方案已经能将速度提高3.75倍。在配有4个NVIDIA Titan Black的GPUs上,依赖这个构架训练单个网络要花2-3周时间。

 

4、分类实验

数据集。在本节中,我们介绍在ILSVRC-2012数据集中使用所描述的卷积网络构架来实现图片分类的结果(在ILSVRC 2012-2014挑战赛上已使用)。数据集包括1000类图片,被分成了三个集合:训练集(1.3M的图片),验证集(50K的图片)和测试集(100K带有类标签的图片)。使用两种测试方法来评估分类性能:top-1和top-5的误差。前者是多类分类误差,即错误分类图像的比例;后者是ILSVRC的主要评估标准,并且是计算为在top-5预测类别之外的正确分类图片的比例。

对于大多数实验而言,我们把验证集当作测试集。但作为“VGG”团队参加ILSVRC-2014大赛,我们也会在测试集上进行一些实验,并且提交给官方ILSVRC服务器。

 

4.1、单一尺度评估

(原句:“我们以评估具有在2.2节中介绍的层配置的 在单一尺寸上的 单个卷积网络模型的性能为开始。”这句是真的难翻译,所以我将它改正了我好理解的句子。)我们将在2.2节介绍的层配置应用在单个尺寸的单独卷积网络模型中,然后开始评估它的性能。测试图片的大小设置如下:Q=S,S是定值,Q=0.5(Smin+Smax),S∈[Smin, Smax]。结果见表格3

第一,我们注意到使用局部归一化(A-LRN网络)在没有任何归一化层模型A中没有任何改善。因此,我们没有在更深的构架(B-E)中使用归一化。

第二,我们观察到,从模型A中11层增加到了模型E中19层,这样增加卷积网络深度能减小分类误差。值得注意的是,尽管深度相同,配置C(包含三个1x1的卷积层)比整个网络使用3x3卷积层的配置D性能更差。这表明尽管附加的非线性,但确实有帮助(C比B要好),使用带有非平凡感受野的卷积滤波器去获取空间内容也是非常重要的(D比C要好)。当深度达到19层时,我们架构的错误率达到饱和,但对更大的数据集来说更深的模型可能会有益。我们也将网络B与5x5卷积浅层网络进行比较,这个浅层网络是B将每一对3x3的卷积层用单个5x5的卷积层进行替换而得来的(与2.3节中介绍的具有共同的感受野)。前层网络的top-1误差比B中网络的误差要高7%(在中心裁剪处),这就说明了具有小型滤波器的深层网络要优于具有大型滤波器的浅层网络。

最后,即使在测试时使用的是单一尺寸,但在训练期间的尺寸抖动(S∈[256;512])比起训练固定最小边的图片(S=256或S=384)最终能得到的结果明显要更好。这证明为了捕获多尺寸的图片统计数据,使用尺寸抖动对增大训练集确实有帮助。

 

4.2多尺寸评估

已经在单一尺寸上对卷积网络模型进行了评估,我们现在来评估测试期间尺寸抖动的影响。在一张测试图片的几个重新调整的版本上运行一个模型(对应不同的Q值),随后对得到类的后验概率取平均值。考虑到训练和测试尺寸的巨大差异会导致性能下降,使用超过三种测试图片的大小来评估固定S训练的模型,接近训练的尺度:Q={S-32,S,S+32}。与此同时,训练期间的尺寸抖动使得网络在测试时能应用到更宽的尺度范围,所以用变量S∈[Smin; Smax]来训练模型能在更大范围尺度Q={Smin0.5(Smin+Smax)Smax}进行评估。

实验结果在表格4种给出,表示测试期间的尺度抖动能得到更好的性能表现(与表格3种评估单一尺寸模型相对比)。与之前相同的是,最深的配置(D和E)表现最好,并且尺寸抖动比用固定最小边S进行训练表现要好。我们最好的单网络性能在验证集上是24.8%/7.5%对应top-1/top-5的误差(表4框中加粗)。在测试集,配置E达到了7.3%的top-5误差。

4.3、多裁剪评估

在表5中,我们将密集卷积网络评估与多裁剪卷积评估相比较(可看3.2节中的细节)。我们还使用平均归一化(soft-max)输出的方法来评定这两种评估技术的互补性。我们能看到,使用多裁剪技术表现略好于密集评估技术,并且这两种方法的确存在互补性,因为它们结合后性能要优于它们中每一种。如上所述,我们假设这种情况是由于对卷积边界条件的不同处理造成的。

扫描二维码关注公众号,回复: 3349904 查看本文章

4.4、卷积网络融合

到目前为止,我们只对单个卷积网络模型的性能进行了评估。在实验的这个部分,我们取它们的归一化类的后验概率的均值来联合几种模型的输出。由于模型之间的互补性,这种方法提升了性能,并且在2012和2013的顶级ILSVRC上提交使用。

在表6中展示了结果。当ILSVRC提交时我们只训练了单一尺寸的网络,还有一个多尺度模型D(仅微调了全链接连接层额如是所有层)。结果是这7个网络的总效果达到了7.3%的ILSRVC测试误差。提交之后,我们认为只需要融合两个表现最好的多尺度模型(配置D和E),这种方法在使用密集评估时将误差降到了7.0%,并且在使用密集和多尺度评估相结合时将误差降到了6.8%。作为参考,我们性能最好的单个模型达到了7.1%的误差(表5,模型E)。

 

4.5、与现有技术进行比较

最终,我们将结果与表7中的现有技术进行比较。在ILSVRC-2014挑战赛的分类任务上(Russakovsky等人,2014),我们“VGG”团队使用7种模型相结合达到了7.3%测试误差取得了第二的位置。提交之后,我们结合两种模型相将错误率降低到6.8%。

从表格7种,我们可以看到我们的深度卷积网络大大优于上一代的模型——这些模型在ILSVRC-2012和ILSVRC-2013挑战赛上取得了最好结果。我们的结果比起分类任务冠军(误差为6.7%的GoogLeNet)也非常具有竞争力,并且大大优于ILSVRC-2013的冠军提交Clarifai——使用外部训练数据的情况下达到了11.2%,没使用外部训练数据达的情况下到了11.7%。值得注意的是,试想一下只融合了两个模型就达到了我们最好的结果——远远少于大多数ILSVRC提交中的模型个数。就单个网络性能而言,我们的架构是最好的(7.0%的测试误差),比单个GoogLeNet要低0.9%。值得注意的是,我们没有偏离LeCun等人(1989)提出的经典卷积网络架构,但使用大大增加深度的方法取降低它的误差。

 

5、结论

在本次工作中,我们对用于大规模图像分类的非常深的卷积网络进行了评估。这说明了表征深度能提高分类准确率,并且可以使用一个常规的卷积网络架构通过大大增加深度的方法来实现ImageNet挑战赛数据库上最先进技术的表现(LeCun等人,1989;Krizhevsky等人,2012)。在附录中,介绍了我们的模型很好地适用于各种各样的任务和数据集,匹配或优于构建在较浅深度图像表征的更为复杂的识别通道。我们的结果再次证明了深度在视觉表现中的重要性。

 

 

猜你喜欢

转载自blog.csdn.net/D_____S/article/details/82825322
今日推荐