Inception-v4/ResNet 论文拜读:Inception-v4/ResNet and the Impact of Residual Connections on Learning

原文链接:https://arxiv.org/pdf/1602.07261.pdf

0 摘要

非常深的卷积网络是近年来图像识别性能最大进步的核心。一个例子是在Inception架构,它已经被证明能够以相对较低的计算成本获得非常好的性能。最近,在2015年ILSVRC挑战赛中,与更传统的建筑相结合的残差连接的引入产生了最先进的性能;它的性能类似于最新一代的incepep-v3网络。这就提出了一个问题:将在Inception架构与残差连接结合起来是否有任何好处。在这里,我们给出了明确的经验证据,即使用残差连接的训练可以显著加快初始网络的训练。还有一些证据表明,残差Inception网络的性能比非残差连接的昂贵Inception网络要好得多。我们还提出了一些新的精简架构,为残差和非残差Inception网络。这些变化显著提高了ILSVRC 2012分类任务的单帧识别性能。我们进一步演示了适当的激活缩放如何稳定非常广泛的残差Inception网络的训练。在三个残差和一个incepep-v4的情况下,我们在ImageNet分类(CLS)挑战的测试集上实现了3.08%3.08\%的top-5错误。

1 介绍

自2012年ImageNet[11]的竞争赢得Krizhevsky等[8],他们的网络AlexNet已成功应用于一个更大的各种各样的计算机视觉任务,例如对象检测[4],分割[10],人体姿态估计[17],视频分类[7],对象跟踪[18],超限分辨[3]。这些例子仅仅是深层卷积网络成功应用的几个例子。

在这项工作中,我们研究了两种最新思想的结合:He等人在[5]中引入的残余连接和Inception架构[15]的最新修订版。在[5]中,认为残差连接对于培训非常深入的架构具有内在的重要性。因为在Inception网络往往是非常深入的,所以用残差连接来取代Inception架构的过滤级联阶段是很自然的。这将使Inception在保留其计算效率的同时获得残差方法的所有好处。

除了简单的集成之外,我们还研究了Inception本身是否可以通过使它更深入、更广泛来提高效率。为此,我们设计了一个名为Inception -v4的新版本,它具有比Inception -v3更统一的简化架构和更多的Inception模块。从历史上看,Inception-v3继承了许多早期版本的包袱。技术上的限制主要来自于需要使用DistBelief[2]对分布式训练的模型进行分区。现在,在将我们的训练设置迁移到TensorFlow[1]之后,这些约束已经解除,这允许我们显著地简化架构。该简化架构的细节将在第3节中描述。

在这份报告中,我们将比较两个纯粹的Inception版本,v3和v4,以及类似的昂贵的混合版本。不可否认,这些模型是用一种特别的方式挑选出来的,其主要限制是模型的参数和计算复杂性应该与非残差模型的成本有些类似。事实上,我们已经测试了更大更广的Inception - Resnet变体,它们在ImageNet分类挑战[11]数据集上的表现非常相似。

这里报告的最后一个实验是对这里展示的所有最佳模型的集合的评估。显然,Inception -v4和InceptionResNet-v2的性能都很好,超过了ImageNet验证数据集上最先进的单帧性能,因此我们希望了解这些性能的组合如何推动这个经过充分研究的数据集上的技术水平。令人惊讶的是,我们发现单帧性能的提高并不能转化为集成性能的同样大的提高。尽管如此,它仍然允许我们报告3.1%3.1\%的验证集上的前5名错误,据我们所知,四个模型组合设置了一个新的技术状态。

在最后一部分中,我们研究了一些分类失败,并得出结论,集成仍然没有达到这个数据集上注释的标签噪声,预测仍然有改进的空间。

2 相关工作

卷积网络在Krizhevsky等人的[8]之后,在大规模图像识别任务中得到广泛应用。接下来的一些重要里程碑是Lin等人的网络内网络[9],Simonyan等人的VGGNet[12]和Szegedy等人的GoogLeNet (Inception- v1)[14]。

