效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

谷歌开源的新的图像识别模型 EfficientNet,将图像识别效率提升 10 倍,且参数减少 88%。在工作中有图像识别的业务,因此学习这篇论文,并在实际工作场景中进行使用。

卷积神经网络(ConvNets)的设计通常受到有限资源的约束。如果有更多资源可用,则可以将模型放大,以获得更高准确性。 本文系统地研究了模型缩放,并验证了有效的平衡网络的深度,宽度和分辨率这三个要素,可以带来更好的性能。 基于此观察,本文提出了一种新的模型缩放方法,该方法使用简单而有效的复合系数来均匀缩放深度/宽度/分辨率的所有维度。 我们MobileNets和ResNet上证实了这种缩放方法的有效性。

更进一步,我们使用神经网络结构搜索来设计一个新的baseline网络,并将baseline网络进行扩展,以获得称为EfficientNets的模型族,该模型族在准确性和效率上都碾压了以前的卷积网络。 特别是,EfficientNet-B7在ImageNet上达到了stat-of-the-art的84.4%top-1 / 97.1%top-5精度,同时模型尺寸比现有的最佳卷积网络小8.4倍,推理速度快6.1倍。 EfficientNets还可以很好地迁移,在CIFAR-100(91.7%),Flowers(98.8%)和其它3个用于迁移学习数据集上都达到stat-of-the-art的准确率,而参数要少几个数量级。

一、1. Introduction

放大卷积网络被广泛使用以获得更高的准确率。比如,ResNet可通过使用更多的层从ResNet-18放大到ResNet-200。最近,GPipe通过将一个baseline网络放大四倍在ImageNet上获得了84.3%的准确率。但是,对ConvNets进行扩展的过程从未被很好地理解,目前有很多方法可以做到这一点,最常用的是放大其深度和宽度。另外一种不太常用,但是正逐渐变得更受欢迎的方法是增大输入图像的分辨率。在以前的工作中,通常仅缩放三个维度之一(深度,宽度和图像大小)。 尽管可以任意缩放两个或三个维度,但是任意缩放需要繁琐的手动调整,并且仍然经常导致次优的准确率和效率。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

本文旨在研究和重新思考放大网络这一过程。特别是,我们调查了一个中心问题:是否存在一种原则上的方法来扩展卷积网络,以实现更高的准确性和效率?我们的经验研究表明,平衡网络宽度/深度/分辨率至关重要,而令人惊讶的是,可以通过简单地以恒定比率缩放每个维度来实现这种平衡。基于此观察,我们提出了一种简单而有效的复合缩放方法。 与传统方法任意缩放这些因子不同,我们的方法使用一组固定的缩放系数来均匀缩放网络宽度,深度和分辨率。例如,如果我们想使用2^N倍的计算资源,则可以简单地将网络深度增加α^N,将宽度增加β^N,将图像大小增加γ^N,其中α,β,γ是通过在小模型上网格搜索确定的常数系数。 图2说明了我们的缩放方法与常规方法之间的区别。

直观地讲,复合缩放方法很有意义,因为如果输入图像更大,则网络需要更多的层来增加感受野,并需要更多的通道来在更大图像上捕获更细粒度的模型。 实际上,先前的理论和经验结果都表明网络宽度和深度之间存在一定的关系,但据我们所知,对网络宽度,深度和分辨率这三个维度之间的关系进行经验量化的工作本文当属首次。

我们证明了我们的缩放方法可以在现有的MobileNets和ResNet上很好地工作。 值得注意的是,模型扩展的有效性在很大程度上取决于baseline网络。 为了更进一步,我们使用神经体系结构搜索来开发新的baseline网络,并将其扩大以获得称为EfficientNets模型族。图1总结了在ImageNet上模型的性能,其中我们的EfficientNets明显优于其他ConvNets。具体来说,我们的EfficientNet-B7超越了现有的最佳GPipe的准确率,但使用的参数减少了8.4倍,推理速度提高了6.1倍。 与广泛使用的ResNet-50相比,我们的EfficientNet-B4使用同等量级的FLOPS,top-1准确性从76.3%提高到83.0%(+ 6.7%)。 除ImageNet之外,EfficientNets还可以在另外8个广泛使用的数据集中的5个数据集上都达到state-of-the-art的准确率,同时将参数减少为现有ConvNets的21倍。


效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

二、Related Word

