这就是神经网络 2:VGG论文翻译(大部分)

概述

非常喜欢VGG这篇论文,内容写的层层递进,逻辑严密。对多尺度及深度的探讨很经典。

奈何别人的翻译十分拗口,总是感觉理解不透。只好自己反复阅读,把最精彩的多尺度及实验部分翻译一下。

翻译过程尽量使用国人能懂的方式,宁愿以中国人的思维重写也不使用机器翻译的结果,过程中反复推敲,修改了部分啰嗦的定语和不易懂的表达方式。不喜欢‘我亲爱的老伙计‘、’你这该死的’这种假翻译。翻译就应该让人感觉不出这是翻译的。

由于我也不是专业的翻译,难免有纰漏。多包涵吧!

2 网络配置

在这里插入图片描述

3 分类框架

在上一节中,我们介绍了我们的网络结构的细节。在本节中,我们将介绍分类ConvNet训练和评估的细节。

3.1 训练

ConvNet训练过程基本上遵循Krizhevsky等人(2012)的做法(除了从多尺度训练图像中进行裁剪作为输入这点,后面将会详细说明)。也就是说,是通过使用具有动量的小批量梯度下降法(基于反向传播(LeCun等人,1989))优化多项式逻辑回归目标函数来进行训练。训练的批大小是256,动量为0.9。训练过程中用到了L2正则化(L2惩罚因子为5 · 10^−4),在头两层全连接中用到了dropout正则化(dropout因子为0.5)。初始学习率为 10^-2,每当验证数据集上的准确率饱和时降低10倍。实际上学习率总共降低三次,共经过了370K次迭代(74轮)。跟AlexNet相比,尽管我们的网的参数数量更多深度也更深,却需要更少的训练轮数就能收敛, 我们推测可能是以下原因:(a)更深的深度和更小的卷积核引起的隐式正则化;(b)对个别网络层进行预(训练)初始化。

网络权重的初始化很重要,因为深度网络中梯度是不稳定的,不好的初始化可能会阻碍网络的学习。为了规避这个问题,我们先使用随机初始化训练了一个比较浅的网络:Table1中的配置A网络。然后当我们训练更深的网络结构的时候,使用网络A中已训练好的参数初始化网络的前4个卷积层和后三个全连接层,剩余的中间层采用随机初始化。我们没有因为有些层被预初始化就减小学习率,而是正常的在学习中递减。在随机初始化时,我们使用了均值为0方差为10 ^ -2的正态分布。所有的偏差值都被初始化为0。值得注意的是,在提交论文后,我们发现可以使用Glorot & Bengio(2010)的随机初始化过程,在不进行预训练的情况下初始化权重。

为了获得固定大小(224×224)的图像,先对训练数据集进行尺度缩放,然后随机裁剪(每张图片在每次梯度下降迭代中被裁剪一次)。为了进一步增大训练数据集,裁剪下来的图片会被随机水平翻转和RDB颜色变换(参考AlexNet)。训练图片的尺度缩放在下方说明。

训练图片尺寸。 训练图片各边被等比例缩放后,最小边的边长用字母S表示, 网络将会从被缩放后的图片中进行裁剪作为输入(我们也将S称为训练尺度)。裁剪的尺寸固定为224×224,理论上S可以是任何不小于224的值:如果S = 224,训练图片的最小边长将被完整的裁剪下来;如果S >> 224,裁剪图像将对应于图像的一小部分,仅仅包含一个小对象或对象的一部分。

我们设想了两种设置训练尺度S的方案。一种是选定一个固定的S, 这种方法也就是单尺度训练( single-scale training)(注意,采样裁剪图像中的图像内容仍然可以反映多尺度图像的统计特征)。在我们的实验中,我们训练评估了两种固定的尺度:S=256 (之前已被广泛使用(AlexNet、ZFNet、OverFeat等))和S=384。

第二种方案就是多尺度训练(multi-scale training),这种方案下每个图片都被独立的缩放和随机采样,缩放采用的S在一定范围[Smin, Smax] 内随机变化(我们的Smin = 256,Smax = 512 )。由于图像中的目标可能具有不同的大小,因此这种方法对训练效果是有正向效果的。这也可以看做是通过** 尺度抖动( scale jittering)**对训练集进行了增强,因为模型将被训练的能够在一系列不同尺寸上识别物体。为了加速多尺度模型的训练,我们先使用S=384单尺度训练,然后在此基础上 fine-tuning。

