InceptionV4,Inception-ResNet论文笔记

resnet onnx模型转engine resnet inception_计算机视觉

Abstract

非常深的卷积网络是近年来图像识别性能最大进步的核心。一个例子是Inception架构,它已经被证明以相对较低的计算成本实现了非常好的性能。最近,“残差连接”的引入与传统结构相结合,在2015年ILSVRC挑战赛中取得了最先进的表现;其性能与最新一代Inception-v3网络类似。这就提出了一个问题:将“Inception”与“Residual connetctions”结合起来有什么好处吗?在这里,我们给出了明确的经验证据,即残差连接的训练显著加速了Inception网络的训练。还有一些证据表明,有残差模块的Inception结构要比没有残差模块的Inception结构准确率有稍许提升。我们还为剩余网络和非剩余网络提供了几种新的简化架构。这些变化显著提高了ILSVRC 2012分类任务的单帧识别性能。我们进一步展示了适当的“activation scaling”如何稳定非常广泛的Inception Residual connetctions的训练。通过三个残差一个Inception-v4网络的集成,我们在ImageNet分类(CLS)挑战的测试集上实现了3.08%的前五名错误。

1、Introduction

Object recognition(目标识别、图像分类)是计算机视觉和人工智能的核心任务,强大的图像分类可以用在任何计算机视觉领域,例如无人驾驶、机器人、OCR、医学影像等。2012年之前各自应用有各自单独的解决方案,2012年之后深度卷积神经网络称为解决这些领域的主流方法。卷积神经网络可以追溯到20世纪80年代(福岛1980年)和(LeCun et al.1989年),但最近在大规模ImageNet图像识别基准ILSVRC(Russakovsky et al.2014年)上的良好结果(Krizhevsky、Sutskever和Hinton 2012年)重新引起了人们对其使用的兴趣。

