VGG_Very Deep Convolutional Networks For Large-Scale Image Recognition

流过昼夜 提交于 2019-12-01 01:53:53

用于大型图像识别的很深的卷积网络

1、摘要

在这个论文中我们调查了卷积网络的深度对大型图片识别精度的影响。我们主要的贡献是完整的用一个很小的3*3的卷积过滤器来增加网络深度的评估。在这个先进的配置上面,将深度增加到16-19层将会取得明显的改善。这些发现是我们ImageNet 2014竞赛作品的基础,我们战队在定位和分类任务中分别获得了第一和第二的成绩。并且我们展示了我们的作品在其他的数据集上泛化性能也很好,我们取得了领先的结果。我们将我们另个性能最好的卷积模型公开,来促进计算机视觉中深度视觉作品的发展。

2、引言

卷积神经网络最近再大型图片和语音识别中取得了很大的成功,能取得如此成就可归功于下面几个原因:大规模的公开的图片数据集,比如说ImageNet;高性能的计算系统,比如说GPU和大规模的集群分布(这个翻译可能不专业,应该指的是大规模的分布式计算)。再先进的深度视觉识别领域中ILSVRC有着举足轻重的地位,ILSVRC对从高纬度的影子特征编码(high -dimensional shallow feature encodings)到深度卷积网络这几代的大型图片分类系统的性能进行了测试。

随着卷积网络变成计算机视觉领域的常用方法,有很多试验尝试着取提高最初由Krizhevsky等人提出的模型结构( ImageNet classification with deep convolutional neural net-works. In NIPS, pp. 1106–1114, 2012)。比如说,再ILSVRC2013比赛中,获胜者使用的网络有更小的接受窗口尺寸,和第一层卷积网络更小的步长。另一项改进是在整个图片和多个尺寸上进行训练和测试 (Sermanet et al.,2014; Howard, 2014)。在这个论文中,我们指出了在卷积神经网络中设计的另一个重要的方面-他的深度。所以,我们固定结构的其他参数,稳定的增加卷积网络的深度,也就是增加卷积网络的层数。这种方法看起来是可行的因为我们在所有的层中使用的是很小的3*3的卷积filter。

最终我们提出了一种精度更高的卷积网络结构,它不仅在ILRSVRC分类和定位任务中是最先进的(当时最先进),而且也可以应用到其他的图片识别数据集中,即使用作相对简单的管道(线行SVM分类的深度)的一部分也取得了很好的性能。我们发布了我们两个性能最好的模型来崔进卷积网络的发展。

   

剩余部分分布如下:

section2:我们描述了我们卷积网络的配置

section3:图片分类训练和验证的细节

section4:在ILSVRC分类任务上面进行配置的比较。

section5:总结论文

Appendix A:出于完整性考虑,描述和评估了我们的ILSVRC-2014对象定位系统

Appendix B:讨论了深度特征对于其他的数据集的泛化性能

Appendix C:包含我们提及的所有题论文信息

2、卷积网络配置

为了公平的测量卷积网络深度带来的改善,我们全部的卷积网络使用相同的原则来进行设计,这个是Ciresan等人启发的。在第二章,我们首先描述了我们卷积网络常用的一个配置(2.1),然后详述了在评估中使用的特殊的配置(2.2)。我们的设计选择然后和先进的进行比较,并讨论(2.3)。

2.1 结构

在训练期间,我们卷积网络的输入是固定的224*224的RGB图像。我们提前做的唯一一个操作就是,在训练集中每个像素点减去RGB的平均值。图片传递给一系列的卷积层,我们用一个固定的很小的过滤器3*3(他是捕捉上中下,左右信息最小的尺寸)。在其中也给配置中,我们也使用了1*1的卷积过滤器,他可以看作输入通道的线行转换器(紧跟着非线性化。)卷积的步长固定式1个像素;卷积层输入的空间填充式保证卷积后空间分辨率不变,比如说对于3*3的填充是1个像素(左右上下各一).空间池化是由五个最大池化层组成,他们跟随一些卷积层(注意并不是所有的卷积层都跟随着最大池化层)。最大池化层的窗口大小是2*2像素,步长是2.