ConvNet Accuracy: 自AlexNet赢得ImageNet2012竞赛以来,卷积网络随着准确率的提升也变得越来越大:2014年赢得ImageNet竞赛的GoogleNet top-1的准确率为74.8%,参数量约6.8M。2017年ImageNet的获胜者top-1准确率达到82.7%,参数量为145M。2018年GPipe进一步将top-1准确率推进到84.3%,使用了557M的参数,模型大到只能将模型切分成多个part,每个part传递到一个加速器,使用特定的库进行训练。尽管这些模型主要是针对ImageNet设计的,但是最近有研究表明,在ImageNet上表现越好的模型,迁移到其它数据集以及其他计算机视觉任务(如物体检测)性能也更好。尽管对于许多应用来说,准确率是至关重要的,但是早已达到硬件内存的极限,更进一步的提升准确率需要更高的模型效率。

ConvNet Efficiency: 深度卷积网络一般都是过参数化的。模型压缩是通过牺牲精度来提高效率来减小模型大小的一种常用方法。随着移动手机的普及,手动设计高效的模型尺寸可用于移动端的ConvNet也愈加受欢迎,例如SqueezeNets,MobileNets和ShuffleNets。最近,神经体系结构搜索在设计有效的适用于移动端的ConvNets中变得越来越流行,并且通过广泛地调整网络的宽度,深度,卷积核的类型和大小,其效率比手工设计的的移动端ConvNet还要好。但是,尚不清楚如何将这些技术应用于设计空间更大且调整成本更高的大型模型。 在本文中,我们旨在研究超大型准确率达到state-of-the-art水平的ConvNet的模型效率。 为了实现此目标,我们使用了模型缩放。

Model Scaling: 有许多方法在不同的资源约束下放缩卷积网络:ResNet可以通过调整网络深度进行放大或缩小,WideResNet和MobileNet能缩放模型的宽度。更大的图像可以提升准确率也是广为人知的,同时需要更高的FLOPs。尽管先前的研究表明,网络深度和宽度对于ConvNets的表达能力都很重要,但是如何有效地扩展ConvNet以获得更高的效率和准确性仍然是一个悬而未决的问题。 我们的工作针对网络宽度,深度和分辨率的三个维度系统地和经验地研究了ConvNet缩放。

三、Compound Model Scaling

3.1. Problem Formulation

一个卷积层i可以定义为一个函数:Yi = Fi(Xi),Fi是一个operator,Yi是输出tensor,Xi是输入tensor,形状为,Hi,Wi是空间维度,Ci是通道维度。卷积网络N可以用一系列复合的层表示:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

实际中的卷积网络通常会划分成多个stage,每个stage内的层都共享相同的结构:比如ResNet有5个stage,除第一层执行下采样外,每个阶段中的所有层都具有相同的卷积类型。 因此,我们可以将ConvNet定义为:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

Fi,Li代表在第i个stage层Fi重复了Li次。图2(a)代表了一个代表性的ConvNet,其中空间尺寸逐渐缩小,但通道数量在各层上扩展,例如,从初始输入形状<224、224、3>到最终输出形状<7、7、512>。

与通常专注于寻找最佳层架构Fi的常规ConvNet设计不同,模型缩放尝试在不更改基准网络中预定义的Fi的情况下扩展网络深度(Li),宽度(Ci)和/或分辨率(Hi,Wi)。 通过固定Fi,模型缩放简化了新资源约束的设计问题,但仍然有很大的设计空间来为每一层探索的不同Li,Ci,Hi和Wi。 为了进一步减少设计空间,我们限制所有层必须以恒定比率均匀缩放。 我们的目标是在任何给定的资源约束条件下最大化模型精度,这可以表述为一个优化问题:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

其中w,d和r是用于缩放网络宽度,深度和分辨率的系数。

3.2. Scaling Dimensions

问题2的主要困难在于,最佳d,w,r相互依赖,并且值在不同的资源约束下会发生变化。 由于这一困难,常规方法通常选择这些维度之来扩展ConvNets。

Depth (d):扩大深度是许多卷积网络最常用的方法。直觉是越深的卷积网络能捕获更丰富、复杂的特征,在新任务上泛化能力更好。然而,由于梯度消失问题,深度卷积网络也更难以训练。尽管一些技术,如skip-connection、batch normalization(BN)等能减缓这种情况,但是非常深的网络的精度增益会降低:比如,ResNet-1000与ResNet-101准确率差不多,尽管前者深的多。图3(中)显示了我们对缩放具有不同深度系数d的基线模型进行的经验研究,进一步表明非常深的ConvNets的准确率收益递减。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