3.2 测试

在测试的时候,使用已训练的模型和输入图像,将按照下面的方式进行分类。首先,图像被等比例缩放,最小边长是一个预定义的值,后面用Q指代它(我们也把它称为测试尺度)。我们注意到测试尺度Q不一定非要等于训练尺度S(我们将在第四小节看到,对每个S值使用多个Q值可以改善模型性能); 然后,缩放后的图片上将会像OverFeat一样在网络上运行。也就是说,全连接层将被转换成卷积层(第一FC层用7×7卷积层实现,最后两个FC层用1×1卷积层实现)(译者注:这里说的是FCN技术,不清楚的读者可参考我前一篇介绍OverFeat的文章)。结果就是全连接层也可以应用在整张(未经过裁剪)的图片上。全连接层最终输出的结果的通道数和总类数相等,每个类的结果都是一个 class score map(不再是一个值),class socre map的形状大小是由输入图片尺寸决定的。最终,为了让每张图片都输出一个固定大小的class score向量,对每个分类的score map进行平均。我们还通过图像的水平翻转来增加测试集,将原始图像和翻转图像的soft-max值进行平均,以获得图像的最终分数。

(译者注:论文将OverFeat(FCN)的评估方法称为密集(dense)评估, 将AlexNet的评估方法称为多次裁剪(multi-crop)评估)

由于FCN网络可以应用在整张图片上,测试时就没必要再进行裁剪采样了(参考OverFeat),从而避免了为每个裁剪图片都重复计算的低效操作。但是与此同时,像GooGleNet那样的多次裁剪采样确实可以改善模型的性能,与全卷积网络相比,这种采样方法得到的结果更好。此外,由于卷积边界的不同,多次裁剪(multi-crop)评估方法和密集(dense)评估方法是互补的:对于裁剪图片,卷积特征图使用0填充边界,在密集评估中对相同尺寸的图像区域进行卷积和池化, 填充自然会来自于图像的相邻部分,这大大增加了整个网络的视野域,所以更多的上下文信息被保留住了。虽然我们认为在实践中多裁剪方法带来的潜在收益跟增加的计算时间比不划算,但是作为参考,我们对每个尺度裁剪了50次(5×5规则网格,2次翻转)、在3个尺度上总共150个裁剪图像在我们的网络上进行了测试,用来和GoogleNet的4个尺度上144次裁剪做比较。

3.3 实现细节

我们的实现来源于公开的C++ Caffe工具箱(Jia,2013)。略…

4 分类实验

数据集。 在本节中使用的就是前面描述卷积网络结构时提到的ILSVRC-2012数据集(ILSVRC-2012-2014三界挑战赛都是用的这个数据集)。数据集包括1000个类别的图像,并分为三组:训练(130万张图像),验证(5万张图像)和测试(10万张图)。使用两个指标评估分类的性能:top-1和top-5错误率。前者是多类分类误差,即被错误分类图像的比例;后者是ILSVRC中使用的主要评估标准,即图像真实类别在前5个预测类别之外的比例。

对于大多数实验,我们使用验证集作为测试集。我们也在测试集上进行了实验,结果被我们以‘VGG’小组的名义提交到ILSVRC官方服务器上去参加ILSVRC-2014挑战赛。

4.1 单尺度评估

我们首先用2.2节中描述的网络配置在单个尺度上评估单个ConvNet模型的性能。测试的图像尺寸规则如下:对于固定的S, Q = S, 尺度抖动的时候S ∈ [Smin, Smax],那么Q = 0.5(Smin + Smax)。测试结果在Table3里。
在这里插入图片描述

首先,我们注意到使用LRN(也就是A-LRN这个网络)相比没使用LRN的网络A没啥优势,所以后面几个更深的网络(B-E)就不用LRN了(AlexNet脸红了吗…)。

