Advertisement

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

阅读量:

参考文献信息:https://arxiv.org/pdf/1905.11946.pdf
代码实现:原论文包含https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
pytorch支持https://github.com/lukemelas/EfficientNet-PyTorch
包括理解!

Revisiting Architecture Scaling in Deep Convolutional Neural Networks

摘要

在固定资源预算的限制下,卷积神经网络(ConvNets)通常被逐步发展和完善。当额外的资源可用时,则可考虑进一步扩展其规模以提升性能。本研究系统探讨了模型缩放方案,并通过详细分析网络深度、宽度及分辨率之间的平衡关系来优化模型性能。在此研究基础上,我们创新性地提出了一种新型缩放策略,在该方案中采用简单而高效的复合系数来进行统一维度上的比例调节。通过实验验证,在MobileNet和ResNet等主流模型架构中均取得了显著的性能提升效果

为了进一步探究人工智能领域的前沿技术问题, 我们采用了神经架构搜索方法设计并构建了一个基准型基础网络, 并将其进行扩展以形成一个被命名为EfficientNets的系列模型。相较于所有现有的卷积神经网络类型而言, 该系列模型不仅提升了计算效率, 同时还显著提高了分类精度。具体而言, 我们的实验表明: 在ImageNet数据集上实现了最高的84.4% top-1准确率和97.1% top-5准确率, 相较于现有的最佳卷积神经网络, 其参数数量减少了约8.4倍, 并运行速度提升至原来的6.1倍。此外, 这些高效且强大的模型架构在迁移学习任务中表现优异: 在CIFAR-100数据集上达到了91.7%的top-1准确率, 在Flowers数据集上取得了98.8%的top-5准确率, 同时在其他三个迁移学习基准数据集上也实现了最高的准确性水平。

两大关键创新:第一,在网络设计中综合考虑了深度、宽度和分辨率三个方面的平衡;第二,在神经架构搜索中确定了具有代表性的EfficientNet主干结构。

1 引言

为了提升模型性能并获得更好的精度结果,CNNs的规模被广泛提升以实现更高的识别能力。例如,ResNet系列通过在ResNet-18的基础上增加更多层结构发展到ResNet-200;最近,GPipe在将基准模型放大四倍大小后,在ImageNet数据集上实现了84.3%的top-1精度。然而其扩张机制尚未得到充分认识,目前主要采用的方式包括放大深度或宽度,一种逐渐普及但尚不常见的方法是放大图像分辨率。在以往的研究中,通常仅选择其中一个维度进行缩放:深度、宽度或分辨率。尽管同时缩放两个或三个维度的操作在理论上可行,然而这种操作往往需要复杂的超参数调优过程,并可能导致性能和效率的次优表现。

本文旨在探讨并重新审视卷积神经网络规模扩展的问题。特别地,在此背景下提出一个问题:是否存在一种普适性策略能够系统性地扩展卷积神经网络以提升性能?通过一系列实验研究发现,在网络宽度、深度以及分辨率这三个关键维度上实现均衡配置对于提升模型性能至关重要。这一发现令人鼓舞,在实现精确平衡方面提供了一种简洁而有效的途径。在此框架下提出了一种复合缩放方法:与传统的单独调整这些因子的方式不同的是我们采用一组固定缩放系数统一调节网络宽度、深度以及分辨率从而达到优化效果

在这里插入图片描述

从直观上讲,在图像尺寸增大时应用复合缩放方法是有意义的。这是因为当图片规模扩大时网络结构通常需要更多的层次以扩展感受野并捕获更高的分辨率细节信息与此同时为了有效处理更大尺寸的数据网络也需要增加通道数量以捕捉到更高分辨率下的细微特征

我们在现有的MobileNets(Howard等人, 2017;Sandler等人, 2018)以及ResNet(He等人, 2016)的基础上展示了该比例方法能够有效运行。值得注意的是, 模型缩放的效果在很大程度上依赖于基准网络的选择, 为了进一步探讨这一问题, 我们采用了神经架构搜索(Zoph&Le, 2017;Tan et al., 2019)来设计新的基准网络, 并将其进行扩展以生成一系列称为EfficientNets的新模型。图1总结了ImageNet上的性能表现, 显示EfficientNets在效率方面明显优于其他ConvNets体系结构, 其中EfficientNet-B7超越了Huang等人(2018)提出的最佳GPipe精度记录(提升top-1准确率6.7%)同时参数规模缩减达8.4倍, 推理速度提升了6.1倍之多。相较于广泛采用的ResNet-50(He et al., 2016), 我们的EfficientNet-B4在相近的计算开销下实现了top-1准确率从76.3%提升至83.0%(+6.7%)的显著进步; 同时该框架在其他常用数据集上的性能表现也十分出色,在8个典型数据集中的5个案例上实现了最新的精度记录的同时比现有ConvNets减少了多达21倍的参数量