卷积层堆(在不同的结构中由不同的深度)后面是三个全连接层:前两个都有4096个通道,第三个执行ILSVRC1000分类因此由1000个通道(每一个对应一个类)。最后一层是softmax层。在所有的网络中全连接层的结构是一样的。

所有的隐藏层都配有ReLU非线性话单元。我们注意到我们的网络包含LRN本地响应正则化:在section4中进行了展示,正则化不会改善ILSVRC数据集上的性能,但是会导致增加内存消耗和时间花费。在应用中,LRN层的参数是Krizhevsky等人的参数。

2.2 配置

在这个论文中进行评估的卷积层配置,在表1每一列中概括了。接下来介绍的时候我们将会使用他们的名字A-E。所有的配置都遵循2.1中的配置标准,唯一不同的激素hi深度,从11层(8conv+3fc)到19层(16Conv+3fc)。卷积层的宽度是相当小的,也就是通道数相当小,第一层是64然后没经过一个最大池化层通道数就会乘以2,当达到512的时候就不再继续增加。

   

表一:卷积网络配置(按列展示)。从左A到右E配置的深度是逐渐加深的

表二我们指出了每一个配置的参数。除了深度,我们网络的权重数量是A,有更大的卷积层宽度和接受域的更加shallow的网络(他的权重是144M在sermanet)的权重数量是B,A≤B.

2.3 讨论

我们的卷积网络配置和在ILSVCRC-2012/2013竞赛中的网络相当不同的。我们没有在第一个卷积层中使用一个相当大的接受域(kernel),我们在整体的网路中都使用了一个很小的3*3的接受域,并且他的步长统一为1个像素。显而易见的是两个3*3的卷积层和一个5*5的卷积层有一样的效果;三个3*3的卷积层相当于一个7*7的接受域。

那么我们为什么使用3个3*3呢而不是一个7*7呢?

第一,我们右三个非线性话层,而不是一个,这样就使得判别函数更具有识别力。

第二,我们减少了参数:假定输入和输出都是一个3*3的卷积右通道C,有3(32C2)=27C*C个参数,7*7有49C个参数。

1*1的卷积层是一个增加判别函数的非线性能力而不用影响卷积层接受域的一个方法。尽管在我们的情况中,1*1卷积是一个有相同空间维度的线行操作,一个额外的非线性单元通过修饰函数引进来。注意的是1*1卷积层最近利用Lin等人的'Network inNetwork。

小的卷积过滤器之前被Ciresan使用过,但是他们的网络明显的比我们的浅,并且他们没有在大规模的数据集ILSVRC中进行评估验证。Goodfellow将11层的深度卷积网络应用到街道编号识别,并且体现了增加层数将会提高性能。GoogLeNet,ILSVRC-2014中最好的分类任务的结构,是独立与我们的工作开发的,但是相似的是他也是基于深度卷积网络(22层) 和小的卷积过滤器(除了3*3它还使用了1*1和5*5).他们的网络拓扑比我们的更加复杂,特征映射的空间分辨率在第一层中减少的更多,这样才能减少计算。在section4.5中将展示,对于单一网络分类的识别精度来讲我们的模型比Szegedy要好。

3、分类结构

在前面的部分我们体现了我们网络配置的细节。在这一部分,我们详细描述了分类卷积网络的训练和评估。

3.1 训练

