EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

Abstract

卷积神经网络(ConvNets)通常是在固定的资源预算下开发的,如果有更多的资源可用,则会进行扩展以获得更高的精度。在这篇论文中,我们系统地研究了模型缩放,并发现仔细平衡网络的深度、宽度和分辨率可以获得更好的性能。基于这一观察结果,我们提出了一种新的标度方法,使用简单而高效的复合系数来均匀地标度深度/宽度/分辨率的所有维度。我们证明了该方法在扩展MobileNets和ResNet方面的有效性。

为了更进一步,我们使用神经结构搜索来设计一个新的基线网络,并将其扩展以获得一系列被称为EfficientNets的模型,这些模型比以前的ConvNets获得了更好的准确性和效率。特别地,我们的EfficientNet-B7在ImageNet上实现了84.4%的top-1 / 97.1%的top-5精度,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的效率网在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个传输学习数据集上传输良好,并且达到了最先进的精度,参数少了一个数量级。


xyz=(1+ex)2xyw x^{y^z}=(1+{\rm e}^x)^{-2xy^w}

1. Introduction

加大卷积神经网络规模被广泛用于获得更好的精度。例如,ResNet (He et al., 2016)可以通过使用更多的层从ResNet-18扩展到ResNet-200;最近,GPipe (Huang et al., 2018)将基线模型放大4倍,实现了84.3%的ImageNet top-1精度。然而,扩展ConvNets的过程从来没有被很好地理解过,目前有很多方法可以做到这一点。最常见的方法是根据对流的深度(He et al., 2016)或宽度(Zagoruyko & Komodakis, 2016)来放大对流。另一种不太常见但越来越流行的方法是通过图像分辨率来放大模型(Huang et al., 2018)。在以前的工作中,通常只缩放三个维度中的一个——深度、宽度和图像大小。虽然可以任意缩放两个或三个维度,但是任意缩放需要繁琐的手工调整,而且仍然会产生次优的精度和效率