其次, 我们观察到分类误差随着深度的增加而减小:从11层的网络A到19层的网络E测试结果的变化就能看出来。特别要注意的是,尽管深度相同,带三层1x1卷积层的网络C要比带三层3x3卷积层的网络D表现差。这表明,虽然附加的非线性确实有帮助(C比B好),使用卷积核捕获空间上下文也很重要(D比C好)。当深度达到19层时,网络的错误率就会达到饱和(降不下去了),更深的模型可能要在更大的数据集上才能体现出优势。我们也考察了把网络B中的每一对3x3卷积层换成一个5x5的卷积层(就像2.3小结中所讲的,它们具有相同的视野域)。替换之后的top-1错误率比网络B(测试时使用中心裁剪)高了7%,这表明使用小卷积核的层数更深的网络要优于使用大卷积核的层数更浅的网络。

最后,训练时采用尺度抖动( scale jittering)(S ∈ [256; 512])比训练时固定尺度 (S = 256 or S = 384)获得的测试结果要好的多,就算测试时采用单尺度也一样。这证实了通过尺度抖动增强训练集确实有助于网络学习多尺度的图像统计特征。

4.2 多尺度评估

上面已经在单尺度图片上评估了的模型的表现,现在一起来看看多尺度对测试结果的影响。也就是把同一张图片缩放成不同的尺寸大小(对应不同的Q值)在同一个网络上分别测试,对输出的结果求平均。由于担心训练和测试的尺寸差异太大会引起性能下降,使用固定尺度训练的模型评估的时候使用的3个测试尺度和训练尺度都很接近:Q = {S − 32, S, S + 32}。同时,训练时的尺度抖动使得网络在测试时可以适应更大范围的尺度变化,所以针对训练时采用尺度抖动的模型(S ∈ [Smin; Smax]
),评估时的3个尺度变化范围相对更大一些:Q = {Smin, 0.5(Smin + Smax), Smax}。

结果在Table 4中。

在这里插入图片描述

结果表明,多尺度评估可以获得更好的性能(跟Tabel3 中同样模型的的单尺度评估结果比)。跟前面的结果类似,最深的两个网络(D和E)表现最好,尺度抖动训练出的模型要比单尺度训练的模型表现好。我们的单个模型在评估集上的最好表现是24.8%/7.5%(top-1/top-5)。在测试集上,网络E可以达到7.3%的top-5错误率。

4.3 多次裁剪评估

Table5中比较了密集评估(dense evaluation)和多次裁剪评估(mult-crop evaluation)(详情参考3.2节)。我们还通过平均两种评估方案的soft-max输出来评估它们的互补性。下面可以看到,多次裁剪评估表现的比密集评估略微好一些,而且两种方法确实是互补的,因为它们的组合优于它们中的任何一种。前面讨论过,我们推测这是由于卷积边界的不同处理方式造成的。
在这里插入图片描述

译者注:VGG训练采用的是多次裁剪,4.1、4.2节测试采用的是密集评估

4.4 多网络融合

前面都是针对单个网络的测试,本节讲多个网络的融合的效果。略…

(译者注:比赛中最好的效果一般都是多个模型融合求平均的结果,虽然生产中不怎么用,但是比赛打榜好使,比赛又不考虑电费和响应时间)

4.5 和其它E STATE OF THE ART网络的比较

ILSVRC-2014挑战赛获得分类第二名。赛后又获得了更低的错误率。略…

在这里插入图片描述

结论

在这项工作中,我们评估了用于大规模图像分类的深度卷积网络(最多19层)。结果表明,网络的深度有利于分类精度,在传统的卷积网络架构(LeNet、AlexNet)基础上大幅增加网络层数就可以在ImageNet挑战赛的数据集上达到state-of-the-art的表现。在附录中我们还展示了我们的模型对于其它任务和数据集的良好的泛化能力,能够达到甚至优于那些深度更浅但是结构更复杂的方案(pipelines)。我们的结果再次证实了深度在视觉领域的重要性。

鸣谢

This work was supported by ERC grant VisRec no. 228180. We gratefully acknowledge the support
of NVIDIA Corporation with the donation of the GPUs used for this research.

引用论文

略…

附录A:定位

在本文的主体中我们讨论的是ILSVRC挑战赛的分类任务,对不同深度的卷积网络架构进行了全面的评估。在这一节中,我们将转向挑战的定位任务,在2014年的比赛中我们获得了25.3%的错误率。定位可以看作是对象检测的一种特殊情况,在定位的时候,无论实际对象数量如何,都应该为top-5的每个类预测一个对象边界框。我们参考了ILSVRC-2013定位任务冠军OverFeat的定位方法并做了少量修改。我们将在A.1小节介绍我们的方法,在A.2小节进行评估。