在这里插入图片描述

2 相关工作

ConvNet的精度:自2012年AlexNet团队(Krizhevsky等人)在ImageNet比赛中夺冠以来持续提升。特别是在该比赛中的冠军网络Google Net(Szegedy等人)凭借约680万参数实现了74.8%的最高top-1准确率。随后于2017年SE Net团队(Hu等人)开发了基于仅约996 million参数的新架构,在此架构下达到了82.7%的top-1准确率。最近的研究者们提出了GPipe网络(Huang等人),它通过使用557 million参数达到了84.3%的top-1准确率——然而该方案的数据量过大导致计算资源受限只能采用分布式计算并行训练方法以完成训练任务。尽管这些模型主要是为Image Net设计的但近年来研究表明它们表现良好并迁移到其他数据集和其他计算机视觉任务中也取得了不错的效果例如目标检测领域中的研究工作主要由He等人和Tan等人开展。尽管更高的精度对于许多应用来说是至关重要的但随着硬件内存限制我们已经无法继续单纯依靠精度来提高性能因此进一步优化必须提高算法效率。

由于ConvNet的参数数量庞大,在实际应用中往往难以满足移动设备等资源有限场景的需求(Han et al. 2016;He et al. 2018;Yang et al. 2018)。为了缓解这一问题,《通过降低精度来减小模型大小以提高效率》这一常见策略被广泛采用(Iandola et al. 2016;Gholami et al. 2018)。这种策略主要包括SqueezeNets(Howard et al. 2017)、MobileNets(Sandler et al. 2018)以及ShuffleNets(Zhang et al. 2018)。近年来,《神经架构搜索》作为一种自动化方法,在设计高效ConvNets方面取得了显著进展(Tan等人 2019;Cai等人 2019),并通过系统性地探索网络宽度、深度、卷积核类型及尺寸等超参数,在性能上超过了人工设计的轻量化ConvNets。然而,在大规模预训练大模型的研究领域中,《这些技术如何应用于设计更大规模且微调成本更高的模型》仍是一个亟待解决的问题。(本文旨在研究更高精度更大规模模型的建模效率问题)为此《我们采用了基于缩放的方法》以探索这一方向。

存在多种方法来调整ConvNet的规模以适应不同的资源限制。其中一些方法包括调节网络深度的层次结构可以实现缩小或放大(如ResNet-18和ResNet-200)。另外两种主要方法是通过调整网络宽度即通道数量来进行缩放。例如WideResNet(Zagoruyko和Komodakis在2016年提出),以及MobileNets(Howard等在2017年提出),它们通过调整通道数量来进行缩放。值得注意的是较大尺寸的输入图像有助于提升模型的准确性但同时也增加了计算负担。尽管已有研究表明网络深度与宽度对ConvNet的表现都很重要但如何有效平衡这三者仍是一个待解决的问题我们的研究旨在系统性地探讨这一问题

3 复合模型缩放

在本节中,我们将阐述缩放问题,研究了不同的方法,并提出新的缩放方法。

3.1 问题描述

i个卷积层可通过公式 Y_i=F_i(X_i) 进行定义,其中运算符 F_i 表示特定的操作,输出张量 Y_i 与输入张量 X_i 之间的关系由该式体现,而输入张量 X_i 的形状被定义为三维向量 \langle H_i,W_i,C_i\rangle,其中变量 H_i,W,Ci 分别代表该张量的空间维度高度、宽度以及通道数量.基于此,深度卷积神经网络 (ConvNet) 结构通常被设计为由一系列层构成,具体表示方法为 N=F_k⨀...⨀F_2⨀F_1=⨀ _{j=1...k}F_j(X_1)$.实际上,在各个阶段内部的所有层均遵循相同的架构模式:例如,ResNet网络 (He等,2016) 被划分为五个独立的阶段,各阶段内部的所有层均采用相同类型的卷积操作(除初始下采样层外)。因此我们可以将整个ConvNet结构统一表述为:

在这里插入图片描述