He等人在[9]中介绍了残差连接,他们在其中给出了令人信服的理论和实践证据,证明了利用信号的相加合并进行图像识别,特别是用于目标检测的优点。两位作者认为,对于训练非常深入的卷积模型而言,残差连接本质上是必要的。我们的研究结果似乎并不支持这一观点,至少在图像识别方面是这样。然而,它可能需要更多具有更深层架构的测量点,以了解由残差连接提供的有益方面的真实程度。在实验部分,我们证明了在不利用残差连接的情况下训练有竞争力的很深的网络不是很困难。然而,残差连接的使用似乎大大提高了训练速度,这是一个很大的论据为他们的使用。Inception深度卷积架构是在[14]中引入的,在我们的讲解中称为GoogLeNet或Inception- v1。后来,Inception架构以各种方式进行了改进,首先是Ioffe等人引入了批处理规范化[6] (Inception-v2)。后来,在第三次迭代[15]中增加了因数分解的思想,从而改进了体系结构。在本报告中,[15]将被称为Inception -v3。

3 架构选择

3.1 纯Inception块

我们以前的Inception模型曾经以一种分区的方式进行训练,每个副本都被分区到一个多个子网络中,以便能够在内存中适应整个模型。然而,Inception架构是高度可调的,这意味着在不同的层中有许多可能的过滤器数量的变化,这些变化不会影响完全训练的网络的质量。为了优化训练速度,我们对层的大小进行了仔细的调整,以平衡不同模型子网络之间的计算。相比之下,随着TensorFlow的引入,我们可以在不分割副本的情况下训练最新的模型。这在一定程度上是由于最近对反向传播使用的内存进行了优化,通过仔细考虑梯度计算所需的张量以及构造计算以减少此类张量的数量来实现。在历史上,我们在改变架构选择方面一直比较保守,并且限制我们的实验只改变孤立的网络组件,同时保持网络的其他部分稳定。没有简化早期的选择,导致网络看起来比实际需要的更复杂。在我们的新实验中,为了摆脱这种不必要的负担,我们决定使用Inception-v4,并为每个网格大小的Inception块做出统一的选择。Incepp -v4网络的大尺度结构如Figure 9所示,其组件的详细结构如FIgure 3、4、5、6、7、8所示。图中没有标记“V”的所有卷积都是相同填充的,这意味着它们的输出网格与输入的大小相匹配。用“V”标记的卷积是有效的填充,这意味着每个单元的输入patch都完全包含在前一层中,输出激活图的网格大小也相应减小。

3.2 残差Inception块

对于Inception网络的Residual版本,我们使用比初始Inception更便宜的Inception块。每个Inception块后面都有一个filter-expansion 层(1 x 1个没有激活的卷积),它用于在添加之前放大滤波器组的维数,以匹配输入的深度。这需要补偿由Inception块引起的维度减少。

我们尝试了Inception的几个Residual版本。这里只详细介绍了其中的两个。第一个"Inception - resnet -v1"大致相当于incep -v3的计算成本,而"Inception - resnet -v2"则相当于新引入的Inception -v4网络的原始成本。两个变量的大尺度结构如Figure 15所示。(然而,在实践中,由于层数较多,Inception -v4的步长时间被证明要慢得多。)

我们的残差变量和非残差 Inception变量之间的另一个小的技术差异是,在Inception - resnet的情况下,我们只在传统层上使用批处理规范化,而没有在总和上使用。完全使用batchnormalization是有好处的,这是合理的,但是我们希望在一个GPU上保持每个模型副本都是可训练的。结果表明,具有较大激活大小的层的内存占用占用了不成比例的内存。通过省略这些层上的批处理规范化,我们能够大量增加Inception块的总数。我们希望,随着计算资源得到更好的利用,这种权衡将变得没有必要。

3.3 残差的缩放

我们还发现,如果过滤器的数量超过1000,残差变量就开始表现出不稳定性,并且网络在训练的早期就已经死亡,这意味着在平均池之前的最后一层在经过数万次迭代之后开始只产生零。这是无法避免的,既不能通过降低学习速率,也不能通过向这一层添加额外的批处理规范化。

我们发现,在将残差添加到前一层之前,缩小残差似乎可以稳定训练。一般来说,我们选取0.1到0.3之间的一些比例因子来调整残差,然后将它们添加到累积的层激活中(参见Figure 20)。

He等人在[5]中观察到非常深的残差网络也存在类似的不稳定性,他们建议采用两阶段训练,第一阶段热身以非常低的学习速率完成,第二阶段则以较高的学习比例完成。我们发现,如果过滤器的数量非常多,那么即使非常低(0.00001)的学习率也不足以应对不稳定性,而学习率高的训练有可能破坏其效果。我们发现,只计算残差更可靠。

即使在没有严格要求的地方,它似乎也不会影响最终的准确性,但它有助于稳定训练。

4 训练方法

我们使用TensorFlow[1]分布式机器学习系统,在NVidia Kepler GPU上运行20个副本,用随机梯度训练我们的网络。我们早期的实验使用了0:9衰减的动量[13],而我们最好的模型是通过使用 0.9衰减和ϵ=1.0\epsilon=1.0的RMSProp [16] 。我们使用了0.045的学习率,每两个epochs衰减一次,使用的是0.94的指数速率。模型评估是使用随时间计算的参数的运行平均值来执行的。

5 实验结果

首先,我们观察四个变量在训练过程中的前1和前5验证错误的演变。实验结束后,我们发现我们对验证集的一个子集进行了持续评估,该子集由于边界框不佳而遗漏了约1700个黑名单实体。结果发现,这个遗漏应该只在CLSLOC基准上执行,但是与其他报告(包括我们团队的一些早期报告)相比,它产生了一些无法比拟的(更乐观的)数字。前1个错误的差异约为0.3%0.3\%前5个错误的差异约为0.15%0.15\%。然而,由于差异是一致的,我们认为曲线之间的比较是公平的。

另一方面,我们重新运行了包含50000张图像的完整验证集的多作物和集成结果。最后的集成结果也在测试集上执行,并发送到ILSVRC测试服务器进行验证,以验证我们的调优没有导致过拟合。我们想强调,最后验证了只有一次,我们去年已经提交我们的结果只有两次:一次BN-Inception 论文,后来在ILSVR - 2015 CLSLOC竞争,所以我们相信测试集数据构成一个真正的估计模型的泛化能力。

最后,我们对不同版本的Inception 和 Inception-ResNet进行一些比较。Inception-v3和Inception-v4模型是不利用剩余连接的深度卷积网络,而 InceptionResNet-v1 和 IncepepnetResNet -v2 模型是利用残差连接的深度卷积网络,而不是过滤器连接。

Table 2显示了验证集上各种体系结构的single-model、single-crop的 top 1和 top 5错误。

Table 3显示了少量 crops 的各种模型的性能:10 crops 用于ResNet,如[5]所报道的),对于Inception变量,我们使用了12种 crops 的评估,如[14]所描述的。

Table 4显示了使用的各种模型的single-model性能。对于残差网络,稠密评价结果由[5]报告。对于Inception网络,144个 crops 策略被使用,如[14]所述。

Table 5比较了集成结果。对于纯残差网络,从[5]中报告了6个模型的稠密评价结果。在Inception网络中,4个模型使用了144个 crops 策略进行集成,如[14]所述。

6 总结

我们已经详细介绍了三种新的网络架构:

  • Inception-ResNet-v1:混合 Inception 版本的计算成本与从[15]中 Inception-v3 获取的计算成本类似。
  • Inception-ResNet-v2:一个更昂贵的混合 Inception 版本,具有明显改善的识别性能。
  • Inception-v4:一个没有残差连接的纯 Inception 变体,具有与Inception-ResNet-v2大致相同的识别性能。

我们研究了如何引入残差连接来显著提高 Inception 架构的训练速度。而且,我们最新的模型(包括和不包括残差连接)的性能优于我们以前的所有网络,这仅仅是因为模型的大小有所增加。

Reference:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章