Width (d): 放大网络宽度也是在小模型上常用的手段。更宽的网络往往能够捕获更细粒度的功能,并且更易于训练。 但是,非常宽而浅的网络在捕获更高级别的特征时往往会遇到困难。 我们在图3(左)中的经验结果表明,当网络随着w的增加而变得更宽时,准确率迅速饱和。

Resolution(r):使用更高分辨率的输入图像,ConvNets可以捕获更细粒度的模式。从早期的224X224的卷积网络开始,当代的卷积网络更倾向于使用299X299或331X331以追求更高的精度。达到state-of-the-art的GPipe更是使用了480X480的分辨率。更高的分辨率,如600X600,在目标检测的卷积网络中也被广泛使用。图3(右)显示了缩放网络分辨率的结果,其中更高的分辨率的确提高了精度,但是对于非常高的分辨率(r = 1.0表示分辨率224x224,r = 2.5表示分辨率560x560),精度增益会降低。

以上分析使我们得出了第一个观察结果:

Observation 1 – 扩大网络宽度,深度或分辨率的任何尺寸都可以提高精度,但是随着模型的增大,精度增益会降低。

3.3. Compound Scaling

直观地,对于更高分辨率的图像,我们应该增加网络深度,因为更大的感受野包含更多像素点,可以帮助捕获相似的特特征。 相应地,当分辨率更高时,我们还应该增加网络宽度,以便在高分辨率图像中捕获更多包含更多像素点的细粒度模式。 这些直觉表明,我们需要协调和平衡不同的缩放维度,而不是常规的单维度缩放。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放比例,如图4所示。如果仅缩放网络宽度w而未更改深度(d = 1.0)和分辨率(r = 1.0),则精度会很快达到饱和。 使用更深的(d = 2.0)和更高的分辨率(r = 2.0),在相同的FLOPS成本下,宽度缩放可实现更好的精度。 这些结果使我们得出第二个观察结果:

Observation 2 – 为了追求更好的准确性和效率,在ConvNet扩展过程中平衡网络宽度,深度和分辨率的所有维度至关重要。

实际上,一些先前的工作已经尝试任意平衡网络的宽度和深度,但是它们都需要繁琐的手动调整。在本文中,我们提出了一种新的复合缩放方法,该方法使用复合系数φ原则上对网络宽度,深度和分辨率进行均匀缩放:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

α,β,γ是可以通过小的网格搜索确定的常数。 直观地,φ是用户指定的系数,它控制着更多的资源可用于模型缩放,而α,β,γ指定如何分别将这些额外的资源分配给网络宽度,深度和分辨率。常规卷积运算的FLOPs与d, w的平方,r的平方成正比,比如,网络深度加倍,FLOPs也加倍,宽度或分辨率加倍会使FLOPs增加四倍。由于卷积运算通常在ConvNet中占主导地位,因此用等式3缩放ConvNet将使总FLOPS大约增加:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

本文对α,β,γ做如下约束:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

四、EfficientNet Architectur

由于模型缩放不会改变基线网络中的层算子,因此拥有一个良好的基线网络也至关重要。 我们将使用现有的ConvNets评估缩放方法,但是为了更好地展示缩放方法的有效性,我们还开发了一种新的可用于移动应用的基线,称为EfficientNet。

我们利用多目标神经架构搜索来开发我们的基准网络,该搜索可同时优化准确性和FLOPS。具体而言,搜索目标为:

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

ACC(m) 和 FLOPS(m)代表模型m的准确率和FLOPs,T是目标FLOPs,w=-0.07是用来权衡精度和FLOPS的超参数。这里我们优化FLOPS而不是时延,因为我们没有针对任何特定的硬件设备。 我们的搜索产生了一个有效的网络,我们将其命名为EfficientNet-B0。 由于我们使用与(Tan等人,2019)相同的搜索空间,因此架构与MnasNet相似,但由于FLOPS目标较大(我们的FLOPS目标为400M),我们的EfficientNet-B0略大。表1显示了EfficientNet-B0的体系结构。 它的主要组成部分是MBConv(Sandler等人,2018; Tan等人,2019),我们还添加了squeeze-and-excitatio优化(Hu等人,2018)。

从基线EfficientNet-B0开始,我们应用复合缩放方法通过两个步骤对其进行扩展:

步骤1:我们首先将φ= 1固定,假设有更多可用资源,并根据等式2和3对α,β,γ进行小型网格搜索。具体而言,我们发现在α·β^2·γ^2≈2的约束下,EfficientNet-B0的最佳值为α= 1.2,β= 1.1,γ= 1.15。