其中,在阶段i中应用 Fi 层,并将其重复 L_i 次。符号 \langle H_i,W_i,C_i\rangle 表示输入张量 X 在第 i 层的空间维度、宽度和高度。如图所示,在本节中我们展示了典型卷积神经网络架构的一个实例。该网络通过逐步缩小其空间维度并逐步增加通道数量来提取特征。例如,在第一部分中使用了输入尺寸为 (200\times 150\times 3) 的图像数据集,并在此基础上扩展到了 (150\times 100\times 64) 的数据集以提高模型的泛化能力

与常规设计路线不同的是,在此研究中我们主要探索最优网络架构的同时增加网络深度L_i、宽度C_i以及分辨率(H_i,W_i)。在不修改baseline设定的前提下进行模型缩放能够有效降低资源消耗。然而由于固定特定的网络架构后进行模型缩放能够有效降低资源消耗但仍然存在显著的空间复杂度< L i, C i, H i, W i > 面对这一问题我们需要引入统一比例缩放策略以便在保证性能的同时最大限度地减少可调参数数量这样可以使我们能够在满足资源限制条件下最大化模型性能的目标可表述为以下数学优化问题:

在这里插入图片描述

在本研究中,在缩放网络中分别用于调整网络的深度、宽度以及分辨率的是d,w,r这些参数。其中,在基准网络中预先设定好的参数包括\hat{F}_i, \hat{L}_i, \hat{H}_i, \hat{W}_i, \hat{C}_i等具体数值(具体可见表1中的数据)。

3.2 缩放尺寸

在公式2中所面临的主要挑战是,在面对不同的资源限制时,最优参数d,w,r之间存在相互关联,并且其数值会发生变化。这一困境促使许多传统的方法倾向于仅在一个特定维度上进行ConvNets的缩放策略。

深度(d):缩放网络深度是当前许多ConvNets采用的主要技术(He et al. 2016;Huang et al. 2017;Szegedy et al. 2015;Zagoruyko & Komodakis 2016),其基本原理是更深的网络能够预期地提取更为复杂和多样的特征,并在新的应用中表现出良好的泛化能力。然而,在训练深层网络时会遇到梯度消失问题导致模型难以收敛(He et al. 2016)。尽管如此,在训练过程中采用跳远连接(He et al. 2016)等技术手段能够有效缓解这一问题,在一定程度上提高了模型的训练效果(Ioffe & Szegedy 2015)。值得注意的是,在某些情况下即使增加了网络深度也会带来负面效果(ResNet-1000与ResNet-101精度相近),例如ResNet-1000相较于ResNet-101拥有更多的层次结构却并未带来显著精度提升。图3展示了我们在不同缩放系数d下对深度网络的研究成果,默认情况下d=8为研究的核心参数设置。

在这里插入图片描述

Width (w) is commonly used in width scaling techniques for small-scale models, as noted by Howard et al. (2017), Sandler et al. (2018), and Tan et al. (2019). As highlighted by Zagoruyko & Komodakis (2016), wider networks are typically capable of capturing more fine-grained features and are relatively easier to train. However, our empirical results from Figure 3 (left) demonstrate that the precision quickly saturates as the width increases when the network becomes extremely wide but shallow.

在处理图像分类任务时,在保持图像质量的前提下(r),通过采用更高分辨率的输入图像(r),可以使Convolutional Neural Networks(ConvNets)能够识别更加细微的特征模式(r)。过去的研究中,默认使用的为基于 r=1.0 (即为标准的 224\times 224 分辨率),而当前主流的研究倾向于采用稍高一点的分辨率值(如r=1.5对应于 560\times 560 )或更大尺寸(如r=1.75对应于 676\times 676 )以提高分类精度(Szegedy et al., 2016;Zoph et al., 2018)。近年来提出的一种新型网络架构——Gpipe(Huang等人, 2018)则实现了基于r=1.33即为 480\times 480 分辨率下的最佳ImageNet分类性能。对于更高的分辨率值(如r=1.67对应于 600\times 600 ),这种技术在目标检测任务中也得到了广泛应用(He et al., 2017;Lin et al., 2017)。图3右侧展示了一组不同缩放比例下的网络性能曲线,在此过程中可以看出随着r值增加到一定程度后(如超过r=3.5),虽然精度有所提升但增益却逐渐趋缓。(注:此处曲线图未展示)

基于上述分析得出以下结论:观察1表明,在增加网络架构在宽度、深度或分辨率方面的任何一个维度时,模型精度均能得到提升;然而,在处理更大规模的网络结构时,这种增益逐渐减弱。

3.3 复合缩放

通过经验观察发现,不同方向上的缩放并非相互独立,它们之间存在相互影响的关系.从直观上看,高分辨率图像通常要求网络具备更强的深度能力,这是因为较大的接收域能够更好地捕捉到更多的像素特征.同样地,当处理高分辨率图像时,网络宽度也需要相应提升,以便在细节层面更好地捕捉更多的像素信息.这些直觉表明,我们需要综合考虑并平衡多方面的缩放因素,而不仅仅是采用单一维度的方式进行处理

在这里插入图片描述

为了检验我们的直觉,在不同设置下的网络架构测试中考察了宽度变化对性能的影响,请参见图4所示的结果。当仅调整网络宽度w而保持深度(d=1.0)与分辨率(r=1.0)不变时,在计算资源有限的情况下可能会导致性能迅速达到极限状态。然而随着深度增加到d=2.0并结合分辨率提升至r=2.0的情况,在保持相同计算预算的前提下可以通过适当调整网络参数获得更好的性能表现。这些实验结果促使我们进行进一步分析:

观察2-在对ConvNet进行缩放时,为了达到更高的性能指标(即精度与效率的双重提升),必须在该过程中优化网络宽度、深度以及分辨率的多个方面

值得注意的是,相关研究者Zoph等人(2018)以及Real等人(2019)已经 attempted to balance the trade-off between network width and depth, but they typically require extensive manual micro-tuning. In contrast, this work presents a novel unified scaling approach by introducing a comprehensive coefficient φ to proportionally adjust the network's width, depth, and resolution:

在这里插入图片描述
在这里插入图片描述

4 EfficientNet架构

在模型缩放过程中,并未影响到其中的操作层集合F_i这使得建立一个性能卓越的基础网络成为必要步骤。为了全面评估所述缩放技术的效果,并构建了一个专为移动应用设计的新基准架构EfficientNet同时为了更充分地论证其优势所在而进行了系统性的实验研究

受到MnasNet(Tan等人,2019)的启发,我们也开发了一种多目标的神经网络结构搜索同时优化精度和FLOPS。具体来说,我们使用与MnasNet相同的搜索空间,并使用ACC(m)×[FLOPS(m)/T]^w作为优化目标,其中ACC(m)FLOPS(m)表示模型m的精度和计算量,T是目标计算量,w=-0.07是用来权衡精度和flops的超参数。不像MnasNet中的优化目标,这里优化的是FLOPS而不是延迟,因为我们没有说是要在特定的硬件平台上做加速。我们的搜索方法产生了一个高效的网络,我们称之为EfficientNet-B0,由于我们使用的搜索空间与MnasNet相似,所以架构也很相似,不过我们的EfficientNet-B0稍微大了点,因为我们的FLOPS预算也比MnasNet中大(400M)。表1显示了EfficientNet-B0的体系结构,主要构造块是移动倒置瓶颈MBConv(Sandler等人,2018;Tan等人,2019),其网络结构如下:

在这里插入图片描述

注意:下图是MnasNet-A1的架构,和EfficientNet类似,但是不一样。

在这里插入图片描述

随后将我们的复合缩放方法整合至该架构中,并分成两个阶段实施。

在这里插入图片描述

值得注意的是,在大型模型中进行精确搜索α,β,γ能够显著提升性能水平。然而,在实际应用中发现这种方法存在较高的计算成本问题。我们提出了一种创新的方法,在基础网络架构中仅执行一次搜索即可有效解决问题(方案一)。对于其余所有模型,则采用了相同的参数配置策略(方案二)。

5 实验

在本节中

5.1 扩展MobileNets和ResNets

最初我们将该缩放方法应用于MobileNets(Howard等, 2017;Sandler等, 2018)以及ResNets(He等, 2016),这些网络架构均在深度学习领域具有重要地位。如表3所示,在ImageNet评估基准上采用了不同缩放策略后,在分类任务上的性能表现得到了明显提升。相较于仅基于单一维度缩减的方法而言,在准确率指标上实现了更大的突破。

在这里插入图片描述

5.2 EfficientNet上的ImageNet结果

我们在ImageNet上进行训练,并采用与MnasNet类似的配置:使用RMSProp优化器(decays at 0.9),动量设置为momentum=0.9;批处理归一化参数设为bn_momentum=0.99;权重衰减值设定为1\times10^{-4};初始学习率定为3\times10^{-1}并按每经过2个半周期衰减率为1 - 1\%;同时结合swish激活函数以及固定增强策略和随机深度(其中drop connect ratio设定为2/3)。值得注意的是,在模型规模增大时需要施加强化正则化手段以防止过拟合现象的发生:因此我们线性递增了dropout比率从EfficientNet-B系列的基础设置值3/7逐步提升至B7版本的中高值5/8

