EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks-ICML 2019 模型缩放的最新工作

最近,谷歌基于AutoML开发了EfficientNets,这是一种新的模型缩放方法。它在ImageNet测试中实现了84.1%的准确率,再次刷新了纪录。

虽然准确率只比之前最好的Gpipe提高了0.1%,但是模型更小更快,参数的数量和FLOPS都大大减少,效率提升了10倍

程序:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet.

论文:https://arxiv.org/abs/1905.11946?context=stat.ML

Abstract

卷积神经网络(Convnets)通常是在固定的资源预算下开发的,如果有更多的资源可用,那么卷积神经网络就可以扩展以获得更好的精度。在本文中,我们系统地研究了模型缩放(model scaling),并发现仔细平衡网络深度、宽度和分辨率可以获得更好的性能。基于这一观察,我们提出了一种新的缩放方法,该方法使用一个简单但高效的复合系数统一缩放深度/宽度/分辨率的所有尺寸。我们证明了该方法在扩展mobilenet和resnet方面的有效性。

更进一步,我们使用神经架构搜索(neural architecture search)来设计一个新的baseline网络,并将其放大以获得一系列的模型,称为EfficientNets,这比以前的ConvNets获得了更好的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上达到了最优的84.4%的Top-1精度,97.1%的Top-5精度,同时比现有的最佳ConvNet小8.4倍,推理速度快6.1倍。我们的高效网络还可以在CIFAR-100(91.7%)、Flower(98.8%)和其他3个迁移学习数据集上迁移良好并达到最优的精度,参数数量更少。

1.Introduction

为了获得更好的精度,ConvNet扩展被广泛使用。例如,Resnet(He et al.,2016)可以通过使用更多的层从Resnet-18扩展到Resnet-200;最近,GPIPE(Huang et al.,2018)通过将baseline模型放大四倍在Imagenet 数据集达到了84.3%的Top-1精度。然而,扩展ConvNets的过程从来没有被很好地分析过,目前有许多方法可以做到这一点。最常见的方法是按其深度(He等人,2016年)或宽度(Zagoruyko和Komodakis,2016年)扩大convnets。另一种不太常见但越来越流行的方法是通过扩大图像分辨率扩大模型(Huang等人,2018年)。在以前的工作中,通常只缩放三个维度中的一个—深度、宽度和图像大小。虽然可以任意缩放二维或三维,但任意缩放需要冗长的手动调整,而且通常会产生次优的精度和效率。

                              

本文对ConvNets的扩展过程进行了研究和反思。特别的,我们研究的核心问题是:是否有一个理论性的方法来扩展convnets,以实现更好的准确性和效率?我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单地用恒定比率缩放每个维度来实现。在此基础上,提出了一种简单而有效的复合缩放法。与传统的任意缩放这些因子的做法不同,我们的方法使用一组固定的缩放系数统一缩放网络宽度、深度和分辨率。例如,如果我们想使用2^N倍以上的计算资源,那么我们可以简单地将网络深度增加\alpha^N,宽度增加\beta^N,图像大小增加\gamma ^N,其中\alpha\beta\gamma是由原始小模型上的小网格搜索确定的常数系数。图2说明了我们的缩放方法和传统方法之间的区别。

从直观上讲,复合缩放方法是有意义的,因为如果输入图像更大,那么网络需要更多的层来增加感受野(the receptive field),需要更多的通道来捕获更大图像上更细粒度的图案。事实上,以往的理论(Raghu等人,2017年;Lu等人,2018年)和经验结果(Zagoruyko和Komodakis,2016年)都表明,网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率三个维度之间的关系进行实证量化的人。

我们证明,提出的缩放方法在现有Mobilenets(Howard等人,2017年;Sandler等人,2018年)和Resnet(He等人,2016年)上工作良好。值得注意的是,模型扩展的有效性在很大程度上取决于baseline网络;为了更进一步,我们使用神经架构搜索(Zoph&le,2017;Tan等人,2019)来开发一个新的基线网络,并将其扩展以获得一系列模型,称为EfficientNets。图1总结了ImageNet的性能,其中EfficientNet的效率明显优于其他ConvNet。尤其是,EfficientNet-B7超过了现有的最佳gpipe精度(Huang等人,2018年),但使用的参数少了8.4倍,推理速度快了6.1倍。与广泛使用的Resnet-50(He等人,2016年)相比,我们的EfficientNet-B4通过类似的触发器将Top-1的精确度从76.3%提高到82.6%(+6.3%)。除了ImageNet之外,EfficientNets还可以在8个广泛使用的数据集中的5个数据集上进行良好的迁移,并达到最先进的精度,同时将参数减少到现有ConvNets的21倍。

2.Related work

ConvNet Accuracy:自从Alexnet(Krizhevsky et al.,2012)赢得2012年Imagenet竞赛以来,Convnets变得越来越精确:2014年Imagenet冠军Googlenet(Szegedy et al.,2015)以大概6.8M的参数获得74.8%的Top-1精度,而2017年ImageNet冠军Senet(Hu et al.,2012)al.,2018)在145M参数下达到82.7%的Top-1精度。最近,GPIPE(Huang et al.,2018)使用557M参数进一步将最先进的ImageNet Top-1验证精度提高到84.3%:它太大了,只能通过对网络进行分区并将每个部分扩展到不同的ACC,使用专门的管道并行库对其进行培训。电机。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种转移学习数据集(Kornbrith等人,2019年)和其他计算机视觉任务(例如,对象检测)中也表现得更好(He等人,2016年;Tan等人,2019年)。虽然更高的精度对许多应用程序至关重要,但我们已经达到了硬件内存限制,因此进一步提高精度需要更好的效率。

ConvNet Efficient:深度卷积神经网络往往是超参数的。模型压缩(Han等人,2016年;He等人,2018年;Yang等人,2018年)是一种通过牺牲准确性来降低模型规模以提高效率的常用方法。随着移动电话变得无处不在,手工制作高效的用于移动设备的convnet也很常见,如挤压网(Iandola等人,2016年;Gholami等人,2018年)、Mobilenets(Howard等人,2017年;Sandler等人,2018年)和Shuffleets(Zhang等人,2018年;Ma等人,2018年)。最近,神经架构搜索在设计高效的移动尺寸的convnet中越来越流行(Tan等人,2019;Cai等人,2019),并且比通过广泛调整网络的宽度、深度、卷积核的类型和大小实现的手工网络的效率更高。然而,仍然不清楚如何将这些技术应用于设计空间更大、调优成本更高的大型模型。本文旨在研究超大ConvNets的模型效率。为了实现这一目标,我们采用模型缩放。

Model Scaling:有许多方法可以根据不同的资源限制来扩展ConvNet:通过调整网络深度(层),Resnet(He等人,2016)可以被缩小(例如,Resnet-18)或增大(例如,Resnet-200),而WideResnet(Zagoryko和Komodakis,2016)和Mobilenets(Howard等人,2017)可以被缩小通过网络宽度(通道)。较大的输入图像大小将有助于精度提升,同时也带来更多的浮点计算,这是清楚的。尽管之前的研究(Raghu等人,2017年;Lin&Jegelka,2018年;Sharr&Shashua,2018年;Lu等人,2018年)表明,网络深度和宽度对ConvNet的性能表现都很重要,但如何有效地扩展ConvNet以获得更好的效率和精度仍然是一个开放的问题。在本文中。我们的工作系统地和经验性地研究了网络宽度、深度和分辨率三个维度的ConvNet缩放。

3.Compound Model Scaling

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

3.1Problem Formulation

一个卷积网络的层i可以被描述为函数Y_i=F_i(X_i),这儿,X_i是是尺寸为<H_i,W_i,C_i>的输入张量,Y_i是输出张量,这儿,H_iW_i是空间维度上的尺寸,C_i是通道维度的尺寸。一个卷积网络N可以表示为N=F_k \odot ... \odot F_2 \odot F_1(X_1)=\odot_{j=1...k} F_j(X_j)。实际上,ConvNet层通常分为多个阶段,每个阶段的所有层都具有相同的体系结构:例如,ResNet(he et al.,2016)有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行向下采样。因此,我们可以将ConvNet定义为:

                         

这儿,F^{L_i}_{i}表示层F_i在阶段i被重复L_i次,<H_i,W_i,C_i>表示第i阶段输入张量的尺寸。图2(a)显示了一个具有代表性的ConvNet,其中空间尺寸逐渐缩小,但通道尺寸在各层上逐渐展开,例如,从初始输入形状[224;224;3]扩展到最终输出形状[7;7;512]。

不像规则的ConvNet设计,集中于发现最好的层结构F_i,模型缩放在不改变基于baseline网络的F_i的情况下,尝试扩展网络长度L_i,宽度C_i或分辨率(H_iW_i)。通过固定F_i,针对显得资源限制,模型缩放简化了设计问题,但是在探索如何利用L_iC_iH_iW_i方面仍然有很大的设计空间。为了进一步缩小设计空间,我们限制了所有层必须以恒定比例均匀缩放。我们的目标是最大限度地提高任何给定资源约束的模型精度,这可以被表述为一个优化问题:

                                  

这儿,wdr分别是是缩放宽度,深度和分辨率的系数;{\hat F_i}{\hat L_i}{\hat H_i}{\hat W_i}{\hat C_i}被预定义在baseline网络上(如Tabel1所示)。

3.2Scaling Dimensions

问题2的主要困难在于,在不同的资源约束条件下,最优wdr相互依赖,且值发生变化。由于这一困难,传统的方法大多是在这些维度中的一个上进行缩放:

Depth (d):缩放网络深度是许多ConvNet最常用的方法(He等人,2016;Huang等人,2017;Szegedy等人,2015;2016)。直觉是,更深的convnet可以捕获更丰富、更复杂的特性,并在新任务上很好地概括。然而,由于梯度消失问题,更深层的网络也更难训练(Zagoruyko和Komodakis,2016年)。尽管有几种技术,如skip connections(He等人,2016年)和batch normalization(IOffe&Szegedy,2015年),缓解了训练问题,但非常深的网络的精度增益会减少:例如,resnet-1000的精度与resnet-101相似,尽管它有更多的层。图3(中间)显示了我们对使用不同深度系数d缩放基线模型的实证研究,进一步表明非常深的ConvNets的精度回报降低。

Width (w):缩放网络宽度通常用于小尺寸模型(Howard等人,2017年;Sandler等人,2018年;Tan等人., 2019)。如(Zagoruyko&Komodakis,2016)中所述,更宽的网络往往能够捕获更细粒度的特性,并且更容易训练。然而,极宽但较浅的网络往往难以捕获更高级别的特征。我们在图3(左)中的经验结果表明,当网络变得更宽(大的w),精度更快饱和。

Resolution (r):使用更高分辨率的输入图像,ConvNets可以潜在地捕获更多的细粒度模式。从早期ConvNets的224x224开始,现代ConvNets倾向于使用299x299(szegedy等人,2016)或331x331(zoph等人,2018)以获得更好的精度。最近,GPipe(Huang等人,2018)以480x480分辨率实现了最优的ImageNet精度。更高的分辨率,如600x600,也广泛应用于目标检测的ConvNet(He等人,2017年;Lin等人,2017年)(事实上,800*800,1024*1024也广泛地使用)。图3(右图)显示了缩放网络分辨率的结果,其中较高的分辨率确实提高了精度,但对于非常高的分辨率,精度增益会减小(r=1.0表示分辨率224x224,r=2.5表示分辨率560x560)。

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

Observation 1:增大网络宽度、深度或分辨率的任何维度都会提高精度,但对于较大的模型,精度增益会减小。

3.3Compound Scaling

我们从经验上观察到不同的缩放维度并非独立的。直观地说,对于高分辨率的图像,我们应该增加网络深度,这样较大的感受野可以在较大的图像中帮助捕获包含更多像素的特征。相应地,我们也应该在分辨率较高时增加网络宽度,以便在高分辨率图像中捕获更多像素的细粒度特征。这些直觉表明,我们需要协调和平衡不同的维度,而不是传统的一维。

            