步骤2:然后将α,β,γ固定为常数,并使用公式3放大具有不同φ的基线网络,以获得EfficientNet-B1至B7(表2中的详细信息)。

值得注意的是,通过直接在大型模型上搜索α,β,γ,可以获得更好的性能,但是在大型模型上,搜索成本变得非常昂贵。 我们的方法通过在小型基准网络上仅进行一次搜索(步骤1),然后对所有其他模型使用相同的缩放系数(步骤2)来解决此问题。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

五、Experiment

5.1. Scaling Up MobileNets and ResNet

作为概念证明,我们首先将缩放方法应用于广泛使用的MobileNets和ResNet。 表3显示了在ImageNet数据集上以不同方式缩放它们的结果。 与其他一维缩放方法相比,我们的复合缩放方法提高了所有这些模型的准确性,这表明我们提出的缩放方法对于一般现有ConvNets的有效性。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

5.2. ImageNet Results for EfficientNet

在ImageNet上训练EfficientNet的设置情况为:优化器:RMSProp, decay=0.9 ,momentum=0.9;batch norm momentum=0.99;weight decay=1e-5;初始学习率为0.256,每2.4个epoch后衰减0.97。同时使用了swish 激活函数,固定的增强技术,随机深度(drop connect ratio 为0.2),同时因为越大的模型需要更强的正则化,所以线性地增加dropout从EfficientNet-B0的0.2到EfficientNet-B7的0.5;

表2显示了从同一基准EfficientNet-B0扩展来的所有EfficientNet模型的性能。 我们的EfficientNet模型通常使用的参数和FLOPS比其他具有相似精度的ConvNet少几个数量级。 特别是,我们的EfficientNet-B7通过66M参数和37B FLOPS达到84.4%top1 / 97.1%top-5精度,比以前的最佳GPipe精度更高,但要小8.4倍。

图1和图5展示了具有代表性ConvNet的参数精度和FLOPS精度曲线,其中我们缩放后的EfficientNet模型使用比其他ConvNet少得多的参数和FLOPS来实现更高的精度。 值得注意的是,我们的EfficientNet模型不仅很小,而且计算便宜。 例如,我们的EfficientNet-B3使用的FLOPS比ResNeXt101减少了18倍,但是精度更高。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

为了验证计算成本,我们还测量了实际CPU上几个代表性CovNet的推理时延,如表4所示,其中我们报告了20次运行的平均时延。 我们的EfficientNet-B1的运行速度比广泛使用的ResNet-152快5.7倍,而EfficientNet-B7的运行速度比GPipe快6.1倍,这表明我们的EfficientNets在真实的硬件上确实非常快。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

5.3. Transfer Learning Results for EfficientNet

我们还在一系列常用的迁移学习数据集上评估了EfficientNet,如表6所示。我们借鉴了(Kornblith等,2019)和(Huang等,2018)的相同训练设置,它们采用ImageNet 预训练的检查点,并对新数据集进行微调。

表5展示了迁移学习的性能:(1)与NASNet-A和Inception-v4等公开可用的模型相比,我们的EfficientNet模型以4.7倍的平均(最多21倍)参数减少实现了更高的准确性。 (2)与最先进的模型(包括动态合成训练数据的DAT和经过专门的管道并行性训练的GPipe)相比,我们的EfficientNet模型在8个数据集中的5个数据集中仍然超过了其准确性,但使用的参数却少了9.6倍。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

图6比较了各种模型的精度参数曲线。 通常,与包括ResNet,DenseNet,Inception和NASNet的现有模型相比,我们的EfficientNets始终能够以较少的数量级参数来获得更高的准确性。

效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet

六、Discussion

为了区分我们提出的缩放方法与EfficientNet体系结构的贡献,图8比较了相同EfficientNet B0基准网络的不同缩放方法的在ImageNet的性能。 一般而言,所有缩放方法都会以更高的FLOPS成本提高准确性,但是我们的复合缩放方法可以与其他一维缩放方法相比,它进一步提高了高达2.5%的精度,这表明我们提出的复合缩放的重要性。

为了进一步理解为什么我们的复合缩放方法比其他方法更好,图7比较了几种具有不同缩放方法的代表性模型的类激活图。 所有这些模型都是从同一基线缩放的,其统计信息如表7所示。图像是从ImageNet验证集中随机选取的。 如图所示,具有复合缩放比例的模型倾向于集中在具有更多对象细节的更相关区域上,而其他模型则缺少对象细节或无法捕获图像中的所有对象。


效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet


效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet


效率提升10倍,参数减少 88%的牛逼图像识别模型:EfficientNet


分享到:


相關文章: