摘要
论文链接:Inception-v4
近年来,非常深度的卷积网络一直是图像识别性能最大进步的核心。一个例子是Inception架构,它已经被证明以相对较低的计算成本实现了非常好的性能。最近,残差连接与更传统的架构相结合,在2015年的ILSVRC挑战赛中产生了最先进的性能;其性能类似于最新一代Inception-v3网络。这就提出了一个问题,即将Inception架构与残差连接相结合是否有任何好处。本文给出了明确的经验证据,用残差连接进行训练,可以显著加快Inception网络的训练。还有一些证据表明,残差Inception网络的表现比没有残差连接的类似昂贵的Inception网络要好得多。本文还提出了几种新的流线型架构,用于残差和非残差Inception网络。这些变化显著提高了在ILSVRC 2012分类任务上的单帧识别性能。本文进一步证明了适当的激活缩放如何稳定非常广泛的残差Inception网络的训练。通过三个残差和一个Inception-v4的集成,在ImageNet分类(CLS)挑战的测试集上实现了3.08%的top-5错误。
1 简介
自Krizhevsky等人在2012年ImageNet竞赛[11]获奖[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变体,Inception-v3和v4,与同样昂贵的Inception- resnet混合版本。诚然,这些模型是以一种有点临时的方式选择的,主要约束是模型的参数和计算复杂度应该与非残差模型的成本有点相似。事实上,我们已经测试了更大、更广泛的Inception-ResNet变体,它们在ImageNet分类挑战[11]数据集上的表现非常相似。
这里报告的最后一个实验是对这里提出的所有表现最好的模型的集成进行评估。很明显,Inception-v4和InceptionResNet-v2的表现类似地好,在ImageNet验证数据集上超过了最先进的单帧性能,我们想看看这些组合如何在这个经过充分研究的数据集上推动最先进的技术。令人惊讶的是,我们发现单帧性能的提高并不转化为集成性能的类似大的提高。尽管如此,它仍然允许我们在四个模型集成的验证集上报告3.1%的前5错误。据我们所知,这是一个新的技术水平。
在最后一节中,我们研究了一些分类失败,并得出结论,集成仍然没有达到该数据集上标注的标签噪声,预测仍有改进的空间。
2 相关工作
在Krizhevsky等人的[8]之后,卷积网络已经在大规模图像识别任务中流行起来。接下来的一些重要里程碑是Lin等人的Network-innetwork [9], Simonyan等人的VGGNet[12]和Szegedy等人的GoogLeNet (Inception-v1)[14]。
He等人在[5]中引入了残差连接,他们给出了令人信服的理论和实践证据,证明了在图像识别特别是目标检测中利用信号的加性合并的优势。作者认为,残差连接对于训练非常深的卷积模型是天生必要的。我们的发现似乎不支持这一观点,至少在图像识别方面是这样。然而,它可能需要更多具有更深入架构的测量点,以了解残差连接提供的真正有益方面的范围。在实验部分,我们证明了在不利用残差连接的情况下训练有竞争力的深度网络并不是很难。然而,残差连接的使用似乎可以大大提高训练速度,这是使用残差连接的一个很好的理由。Inception深度卷积架构是在[14]中引入的,在我们的介绍中被称为GoogLeNet或Inception-v1。后来,Inception架构以各种方式进行了改进,首先是通过Ioffe等人引入批量规范化[6] (Inception-v2)。后来在第三次迭代[15]中通过额外的因子分解思想对架构进行了改进,在本报告中将其称为Inception-v3。
3 体系架构的选择
3.1 纯Inception块
我们的旧的Inception模型曾经以一种分区的方式进行训练,其中每个副本被划分成多个子网络,以便能够在内存中适合整个模型。然而,Inception体系结构是高度可调的,这意味着在各个层中有很多可能的过滤器数量的变化,这些变化不会影响完全训练好的网络的质量。为了优化训练速度,我们曾经仔细地调整层的大小,以平衡各个模型子网络之间的计算。相反,随着TensorFlow的引入,我们最新的模型可以在不分区副本的情况下进行训练。这在一定程度上是由反向传播所使用的内存最近的优化实现的,这是通过仔细考虑梯度计算需要什么张量,并构造计算以减少这样的张量的数量来实现的。从历史上看,我们在改变架构选择方面相对保守,并将我们的实验限制在改变孤立的网络组件,同时保持网络其余部分的稳定。没有简化早期的选择,导致网络看起来比他们需要的更复杂。在我们较新的实验中,对于Inception-v4,我们决定摆脱这个不必要的包袱,并为每个网格大小的Inception块做出统一的选择。Inception-v4网络的大尺度结构见图9,其组件的详细结构见图3、4、5、6、7、8。图中所有没有标记为“V”的卷积都是相同填充的,这意味着它们的输出网格与输入网格的大小匹配。标记为“V”的卷积是有效的填充,这意味着每个单元的输入补丁完全包含在前一层,输出激活地图的网格大小相应减少。
3.2 剩余起始块
对于Inception网络的剩余版本,我们使用比原始Inception更廉价的Inception块。每个Inception块之后是滤波器扩展层(1 × 1卷积无激活),用于在添加之前对滤波器组的维度进行缩放,以匹配输入的深度。这是为了补偿由Inception块引起的降维。
我们尝试了几个残差的Inception版本。这里只详细介绍了其中的两项。第一个“Inception-ResNet-v1”大致相当于Inception-v3的计算成本,而“Inception-ResNet-v2”相当于新引入的Inception-v4网络的原始成本。参见图15,这两个变量的大规模结构。(然而,Inception-v4的步进时间在实践中被证明是非常慢的,可能是由于层的数量较多。)
在我们的残差和非残差Inception变体之间的另一个小的技术差异是,在Inception- resnet的情况下,我们只在传统层的顶部使用批处理规范化,而不是在总和层的顶部。完全使用批处理正常化是合理的,但我们希望每个模型副本在单个GPU上都是可训练的。事实证明,具有大激活大小的层的内存占用是不成比例的GPUmemory消耗。通过省略这些层之上的批处理规范化,我们能够大大增加Inception块的总体数量。我们希望,随着计算资源的更好利用,这种权衡将变得不必要。
3.3 残差的缩放
我们还发现,如果过滤器的数量超过1000,则残差变体开始表现出不稳定性,网络在训练的早期就“死亡”了,这意味着平均池化之前的最后一层在几万次迭代后开始只产生0。这是无法避免的,无论是通过降低学习率,还是向该层添加额外的批归一化。
我们发现在将残差添加到前一层之前缩小残差激活似乎可以稳定训练。一般来说,我们在0.1和0.3之间选择一些缩放因子来缩放残差,然后将其添加到累积的层激活中(参见图20)。
He等人在[5]中观察到类似的不稳定性,在非常深的残差网络的情况下,他们建议采用两阶段训练,其中第一个“热身”阶段以非常低的学习率完成,然后是第二个阶段以高学习率完成。我们发现,如果滤波器的数量非常高,那么即使是非常低的学习率(0.0001)也不足以应对不稳定,高学习率的训练有机会破坏其效果。我们发现仅对残差进行缩放更可靠。
即使在不需要缩放的地方,它似乎从来没有损害最终的精度,但它有助于稳定训练。
4 训练方法
我们使用TensorFlow[1]分布式机器学习系统使用随机梯度训练我们的网络,使用20个副本,每个副本在NVidia Kepler GPU上运行。我们早期的实验使用衰减为0.9的动量[13],而我们的最佳模型是使用衰减为0.9且 ϵ = 1.0 \epsilon=1.0 ϵ=1.0的RMSProp[16]实现的。我们使用的学习率为0.045,每两个epoch衰减一次,指数速率为0.94。模型评估是使用随时间计算的参数的运行平均值来执行的。
5 实验结果
首先,观察了四种变体在训练过程中的top-1和top-5验证误差的演变。在进行实验后,我们发现我们在验证集的一个子集上进行了持续的评估,该子集由于边界框不好而遗漏了大约1700个黑名单实体。结果是,遗漏应该只对CLSLOC基准执行,但是与其他报告(包括我们团队的一些早期报告)相比,产生一些不可比较的(更乐观的)数字。前1个误差的差值约为0.3%,前5个误差的差值约为0.15%。然而,由于差异是一致的,我们认为曲线之间的比较是公平的。
另一方面,我们在由50000张图像组成的完整验证集上重新运行了我们的多作物和集成结果。最后的集成结果也在测试集上执行,并发送到ILSVRC测试服务器进行验证,以验证我们的调优没有导致过拟合。我们想强调的是,这个最终验证只进行了一次,并且在去年我们只提交了两次结果:一次是BN-Inception论文,后来是ILSVR-2015 CLSLOC竞赛,因此我们相信测试集数量构成了对我们模型泛化能力的真实估计。
对Inception和Inception- resnet的不同版本进行了一些比较。Inception-v3和Inception-v4模型是不利用残差连接的深度卷积网络,而InceptionResNet-v1和Inception- resnet -v2是Inception风格的网络,利用残差连接而不是过滤器连接。
表2显示了验证集上各种架构的单模型、单裁剪top-1和top-5误差。
表3 显示了具有少量裁剪的各种模型的性能:[5]中记录了10种ResNet裁剪),对于Inception变体,我们使用了[14]中描述的12种裁剪评估。
6 结论
我们详细介绍了三种新的网络体系结构:
- Inception- resnet -v1:一个混合的Inception版本,与[15]的Inception-v3具有相似的计算成本。
- Inception- resnet -v2:识别性能显著提高的更昂贵的混合Inception版本。
- Inception-v4:一个没有残差连接的纯Inception变体,与Inception- resnet -v2的识别性能大致相同
我们研究了残差连接的引入如何显著提高Inception架构的训练速度。此外,我们最新的模型(有和没有残差连接)比我们之前的所有网络都要好,这仅仅是因为增加了模型大小。
转载:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/128522765