为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放,如图4所示。如果只缩放网络宽度w而不改变深度(d=1.0)和分辨率(r=1.0),则精度很快达到饱和。随着更深的(d=2.0)和更高的分辨率(r=2.0),在相同的计算成本下,宽度缩放可以获得更好的精度。这些结果将我们引向第二个观察:

Observation 2:为了追求更好的精度和效率,在convnet缩放期间平衡网络宽度、深度和分辨率的所有维度至关重要。

事实上,之前的一些工作(Zoph等人,2018年;Real等人,2019年)已经试图任意平衡网络宽度和深度,但它们都需要冗长的(tedious)手动调整。

在本文中,我们提出了一种新的复合缩放方法,它使用复合系数\phi以理论性的方式均匀缩放网络的宽度、深度和分辨率:

            

其中\alpha\beta\gamma是可以通过小网格搜索(small grid search)确定的常数。直观地说,\phi是一个用户指定的系数,它控制着有多少资源可用于模型缩放,而\alpha\beta\gamma则分别指定如何将这些额外的资源分配给网络宽度、深度和分辨率。值得注意的是,常规卷积运算的FLOPs与dw^2r^2成比例,即加倍网络深度将使FLOPs加倍,但加倍网络宽度或分辨率将使FLOPs增加四倍。由于卷积运算通常在ConvNet中占主导地位,用公式3缩放ConvNet将使总的浮点运算增加(\alpha \times \beta^2 \times \gamma^2)^\phi。在本文中,我们约束\alpha \times \beta^2 \times \gamma^2 \approx 2,使得对于任何一个新的φ,总的Flops都将大约增加2^{\phi}

4.EfficientNet Architecture

因为模型缩放不会改变基线网络中的层操作F_i,所以拥有一个好的baseline网络也是至关重要的。我们将使用现有的convnet评估我们的缩放方法,但是为了更好地证明我们的缩放方法的有效性,我们还开发了一个新的小的baseline网络,称为EfficientNet。

根据(Tan等人,2019年)的启发,我们通过发展一个多目标的神经结构搜索来发展我们的基线网络,以优化精度和FLOPs。具体地说,我们使用相同的搜索空间(Tan等人,2019年),并使用ACC(m) \times {[FLOPS(m)/T]^w}作为优化目标,其中ACC(m)FLOPS(m)表示了模型m的精度和FLOPs,T是目标的FLOPs和w=0.07是控制精度和FLOPs之间折中的超参数。不像(Tan et al., 2019;Cai et al., 2019),在这里,在此,我们将优化FLOPs而不是延迟,因为我们没有针对任何特定的硬件设备。我们的搜索产生了一个高效率的网络,我们称之为EfficientNet-B0。因为我们使用相同的搜索空间(Tan等人,2019年)以来,除了我们的EfficientNet-B0外,这一结构与MnasNet相似,除此之外,EfficientNet-B0也有点大,因为目标FLOPS大。Table 1 展示了EfficientNet-B0的结构.其主要结构是mobile inverted bottleneck MBConv(Sandler等人,2018年;Tan等人,2019年),我们还添加了Squeeze-and-Exception优化(Hu等人,2018年)。

从baseline:EfficientNet-B0开始,我们应用我们的复合缩放方法,用两步的步伐来缩放它:

  • STEP1:我们首先固定\phi=1,假设可用资源变为两倍,然后基于公式(2)(3)做small grid search搜索,然后我们发现,对EfficientNet-B0网络最优值是\alpha=1.2\beta=1.1\gamma=1.15
  • STEP2:然后我们固定\alpha\beta\gamma作为常数,通过使用不同的\phi放大baseline网络,得到EfficientNet-B1到B7。

值得注意的是,通过直接在大型模型上搜索\alpha\beta\gamma,可以获得更好的性能,但是在大型模型上搜索成本会变得非常高。我们的方法解决了这个问题,只在小baseline网络上搜索一次(步骤1),然后对所有其他模型使用相同的比例系数(步骤2)。

                                              

                                       

5.Experiments