在这篇论文中,我们想要研究和重新思考扩大卷积神经网络的过程。特别地,我们研究了中心问题:是否有一种原则性的方法来扩大卷积神经网络,从而达到更好的准确性和效率?我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,而令人惊讶的是,这种平衡可以通过简单地以恒定的比例缩放每个维度来实现。在此基础上,我们提出了一种简单而有效的复合标度方法。与常规方法中任意缩放这些因子不同,我们的方法使用一组固定的缩放系数来均匀地缩放网络的宽度、深度和分辨率。例如,如果我们想使用 2N2^N 倍的计算资源,然后我们可以简单地增加网络αNα^N倍的深度,βNβ^N倍的宽度,γNγ^N倍的图像大小,α;β;γ是常系数由小网格搜索原始的小模型。图2说明了我们的缩放方法与传统方法的区别
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
直观地说,复合缩放方法是有意义的,因为如果输入图像更大,那么网络需要更多的层来增加接收域,需要更多的通道来捕获更大图像上的更细粒度的模式。事实上,以往的理论(Raghu et al., 2017;Lu等人(2018)和实证结果(Zagoruyko & Komodakis, 2016)都表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率三个维度之间的关系进行实证量化的人。

我们证明了我们的缩放方法在现有的mobilenet和ResNet 上工作良好。值得注意的是,模型缩放的有效性在很大程度上取决于基线网络;更进一步,我们使用神经结构搜索(Zoph & Le, 2017;Tan等人,2019年)开发一个新的基线网络,并将其扩大,以获得一个系列的模型,称为有效网。图1总结了ImageNet的性能,其中我们的efficient net明显优于其他的convnet。特别是,我们的EfficientNet-B7超过了现有的最佳GPipe精度(Huang et al., 2018),但是使用的参数少了8.4倍,推理速度快了6.1倍。与广泛使用的ResNet-50 (He et al., 2016)相比,我们的effecentnet - b4在类似失败的情况下将top-1的准确率从76.3%提高到83.0%(+6.7%)。除了ImageNet,在8个广泛使用的数据集中,5个数据集上,高效网络传输良好,达到了最先进的精度,同时比现有的convnet减少了21倍的参数。
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

2. Related Work

  • ConvNet Accuracy:由于AlexNet (Krizhevsky et al ., 2012)赢得了2012年ImageNet竞争,ConvNets通过增大模型大小变得越来越准确。虽然赢得2014年ImageNet的GoogleNet (Szegedy et al ., 2015)达到74.8%的精度,参数数量约为6.8 M,赢得2017年ImageNet的SENet(胡et al ., 2018)精度达到82.7%,参数约为145M。最近,GPipe (Huang et al., 2018)进一步使用557M个参数,将ImageNet top-1验证精度提升到84.3%:它太大了,只能通过专门的管道并行库进行训练,通过划分网络,将每个部分分散到不同的加速器上。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种传输学习数据集(Kornblith et al., 2019)和其他计算机视觉任务,如对象检测(He et al., 2016;Tan等人,2019年)。虽然更高的精度对于许多应用程序来说是至关重要的,但是我们已经达到了硬件内存的极限,因此进一步的精度提高需要更高的效率

  • ConvNet Efficiency:深度卷积神经网络经常被参数化。模型压缩(Han et al., 2016;He et al., 2018;Yang et al., 2018)是一种通过以精度换取效率来减少模型大小的常见方法。随着手机变得无处不在,手工制作高效的移动尺寸的ConvNets也很常见,如squeezenet (Iandola等,2016;(Gholami et al., 2018), MobileNets (Howard et al., 2017;(Sandler et al., 2018)和ShuffleNets (Zhang et al., 2018;(Ma et al., 2018)。最近,神经结构搜索在设计高效的移动尺寸的ConvNets (Tan et al., 2019;(Cai et al., 2019),并通过广泛调整网络宽度、深度、卷积核类型和大小,实现了比手工制作的移动卷积网络更高的效率。然而,目前还不清楚如何将这些技术应用于更大的模型,这些模型具有更大的设计空间和更昂贵的调优成本。在本文中,我们旨在研究超大型ConvNet的模型效率,该效率超过了最新的准确性。为了实现这个目标,我们采用模型缩放

  • Model Scaling:有多种方法可以针对不同的资源约束来扩展ConvNet:可以通过调整网络深度(#layers)来缩小(例如,ResNet-18)或放大(例如,ResNet-200)ResNet(He等人,2016)。 WideResNet(Zagoruyko和Komodakis,2016)和MobileNets(Howard等,2017)可以通过网络宽度(#channels)进行缩放。 同样公认的是,更大的输入图像尺寸将有助于提高准确性,同时增加更多的FLOPS。 尽管先前的研究(Raghu等人,2017; Lin&Jegelka,2018; Sharir&Shashua,2018; Lu等人,2018)表明网络深度和宽度对于ConvNets的表达能力都很重要,但它仍然是 如何有效扩展ConvNet以获得更好的效率和准确性的未解决问题。 我们的工作针对网络宽度,深度和分辨率的所有三个维度系统地和经验地研究了ConvNet缩放


3. Compound Model Scaling

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


3.1. Problem Formulation

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
H:输入张量的高度
W:输入张量的宽度
C:输入张量的通道数
Yi:Yi=Fi(Xi)Y_i:Y_i =F_i(X_i),输出张量
FiLi:FiiLiF^{L_i}_ i:表示F_i层在阶段i中重复L_i次
N:整个卷积网络由 k 个卷积层组成,通常会将多个结构相同的卷积层称为一个 stage,

与通常专注于寻找最佳层架构Fi的常规ConvNet设计不同,模型缩放会尝试扩展网络长度(LiL_i),宽度(CiC_i)和/或分辨率(Hi,WiH_i,W_i),而不会更改基线网络中预定义的FiF_i
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

3.2. Scaling Dimensions

问题2的主要困难是最优的d、 w、r相互依赖,并且它们的值在不同的资源约束下会发生变化。 由于这个困难,常规方法通常会在以下其中一个维度上扩展ConvNets

  • 深度(d):扩展网络深度是许多ConvNets最常用的方法(He et al., 2016;黄等人,2017;Szegedy等人,2015;2016)。直觉上,更深层次的卷积神经网络可以捕获更丰富、更复杂的特征,并能很好地概括新的任务。然而,由于消失梯度问题,更深层次的网络也更难训练(Zagoruyko & Komodakis, 2016)。虽然一些技术,如skip connections (He et al., 2016)和batch normalization (Ioffe & Szegedy, 2015)缓解了训练问题,但非常深的网络的精度增益降低了。例如,ResNet-1000的精度与ResNet-101相似,尽管它有更多的层。图3(中)显示了我们对不同深度系数d的基线模型进行缩放的实证研究,进一步表明极深卷积神经网络的精度收益递减
    EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

  • 宽度(w):网络宽度缩放通常用于小尺寸模型(Howard et al., 2017;(1 . Sandler et al., 2018;Tan et al., 2019)正如(Zagoruyko & Komodakis, 2016)中所讨论的,更宽的网络往往能够捕捉到更多的细粒度特征,也更容易训练。然而,非常宽但很浅的网络往往很难捕获更高层次的特征。我们在图3(左)中的实证结果表明,当网络的宽度随着w的增大而增大时,精度会迅速饱和

  • 分辨率(r):使用更高分辨率的输入图像,ConvNets可以捕获更多的细粒度模式。从早期的224x224开始,现代的ConvNets倾向于使用299x299 (Szegedy et al., 2016)或331x331 (Zoph et al., 2018)来获得更好的精度。最近,GPipe (Huang et al., 2018)获得了最先进的ImageNet精度,分辨率为480x480。更高的分辨率,如600x600,也被广泛用于目标检测ConvNets (He et al., 2017;Lin et al., 2017)。图3(右)显示了网络分辨率缩放的结果,确实更高的分辨率可以提高精度,但是对于非常高的分辨率,精度增益会降低(r = 1:0表示分辨率224x224, r = 2:5表示分辨率560x560)。

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

  • 观察1 :按比例放大网络宽度、深度或分辨率的任何维度都可以提高精度,但对于较大的模型,精度增益会降低

3.3. Compound Scaling

我们凭经验观察到,不同的比例尺尺寸不是独立的。 直观地,对于更高分辨率的图像,我们应该增加网络深度,以便较大的接收场可以帮助捕获相似的特征,这些特征在较大的图像中包括更多的像素。 相应地,当分辨率更高时,我们还应该增加网络宽度,以便在高分辨率图像中捕获更多像素更多的细粒度图案。 这些直觉表明,我们需要协调和平衡不同的缩放比例,而不是常规的一维缩放比例

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

  • 观察2 :为了追求更好的准确性和效率,在ConvNet缩放过程中平衡网络宽度,深度和分辨率的所有维度至关重要

实际上,一些先前的工作(Zoph等人,2018; Real等人,2019)已经尝试任意平衡网络的宽度和深度,但是它们都需要繁琐的手动调整

在本文中,我们提出了一种新的复合缩放方法,该方法使用复合系数φ原则上对网络宽度,深度和分辨率进行均匀缩放:
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
求解方式

  • 固定公式中的φ=1,然后通过网格搜索(grid search)得出最优的α、β、γ,得出最基本的模型EfficientNet-B0.
  • 固定α、β、γ的值,使用不同的φ,得到EfficientNet-B1, …, EfficientNet-B7

φ的大小对应着消耗资源的大小,相当于

  • 当φ=1时,得出了一个最小的最优基础模型;
  • 增大φ时,相当于对基模型三个维度同时扩展,模型变大,性能也会提升,资源消耗也变大。

对于神经网络搜索,作者使用了和 MnasNet: Platform-awareneural architecture search for mobile 一样的搜索空间和优化目标。


4. EfficientNet Architecture

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

受(Tan等人,2019)的启发,我们通过利用多目标神经架构搜索来开发我们的基准网络,该搜索可同时优化准确性和FLOPS。具体来说,我们使用与(Tan等人,2019)相同的搜索空间,并使用ACCm×[FLOPSm=/T]wACC(m)×[F LOPS(m)=/T] ^w作为优化目标,其中ACC(m)和F LOPS(m )表示模型m的精度和FLOPS,T是目标FLOPS,w = -0.07是用于控制精度和FLOPS之间权衡的超参数。与(Tan等人,2019; Cai等人,2019)不同,这里我们优化FLOPS而不是延迟,因为我们没有针对任何特定的硬件设备。我们的搜索产生了一个有效的网络,我们将其命名为EfficientNet-B0。由于我们使用与(Tan等人,2019)相同的搜索空间,因此架构与Mnas-Net相似,但由于FLOPS目标较大(我们的FLOPS目标为400M),我们的EfficientNet-B0略大。表1显示了EfficientNet B0的体系结构。它的主要组成部分是移动反向瓶颈MBConv(Sandler等人,2018; Tan等人,2019),我们还添加了挤压和激励优化(Hu等人,2018)。
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
从基线EfficientNet-B0开始,我们应用复合缩放方法通过两个步骤对其进行扩展:

  • 步骤1:我们首先将φ= 1固定,假设有两倍以上的可用资源,然后基于等式2和3对α、 β、γ做一个小的网格搜索。特别是,我们发现EfficientNet-B0的最佳值为α= 1.2; β= 1.1, γ= 1:15,在αβ2γ22α·β^2·γ^2≈2的约束下。
  • 步骤2:然后我们固定α, β, γ 为常数,并使用等式3放大具有不同φ的基线网络,以获得EfficientNet-B1至B7(表2中的详细信息)
    EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

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

5. Experiments

在本节中,我们将首先在现有的ConvNet和新提议的EfficientNets上评估缩放方法。

5.1. Scaling Up MobileNets and ResNets

作为概念的证明,我们首先将缩放方法应用于广泛使用的MobileNets(Howard等人,2017; Sandler等人,2018)和ResNet(He等人,2016)。 表3显示了ImageNet以不同方式缩放它们的结果。 与其他一维缩放方法相比,我们的复合缩放方法提高了所有这些模型的准确性,这表明我们提出的缩放方法对于现有的一般ConvNets的有效性
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)


5.2. ImageNet Results for EfficientNet

我们使用与(Tan等人,2019)类似的设置在ImageNet上训练EfficientNet模型:衰减为0.9,动量为0.9的RMSProp优化器; 批次标准动量0.99;权重衰减1e-5; 初始学习率0.256,每2.4个迭代下降0.97。 我们还使用了先进的**(Ramachandran等,2018; Elfwing等,2018),固定的AutoAugment策略(Cubuk等,2019)和随机深度(Huang等,2016),生存概率为0.8。 众所周知,较大的模型需要更正则化,我们将dropout ratio(Srivastava et al。,2014)从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倍(Huang等人,2018)。

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

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
为了验证计算成本,我们还测量了实际CPU上几个代表性CovNet的推理延迟,如表4所示,其中我们报告了20次运行的平均延迟。 我们的EfficientNet-B1的运行速度是广泛使用的ResNet-152的5.7倍(He等,2016),而EfficientNet-B7的运行速度是GPipe的6.1倍(Huang等,2018),**这表明我们的EfficientNets在真正的硬件上确实速度很快 **。
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)


5.3. Transfer Learning Results for EfficientNet

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

表5显示了迁移学习的性能:(1)与NASNet-A(Zoph等人,2018)和Inception-v4(Szegedy等人,2017)等公开模型相比,我们的EfficientNet模型在以下方面达到了更高的准确性 平均减少4.7倍(最高21倍)。 (2)与最先进的模型(包括动态合成训练数据的DAT(Ngiam等人,2018)和经过专门的管道并行性训练的GPipe(Huang等人,2018)相比,我们的EfficientNet模型仍然优于 8个数据集中有5个数据的准确性,但使用的参数减少了9.6倍
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
图6比较了各种模型的精度-参数曲线。总的来说,我们的效率网在参数比现有模型少一个数量级的情况下,始终能够获得更好的精度,包括ResNet (He et al., 2016)、DenseNet (Huang et al., 2017)、Inception (Szegedy et al., 2017)和NASNet (Zoph et al., 2018)。
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

6. Discussion

为了将我们提出的缩放方法从效率网架构中分离出来,图8比较了同一EfficientNet-B0 基线网络中不同缩放方法的ImageNet性能。一般来说,所有的尺度变换方法都可以在增加失败次数的情况下提高精度,但是我们的复合尺度变换方法可以进一步提高精度,比其他单维度尺度变换方法提高2.5%,这说明了我们提出的复合尺度变换方法的重要性
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)
为了进一步了解为什么我们的复合缩放方法比其他方法更好,图7比较了几个具有代表性的模型的类**图(Zhou et al., 2016)。所有这些模型都是从相同的基线进行缩放的,它们的统计数据如表7所示。从ImageNet验证集中随机选取图像。如图所示,复合缩放模型更倾向于关注具有更多对象细节的相关区域,而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019)

7. Conclusion

在这篇论文中,我们系统地研究了卷积网络的缩放,并发现仔细平衡网络的宽度、深度和分辨率是一个很重要但又缺失的部分,这阻碍了我们获得更好的精度和效率。为了解决这个问题,我们提出了一个简单而高效的复合缩放方法它使我们能够更有原则地将基线卷积网络缩放到任何目标资源约束,同时保持模型的效率。通过这种复合缩放方法,我们证明了一个移动尺寸的有效网络模型可以非常有效地进行缩放,在ImageNet和5个常用的传输学习数据集上,以一个数量级更少的参数和更少的错误来超越最先进的精度。


想更好的理解可参考文章:
令人拍案叫绝的EfficientNet和EfficientDet