卷积网络训练步骤按照Krizhevsky来的(除了输入是从多个尺度的图片这一点不一样,后面会介绍)。这个训练是通过梯度法的小批量梯度下降法来实现的(基于LeCun的反向传播)。批量大小是256,动量是0.9.权重衰减(L权重惩罚系数是5*e-4)和dropout(dropout率是0.5)在前两个全连接层中有.学习率初始化为0.01,当验证集的精度不再下降的时候就除以10.学习率总共的衰减过三次,这个学习率在370K次迭代后停止总共74个epoch。我们猜想尽管我们相对于Krizhesky的参数更多,深度更深,但是网络需要更少的迭代是因为:a)更深更小的卷积过滤器的规则化;b)某些特定层的预初始化。

网络权重的初始化是很重要的,因为不好的初始化可以停止学习(这个是因为深度网络的不确定的梯度的原因)。为了避免这个问题,我们开始训练A(之前提到的A-E的5个网络),因为足够浅所以可以随机初始化。然后,当训练更深的网络的时候,我们初始化前四个卷积层和最后三个全连接层用A的权重来初始化。我们没有减少预初始化层的学习率,允许他们随着学习进行改变。这也即是说训练好A以后载训练更深的网络就将A的前四个卷积层和后面的三个全连接层的权重赋值给更深网络进行初始化,令更深网络在此基础上学习。为了随机初始化,我们从均值为0方差为0.01的正态分布中进行随机选组权重数值。偏置初始化为0.值得注意的是,论文提交完后我们发现使用随机初始化(Glorot&Bengio2010)是可以不用预训练的。

为了获得固定大小为224*224的卷积输入图片,他们随机从方所的图片中进行裁剪(每个图片在每个小批量迭代中裁剪一次)。为了数据增强,经过随机水平反转和随机RGB颜色位移。训练图片的缩放在下面介绍。

训练图片的大小:令S是同轴缩放图片的最小尺寸(直接翻译太晦涩难懂,个人理解S就是训练集上采用的图片最小边长的尺寸,为了都有裁剪,所以S>224),卷积网络输入在这里进行裁剪(我们也将S看作训练scale)。裁剪尺寸的大小固定为224*224,原则上S可以取任意不比224小的值:因为S=224裁剪的结果将会捕捉到整个的图片,完整的扫描最小的训练图片;对于S>>224,裁剪的结果将会对应图片的一部分,包含一个小对象或者一个对象的一部分。

我们考虑两个设置训练规模S的方法。

第一种就是固定S,这就对应了单一尺寸的训练(注意采集结果的图像内容仍然可以表示多个缩放后的图片)。在我们的实验中,我们在两个固定的scale上训练了模型:S=256(这个在先进的技术中广泛应用)S=384.给定一个卷积配置,我们首先训练网络使用S=256.为了加速训练384的网络,384的网络用256的网络进行了权重初始化,并用一个更小的学习率0.001.

第二种方法就是设置S是一个多Scale的训练,每一个训练图像是独立裁剪的这个S属于[Smin,Smax].我们使用Smin=256,Smax=512。因为图片中的对象可能是不同的尺寸,将这个应用于训练是有好处的。这个可以看作通过Scale抖动训练集增强。一个单一的模型就训练来在不同的尺寸中进行寻找东西。为了加速,我们通过微调一个有相同配置的单scale模型来训练多scale,这个单scale模型是s=384.

   

3.2 测试

在测试的时候,给定一个训练后的卷积层和输入图片,按照下面方法进行分类。首先,他缩放到一个预先定义的最小图片边长Q。我们注意到test scale不必和trian scale相等(我们将会在section4中展示,对一个S使用几个Q可以提高性能)。然后网络应用到不同scale的测试图片中,某种程度上和Sermanet相似。全连接层首先转换成卷积层(第一个全连接层转换成7*7的卷积层,最后的两个转换成1*1的卷积层)。剩下的网络就全部是卷积层了,然后再应用到整个没有裁剪的图片上。这个结果就是一个分类得分的映射,通道数等于类别数量。最终,为了获得一个固定的图像分类得分的向量,分类得分映射空间平均。我们也通过随机水平反转来增强测试集;原始和反转后的图片的soft-max类别指出器通过获得图片最终的得分来平均。