同样适用于目标检测的架构也可以成功应用于各种计算机视觉任务,包括目标检测(Girshick等人2014年)、分割(Long、Shelhamer和Darrell 2015年)、人体姿势估计(Toshev和Szegdy 2014年)、视频分类(Karpath等人2014年)、目标跟踪(Wang和Yeung 2013年),和超分辨率(Dong等人,2014)。这些例子只是自那时以来深卷积网络已经非常成功地应用于众多应用中的一小部分。此外,已经证明,卷积网络的结构改进,目标识别性能往往转化为其他任务的性能增益。 (基础图像分类模型的性能改进能迁移到各种CV应用中

这种普遍适用性促使我们关注广泛使用的ILSVRC12对象识别基准(Russakovsky et al.2014)的识别模型,其任务是将图像分类为1000个不同类别中的一个top1(或五个top5)。该数据集包括120万张训练图像、50000张验证图像和100000张测试图像。所有这些课程在1000个班级中平均分配。自2010年以来,该基准一直是衡量对象识别解决方案质量的热门任务。

2015年何凯明提出的“Residual connetctions”表明该操作在训练很深的网络结构时非常重要(inherently important),我们提出将Inception结构中的concatenate合并层替换为残差加法merge层,在保留inception层高精度的情况下加快训练速度。

另外,在不添加Residual connetctions的Inception结构中我们也进行了优化,由于InceptionV3及之前的版本都需要partitioning the model for distributed training(分布式的分段训练)在DistBelief平台上,现在我们把网络结构前移到了Tensorflow平台,可以更统一的对网络进行调整。

在本文中我们对模型设计的基本假设,相比非残差模型参数和计算复杂度不能增加。我们还进行残差Inception网络的改进,V2版本并进行效果测试。

最后,本文对模型集成效果进行测试,single-frame时,多模型比单模型性能没有很大提升

2、Related Work

卷积网络在之后的大规模图像识别任务中变得很流行(Krizhevsky、Sutskever和Hinton 2012)。接下来的一些重要里程碑包括:林、陈和燕2013年的《网络中的网络》、Simonyan和Zisserman 2014年的《VGGNet》和塞格迪等人2015a的《谷歌网》(Inception-v1)。

在(He等人2015年)中介绍了残差连接,它们为利用信号的相加合并进行图像识别,尤其是目标检测的优势提供了令人信服的理论和实践证据。“The authors argued that residual connections are inherently necessary for training very deep convolutional
models
”。我们的发现似乎不支持这一观点,至少在图像识别方面是如此。然而,这可能需要对更深层的网络进行更多的实验,以充分了解剩余连接的真正好处。在实验部分,我们证明了在不利用剩余连接的情况下,训练深度竞争网络并不是很困难。然而,使用剩余连接似乎可以极大地提高训练速度,这是使用剩余连接的一个重要理由。 (我们进行实验,不用残差连接也可以训练很深的网络,残差链接能显著加快训练

resnet onnx模型转engine resnet inception_卷积网络_02

3、Architectural Choices

Pure Inception blocks(Inception-V4改进)

摒弃了之前的分段训练,使用Tensorflow框架,不需要保守的单独调整每一层,现在可以统一的简化的模型策略调整网络,InceptionV4网络结构如图:

resnet onnx模型转engine resnet inception_计算机视觉_03

resnet onnx模型转engine resnet inception_卷积网络_04

Residual Inception Blocks

Inception之后使用不带激活函数的1x1卷积升维,扩展filterbank,匹配输入维度,以此弥补Inception模块带来的维度减少。我们尝试了各种ResNet结构,最后有两种表现比较好的结构,“Inception-ResNet-v1“大致和InceptionV3的计算成本差不多和”Inception-ResNet-v2“大致和InceptionV4的计算成本差不多。(InceptionV4层数较多,计算时间长)

对于带残差的Inception模块在相加层之后不做BN,减少计算量(每次计算完都进行一次BN是较好的,但是这样会导致内存爆炸,因此只在传统的层之后进行BN,不在残差块之后进行)

Scaling of the Residuals(对残差块输出进行幅度缩小)

我们发现,如果过滤器的数量超过1000个,残差连接开始表现出不稳定性,网络在训练早期就“死亡”,这意味着平均池之前的最后一层在几万次迭代后开始只产生零。这是无法避免的,要么通过降低学习率,要么通过向该层添加额外的批处理规范化。(使用更小的学习率和BN不能解决残差的不稳定性

在加法融合之前对残差分支的结果乘以幅度缩小系数(0.1-0.3)

其中2015年的ResNet论文中何凯明提到过类似的问题,当时使用的是两阶段的训练解决该问题,先使用非常小的学习率进行热身,再使用大的学习率进行学习。我们证明当卷积核数量足够大时,该方法效果并不好。我们使用的缩小系数可以在卷积核足够大时解决该问题。

使用缩小系数和不使用对网络的影响不大,不会影响最后的精度,但是可以帮助提高网络的稳定性

类比:残差模块是对前一个模块的输入进行调整,当前一个模块住够好时,右边的“改动”部分应该输出为0,当模块还需要改动时,右边的“改动”部分发挥作用,但是不能每次调整的内容太多,我们添加一个缩小系数,将每次的改动减少,避免进行大量的改动。

resnet onnx模型转engine resnet inception_计算机视觉_05

4、Training Methodology

我们利用TensorFlow(Abadi et al.2015)分布式机器学习系统,使用20(除了此处的改动,其他参数和V3版本训练参数相同)个副本,每个副本运行一个NVidia开普勒GPU,用随机梯度下降法训练我们的网络。我们早期的实验使用了衰减为0.9的动量(Sutskever et al.2013),而我们最好的模型是使用衰减为0.9和∈=1.0. 我们使用了0.045的学习率,每两个迭代使用0.94的指数率衰减一次。此外,梯度剪裁(Pascanu、Mikolov和Bengio 2012)被发现有助于稳定训练。使用随时间计算的参数的运行平均值来执行模型评估。

5、Experimental Results

首先,我们观察了四种变体在训练期间top-1和top-5验证错误的演变。在进行实验后,我们发现我们的持续评估是在验证集的一个子集上进行的,该验证集由于边界条件差而忽略了约1700个黑名单实体。事实证明,该遗漏本应仅针对CLSLOC基准进行,但与其他报告(包括我们团队的一些早期报告)相比,产生了一些不可比的(更乐观的)数字。前1名错误的差异约为0.3%,前5名错误的差异约为0.15%。然而,由于差异是一致的,我们认为曲线之间的比较是公平的。 (验证集中忽略了黑名单数据,导致准确率偏高

另一方面,我们在由50000张图像组成的完整验证集上重新运行了我们的多裁剪和集成结果。最后的集成结果也在测试集上执行,并发送到ILSVRC测试服务器以验证我们的调整没有导致过度拟合。我们想强调的是,最终验证只进行了一次,去年我们只提交了两次结果:一次是BN初始论文,后来是ILSVR-2015 CLSLOC竞赛,因此我们相信测试集数量构成了对我们模型泛化能力的真实估计。(测试成绩说明并没有过拟合,只提交过两次,没有恶意刷榜

Inception-V4三种模块

resnet onnx模型转engine resnet inception_计算机视觉_06

Inception-ResNet-V1三种残差模块


resnet onnx模型转engine resnet inception_深度学习_07

Inception-ResNet-V1 stem网络

resnet onnx模型转engine resnet inception_图像识别_08

Inception-ResNet-V2三种残差模块

resnet onnx模型转engine resnet inception_卷积网络_09

两种下采样 Reduction模块

resnet onnx模型转engine resnet inception_机器学习_10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cQU1Oneu-1648568755106)(D:/Typora_img/image-20220329155931648.png)]

四种网络结构对比结果

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

resnet onnx模型转engine resnet inception_机器学习_11

resnet onnx模型转engine resnet inception_卷积网络_12

Top5-error

resnet onnx模型转engine resnet inception_计算机视觉_13

Top1-error

resnet onnx模型转engine resnet inception_机器学习_14

单模型、单帧结果

resnet onnx模型转engine resnet inception_图像识别_15

单模型、多帧结果

resnet onnx模型转engine resnet inception_图像识别_16

单模型、144帧结果

resnet onnx模型转engine resnet inception_卷积网络_17

多模型集成、144帧结果

resnet onnx模型转engine resnet inception_计算机视觉_18

6、Conclusions

我们详细介绍了三种新的网络体系结构:

1)Inception-ResNet-v1:一种混合的Inception版本,其计算成本与来自的Inception-v3类似(Szegedy et al.2015b)。

2)Inception-ResNet-v2:更昂贵的混合版Inception 显著提高了识别性能。

3)Inception-v4:一种没有残余连接的纯Inception变体,其识别性能与Inception-ResNet-v2大致相同。

我们研究了"residual connections"的引入如何显著提高Inception体系结构的训练速度。我们的最新模型(有和没有"residual connections")优于我们以前的所有网络,这仅仅是因为模型尺寸增加了,同时与竞争方法相比,保持了参数总数和计算成本。

7、References

resnet onnx模型转engine resnet inception_深度学习_19

resnet onnx模型转engine resnet inception_计算机视觉_20

resnet onnx模型转engine resnet inception_卷积网络_21

tensorflow预训练模型及源代码:

https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v4.py