A.1 定位卷积网络

为了达到目标定位的目的,我们使用了一个非常深的卷积网络,它的最后一个全连接层可以预测边界框的位置,而不是类的得分。一个边界框由一个4-D向量表示,包括框的中心坐标、宽度和高度。有两种预测边界框的方法可选:每次预测一个边界框,所有类共享边界框预测网络(就像OverFeat一样,single-class regression,SCR);或者每个类预测一个单独的边界框(per-classregression,PCR)。第一个方法的最后一层输出一个4-D向量,后一个方法最后输出的是4000-D向量(因为数据集中有一千个类)。除了边框预测层之外的部分我们使用的是网络结构D,这个网络有16层并且在分类任务中表现最好(详情参考第4节)。

训练。定位卷积网络的训练和分类非常像。最主要的区别是我们使用欧式距离作为损失函数,这个函数将会惩罚预测的边界框与真实值之间的偏差。我们分别在S=256和S=384的情况下训练了两个定位模型(因为时间的关系,我们在向ILSVRC-2014提交时没有采用尺度抖动来训练)。我们使用对应(相同的训练尺度)的分类模型的参数对定位模型参数进行了初始化,初始学习率是10^−3。参考OverFeat的方法,我们试过对所有层进行微调和只对前两个全层进行微调的表现。最后一层全连接层使用随机初始化并从头开始训练(译者:分类网络中没对应的部分,只能如此喽)

测试。我们考虑了两种测试方式。第一种方式用来在验证集上比较对网络做各种修改之后的表现,此时只考虑对真实分类的边框预测(不考虑分类的错误)。边界框是对图片进行中心裁剪后在网络上预测得到的。

第二种方法更全面(fully-fledged),卷积定位网络以密集评估(dense)的方式在整张图片上预测,跟分类任务的3.2节很像。不同之处在于全连接层输出的不再是score map而是边框的预测值。为了得到最终的预测值,我们像OverFeat一样使用了贪心合并算法,这种算法会把离得近的边界框合并(对他们的坐标进行平均),并根据分类网络输出的score对它们进行评价。当使用多个目标定位网络时,我们先获取边界预测框的并集然后执行合并算法。我们没有采用OverFeat中的multiple pooling offsets 池化技术,虽然这种方法提高了边界框预测的空间分辨率,并能进一步改善预测结果(译者:我猜计算代价可能高于收益,所以作者放弃了)。

A.2 定位实验

这一小节,我们将会使用第一种测试方式确定最适合定位的方案,然后用第二种方式做进一步的评估。根据ILSVRC比赛规则,预测的边界框与真实边界框的交并比(IOU)大于0.5才能认为是正确的预测。

方案比较。从Table8可以看到,PCR比SCR表现更好,而OverFeat和我们的结论相反:SCR比PCR好。我们还注意到,与只对全连接层进行微调相比,对定位任务的所有层进行微调会得到明显更好的结果(这点和OverFeat的结论相同)。下面的所有实验中S都等于384,为了缩短文章我们没有呈现S = 256的结果。

(译者:下表的结果是在VGG-16上修改之后测得的)

在这里插入图片描述

全面(Fully-fledged)评估。现在我们已经找到了最好的定位网络配置方案:使用PCR并在所有层上进行微调( fine-tuning),现在来进行更全面的测试。我们利用4.5小节中最好的分类方案得到top-5的分类结果,使用稠密计算(densely-computed)方式预测得到的多个边框使用OverFeat中的方法进行合并。与使用中心裁剪的Table8中的结果相比,Table 9中在整幅图片上进行稠密计算得到的结果更上一层楼。我们得到了和第4节测试分类任务时相似的结论:在多个尺度上测试或者在多个网络上测试都能大大改善性能。

在这里插入图片描述

(译者:上图注释又在吹深度的好,深即正义)

附录B

略…

参考资料

VGG: Very Deep Convolutional Networks for Large-Scale Image Recognition

别人的VGG论文翻译——中文版

总结

翻译还是很费劲的,错误在所难免

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值