因为全部的卷积网络应用到整个的图片,这里不用采用多个裁剪(Krizevsky),多个采样是低效的因为他需要网络对每个裁剪多次计算。同时使用一个很多裁剪(Szegedy)能导致提高精度,因为他产生了一个相对于全部卷积网络的输入的进行采样。并且,多裁剪评估是对密度验证的补充,这是因为不同的卷积边缘情况:当对一个裁剪应用卷积网络的时候,卷积特征映射就会填充0,在密集评估的时候填充的是来自临近的区域的相同的裁剪,这样就连续的增加了整体网络的接受域,因此更多的上下文就被捕捉到了。当我们认为在实际用用中多次采样裁剪增加的计算时间代价不能满足精度的增加。为了可供参考,我们使在每个scale中用50个裁剪来验证我们的网络(5*5个常规的g网络2个反转),对于总共的3个scales就有150个裁剪,和4个scale144个裁剪相差不多(Szegedy)。crop应该是对图像进行的剪裁,50就是对图像进行5*5个随机剪裁并且都进行水平镜像。

3.3 实施细节

我们的实施衍生自公开的C++Caffe工具,但是包含很懂典型的修改,允许我们在一个系统内安装多个GPU的情况下执行训练和验证,允许我们在用没有裁剪的多个scale的图片中进行训练和评估。Muti-gpu训练需要数据并行,通过将每个批量的训练数据分割成GPU数目的个数批量,然后在每个GPU中并行计算。在GPU批量的梯度计算完毕后,他们被平均来获得整体的梯度。梯度计算是在GPUs计算同部进行的,因此结果和在单一的GPU上计算是完全一样的。

随着卷积网络训练采用更加复杂的方法最近取得了进步,它对于网路不同的层使用模型和数据上的并行,我们发现我们的概念上更简单的原理已经提供了一个3.75倍的加速,使用的是4GPU比一个GPU的系统3.75倍加速。一个系统配备4个NVIDIA Titan Black GPUs根据结构的不同需要2-3周的时间不等。

4、分类实验

数据集:在这一部分,我们展现了上面描述的卷积网络在ILSVRC-2012数据集上的分类结果。这个数据集包含1000个类,并被分成了3个部分:训练集(1.3M张图片),验证集(50K张照片),测试集(100K张照片)。分类性能是通过两种测量来进行评估的top1和top5错误率。

大多时候我们将验证集用作测试集。某一些也在测试集上测试,因为他最终提交给ILSVRC官方作为VGG小组在ILSVRC-2014竞赛中的最终作品。

4.1 单一scale评估

正如section2.2中描述的那样我们最开始评估性能实在独立的只有一个scale的卷积网络配置中评估。测试图片大小按照下面设置:Q=S,固定S,Q=0.5*(Smin+Smax)在表三中展示了结果。根据下图来看,如果S不变Smin=Smax=S

第一,我们注意到使用本地响应正则化,并不会提高没有正则化的模型A的性能。我们因此在B-E中并不适用本地正则化。你说你不好使AlexNet说他好使,都说的跟真理似的,看来得多总结。

   

第二,

我们观察到分类错误率随深度增加而降低。

  

   

尽管有相同的深度,C(包含1*1过滤器),表现的比D(全部是3*3的过滤器)坏。

  

C比B好这个就指示当额外的非线性化有作用,

  

用卷积层过滤器过滤不平凡的区域来捕捉空间上上下文的信息是很重要的(D比C好)

  

当网路达到19层的时候就饱和了,但是更深的层对于更大的数据集可能有作用。

  

我们也将B和5个5*5的卷积层的影子网络进行了比较,这个应子网络通过用一个5*5的卷积层替换每一个3*3的卷积层(像section2.3中描述的那样他们有相同的接受域)。影子层的top1错误率比B的错误率高7%.这个就确认了一个深度网络有更小的过滤器比一个用字网络有比较大的过滤器性能好很多。影子网络指的是channel为1的网络-个人理解。