表2列出了基于基准模型EfficientNet-B0进行缩放的所有EfficientNet架构及其性能指标。我们的EfficientNet架构在参数量与FLOPS相比而言低了一个数量级,并且在保持类似精度的前提下显著提升了计算效率。具体而言,在66 million个参数与37 billion次浮点运算(FLOPS)配置下,我们的EfficientNet-B7实现了最高可达84.4%的top-1准确率与97.1%的top-5准确率,在这一配置下较之之前最佳的GPipe架构提升了约9.4倍(基于Huang等人的研究(2018))。

在这里插入图片描述

图1和图5展示了典型convnet的参数精度曲线及其对应的FLOPS精度曲线,在这一研究中,在使用相同计算资源的前提下(即相同的参数数量与FLOPS),我们提出的缩放版EfficientNet-B3在保持同样性能水平的同时显著减少了模型大小。值得注意的是,在保持同样计算效率的前提下(即相同数量的计算资源投入下),我们提出的EfficientNet-B3较ResNeXt-101(Xie等人于2017年提出)在计算资源消耗上节省了约18倍的同时实现了更高的性能水平。

在这里插入图片描述

为了评估计算开销,在真实CPU环境下进行多个典型卷积神经网络(covnet)的推断时延测试(见表4)。实验记录了每轮测试中至少20次的平均时延数据。与广泛采用的ResNet-152相比,在性能上超越约五倍半(He等人, 2016)。而在效率上则进一步超越当前主流框架GPipe约六倍半(Huang等人, 2018)。这些结果表明,在真实硬件环境下, 我们的EfficientNet展现出显著的优势

在这里插入图片描述

5.3 EfficientNet的迁移学习数据集结果

我们还在一系列常用的迁移学习基准数据集上测试了我们的性能,并将结果展示在表6中。我们从(Kornblith et al.,2019)以及(Huang et al.,2018)工作中继承了相同的实验条件,并在此基础上对新的测试用例进行了基于ImageNet的预训练模型构建与微调处理。

在这里插入图片描述

表5详细列出了迁移学习的相关性能数据:相较于现有知名基准模型如NASNet-A(Zoph团队于2018年提出)以及Inception-v4(Szegedy团队于2017年发布),我们的研究工作通过实现参数规模平均缩减4.7倍的同时实现了最高可达21倍的参数减少并保持了较高的精度水平。此外,在测试过程中我们开发出的高效网络架构在经过全面评估后发现其优势依然显著,在多个关键指标上均优于现有方法,并且能在有限的数据集下展现出卓越的表现

在这里插入图片描述

图6展示了不同模型的精度与参数曲线对比分析。总体而言,在仅使用较少参数的情况下,我们的EfficientNet在性能上明显优于现有技术中的多个代表性模型:ResNet(He等人, 2016)、DenseNet(Huang等人, 2017)、Inception(Szegedy等人, 2017)以及NASNet(Zoph等人, 2018)。

在这里插入图片描述

6 讨论

为了区分我们提出的方法在EfficientNet架构中的影响, 图8展示了相同EfficientNet-B0基线网络中不同缩放策略在ImageNet上的表现情况.整体而言, 在提升准确率的同时需要付出更高的计算开销, 但值得注意的是, 而我们的复合型比例因子整合方案在准确率上取得了显著提升(达2.5%), 这一发现凸显了我们所提出的方法的独特价值.

在这里插入图片描述

为了深入探讨我们所提出的复合缩放方法相对于其他现有方法的优势,在图7中进行对比分析展示了采用不同缩放策略所得典型模型的class activation map(Zhou等人在2016年提出)。所有这些模型均基于相同的base线缩放策略构建,并且其统计结果详细列示于表7中。图像均随机选取自ImageNet验证集,并在图中标注展示。该类模型倾向于聚焦于与更多目标细节相关的区域,在此过程中避免遗漏关键细节并全面捕捉图像中的目标元素。

在这里插入图片描述
在这里插入图片描述

7 结论

本文中

8 实现

该库的实现相对简便。具体细节可参考项目GitHub地址:https://github.com/lukemelas/EfficientNet-PyTorch。安装步骤如下:通过以下命令安装库:pip install efficientnet_pytorch。具体操作如下:首先导入EfficientNet类;然后使用from_pretrained方法加载预训练模型。

全部评论 (0)

还没有任何评论哟~