在本节中,我们将首先对现有的ConvNets和新提出的EfficientNets的缩放方法进行评估。

5.1Scaling Up MobileNets and ResNets

作为概念的证明,我们首先将我们的缩放方法应用于广泛使用的MobileNet (Howard等,2017;Sandler et al., 2018)和ResNet (He et al., 2016)。表3显示了以不同方式缩放它们的ImageNet结果。与其他单维度缩放方法相比,我们的复合缩放方法提高了所有这些模型的精度,这表明我们所提出的标度方法对于一般现有的convnets是有效的。


5.2ImageNet Results for EfficientNet

表2显示了从同一EfficientNet-B0缩放的所有EfficientNet模型的性能。我们的EfficientNet模型通常比其他具有类似精度的ConvNet使用更少数量级的参数和FLops。特别是,我们的EfficientNet-B7在66M参数和37BFLOPs的情况下,达到84.4%的TOP1/97.1%的top-5精度,更准确,但比之前的最佳GPIPE小8.4倍(Huang等人,2018年)。

为了验证计算成本,我们还在CPU上测量了几个具有代表性的covnet的推理时间,如表4所示,其中我们报告了超过20次运行的平均延迟。我们的EfficientNet-B1比广泛使用的resnet-152快5.7倍(He等人,2016年),而EfficientNet-B7比GPIPE快6.1倍(Huang等人,2018年),这表明我们的EfficientNet在实际硬件上确实很快。


5.3Transfer Learning Results for EfficientNet

我们还根据常用的迁移学习数据集列表评估了我们的EfficientNet网络,如表6所示。我们从(Kornbrith et al.,2019)和(Huang et al.,2018)中借用了相同的训练设置,这些设置采用Imagenet预训练文件,并针对新数据集进行微调。

表5显示了迁移学习的表现:(1)与NASNet-A(Zoph等人,2018)和Inception-v4(Szegedy等人,2017)等公共可用模型相比,我们的EfficientNet模型以平均4.7x(最多达21倍)的参数减少实现了更好的精度。(2)与最先进的模型相比,包括动态合成训练数据的DAT(Ngiam等人,2018年)和接受specialized pipeline parallelism训练的GPipe(Huang等人,2018年),我们的EfficientNet模型在8个数据集中的5个数据集中仍然超过其精度,但使用了9.6x少的参数。

图6比较了各种模型的精度参数曲线。总的来说,我们的EfficientNet始终比现有模型(包括Resnet(He et al.,2016)、Densenet(Huang et al.,2017)、Initiation(Szegedy et al.,2017)和Nasnet(Zoph et al.,2018)以较少数量级的参数实现更好的准确性。

           
6.Discussion

为了从EfficientNet体系结构中分离出我们所提出的缩放方法的贡献,图8比较了相同EfficientNet-b0基线网络中不同缩放方法的Imagenet性能。总的来说,所有的缩放方法都能以更多的FLOPs来提高精度,但是与其他一维缩放方法相比,我们的复合缩放方法可以进一步提高精度,高达2.5%,这表明我们提出的复合缩放方法的重要性。

为了进一步理解为什么我们的复合缩放方法比其他方法更好,图7比较了几种具有代表性的模型的类激活图(Zhou et al., 2016)。所有这些模型都是从相同的baseline进行缩放的,它们的统计数据如表7所示。从ImageNet验证集中随机抽取图像。如图所示,复合缩放模型更倾向于关注具有更多对象细节的相关区域,而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象。


7.Conclusion

在本文中,我们系统地研究了ConvNet缩放,并发现仔细平衡网络的宽度、深度和分辨率是一个重要但仍然缺少的部分,这阻碍了我们获得更好的精度和效率。为了解决这个问题,我们提出了一个简单而高效的复合缩放方法,它使我们能够更有原则地将基线ConvNet缩放到任何目标资源约束,同时保持模型的效率。利用这种复合缩放方法,在ImageNet和五个常用的迁移学习数据集上我们证明一个mobile-size的EfficientNet模型可以非常有效地扩展,以更少的参数和更少的计算量来实现最先进的精度。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值