最终,在训练时候尺寸缩放导致比在有固定尺寸的图片(S=256 or S=384)性能好很多,即使一个scale使用在测试时候,测试结果也要高一些。这个就确认了,训练集通过scale缩小增强确实有用。

4.2 scale评估

验证完单scale后,我们现在来分析在测试时候scale缩小的影响。它包含在测试图片上进行几个scale的版本,然后对结果进行求平均值。

考虑到训练机和测试集scale之间的很大的差异性导致在性能上的下降,用固定S训练的模型通过三个测试图片尺寸进行评估,和下面这个训练的接近Q={S-32, S, S+32}.

同时,在训练时候scale缩小允许在测试的时候网络应用在更广泛的Scale,因此模型训练S∈[Smin,Smax],评估的是用更大的范围Q = {Smin,0.5(Smin+Smax),Smax}

结果展示在表4中,测试的时候指示scale缩放导致更好的性能(相同的模型单一的scale相比,表三中)。最深的配置D和E表现最好,scale缩小比用一个固定的最小的S比好。我们最好的单网络在验证机上的表现是24.8%/7.5%。在测试集上,E的是7.3%top5错误率。

4.3 多次裁剪的评估

在表5中我们比较了密度卷积网络和多核卷积网络的验证(section3.2进行了细节描述)。我们也通过对他们各自的softmax输出求平均的方式来对两个验证机制的互补性进行了评估。可以看到,使用多核比密度评估表现好一点点,并且他们的两个方法事实上是互补的,他们的组合比他们单个的一个性能要好。就像上面描述的那样,我们希望这个的原因是对不同卷积边界情况的不同对待。

4.4 卷积网络组合

到目前为止,我们评估了独立的独立卷积网络模型。在实验的这个部分,我们结合softmax的平均模型的输出。因为模型互补,所以提高了实验性能,在ILSVRC2012和2013中进行了应用,并且取得了不错的成绩。

结果在表6中展示了。截至ILSVRC提交的时候,我们只训练单scale的网络和一个多scale的模型D(只是微调了全连接层而不是所有层)。7个网络的全体结果有7.3%的ILSVRC的测试误差。在提交之后,我们考虑了一种只有两个最好的多scale模型的组合(就是D和E),将测试误差减小到7%(使用密度验证)和6.8%(密度和多crop验证)。为了以供参考,我们的最好的单模型结构达到了7.1%的错误率(模型E,表5)。

4.5 与最先进技术的比较

最后,我们将我们的结果和最先进的技术进行了比较(表7里面的)。在ILSVRC-2014分类任务竞赛中,我们使用7个模型(7.3%的误差)获得的第二。在提交之后,我们使用两个模型的组合将误差降低到6.8%。

我们可以从表7中看到,我们very deep ConvNets 很明显的比前面几代的模型好。他在ILSVRC-2012和2013中取得了最好的成绩。我们的网络和分类任务的冠军模型GoogleNet相比也是相差不多的,比ILSVRC-2013的Clarifai要好很多。可以认为我们最好的结果是通过结合两个最好的结果才能比几乎大多数的ILSVRC的提交作品更好。相对于单网络性能,我们的结构获得了最好的成绩(7.0%的测试误差),比GooleNet好0.9%。值得注意的是我们没有分离LeCun的结构,而是随着深度的提高,性能变得更好。

5、结论

在这个论文中,对于大型图片识别我们评估了合身的卷积网络(到了19层权重)。深度对分类精度有好处,在ImageNet 竞赛数据集中最先进的性能可以通过一个卷积网络不断的增加深度来获得。在附录中,我们也展示了我们的模型对广泛的任务和数据集的适应性,。我们的结论有一次证明了深度在视觉再现中的重要性。

屏幕剪辑的捕获时间: 2019/6/21 17:31

   

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!