【论文笔记】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

【论文链接】:https://arxiv.org/abs/1905.11946

【论文代码】:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet(官方tensorflow版本)https://github.com/lukemelas/EfficientNet-PyTorch(第三方pytorch版本)

【个人笔记】:

本文贡献:
  • 系统地研究了模型缩放,提出了一种新的缩放方法,并证明了该方法在缩放MobileNet和ResNet等多个ConvNets方面的有效性;
  • 使用神经架构搜索(NAS)设计了一个新的基线网络,用论文中提出的缩放方法对其缩放,获得一系列称为EfficientNets的模型,实验证明这些模型比之前的ConvNets获得了更好的准确性和效率。
知识点链接:
  • grid search 网格搜索
  • receptive field 感受野
  • fine-grained 细粒度
  • MobileNet
  • MnasNet
  • ⨀ 表示Hadamard product(哈达马积),对于两个维度相同的向量、矩阵、张量进行对应位置的逐元素乘积运算。(ps:在这篇论文的公式里不知道是不是这个意思= =。。)

Abstract

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

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

一、Introduction

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

在这篇论文中,我们想要研究和重新思考缩放卷积神经网络的过程。特别地,我们研究了中心问题:是否有一种条理化的方法可以实现更高的精度和效率? 我们的实证研究表明,平衡网络的宽度、深度、分辨率等维度是至关重要的,而令人惊讶的是,这种平衡可以通过简单地以恒定的比例缩放每个维度来实现。在此基础上,我们提出了一种简单而有效的复合缩放方法。与传统的任意缩放这些因子的方法不同,我们的方法使用一组固定的缩放系数来均匀地缩放网络的宽度、深度和分辨率。例如,如果我们想使用2N倍的计算资源,然后我们可以简单地增加网络的深度αN,宽度βN,和图像大小γN,α,β,γ是常系数,由原来小模型的小网格搜索决定。图2说明了我们的缩放方法和传统方法的区别。

图2。模型缩放。(a)是基线网络的例子;(b)-(d)是以传统方法增加网络宽度、深度或分辨率之一维度的例子。(e)是我们提出的以固定比例均匀缩放所有三维的复合缩放方法。

直观上看,复合缩放方法是有意义的,因为如果输入图像更大,那么网络需要更多的层来增加receptive field(感受野),需要更多的通道来捕捉更大图像上的更fine-grained(细粒度)的图案。事实上,之前的理论和实证结果都表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率三个维度之间的关系进行实证量化的人。

我们证明我们的缩放方法在现有的MobileNets和ResNet上运行良好。值得注意的是,模型缩放的有效性在很大程度上取决于基线网络; 为了更进一步,我们使用神经网络搜索来开发一个新的基线网络,并将其缩放以获得一系列的模型,称为EfficientNets。图1总结了模型在ImageNet数据集上的性能,其中我们的EfficientNets明显优于其他convnet。特别地,我们的EfficientNets-b7超越了现有的最佳GPipe精度,但是少用了8.4倍的参数,并且在推断时运行速度快了6.1倍。与广泛使用的ResNet-50相比,我们的EfficientNets-b4将top-1类的准确率从76.3%提高到了83.0%(+6.7%)。除了ImageNet数据集,EfficientNets在8个广泛使用的数据集的5个中,迁移学习表现地很好且达到最先进的精度,同时比现存的ConvNets减少了21倍的参数。


图1所示。模型大小 vs 在ImageNet数据集上的准确度。所有的数字都是针对单一作物、单一模式的。我们的效率明显优于其他的ConvNets。特别值得一提的是,EfficientNets-b7在top-1类别上实现了84.4%的最高精度,但比GPipe小了8.4倍,快了6.1倍。EfficientNet-B1比ResNet-152小7.6倍,快5.7倍。详情见表2和表4

二、2. Related Work

ConvNet准确率:自从AlexNet赢得2012年ImageNet大赛以来,随着ConvNets变得越来越大,准确率越来越高:2014年ImageNet冠军GoogleNet以约680万参数获得74.8%的最高准确率,2017年ImageNet冠军SENet以1.45亿参数获得82.7%的顶级精度。最近,GPipe进一步使用5.57亿参数将ImageNet的top-1类准确率提升到84.3%:它是如此之大,以至于只能通过专门的管道并行库对网络进行训练,通过划分网络,将每个部分扩展到不同的加速器。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种迁移学习数据集和其他计算机视觉任务(如对象检测)中也有更好的表现。虽然更高的精度对于许多应用程序来说是至关重要的,但是我们已经达到了硬件内存的极限,因此进一步提高精度需要更高的效率。

ConvNet效率:ConvNets通常是超参数化的。模型压缩是一种常见的减少模型大小的方法,它以精度换取效率。随着手机变得无处不在,手工制作高效的移动大小的ConvNets也很常见,例如SqueezeNets、MobileNets和ShuffleNets。近年来,神经网络结构搜索在设计高效的移动级卷积神经网络中越来越受欢迎,通过广泛调整网络的宽度、深度、卷积核的类型和大小,实现了比手工制作的移动级卷积神经网络更高的效率。然而,目前还不清楚如何将这些技术应用于设计空间更大、调优成本更高的大型模型。在本文中,我们的目标是研究超大型ConvNets的模型效率,以超越目前最先进的精度。为了实现这个目标,我们采用模型缩放。

模型缩放:对于不同的资源约束,有许多方法可以缩放ConvNet: ResNet可以通过调整网络深度(层)来伸缩,而WideResNet和mobilenet可以通过网络宽度(通道)来伸缩。人们也认识到,更大尺寸的输入图像通过更多的浮点运算次数(FLOPS)来提升准确性。虽然之前的研究已经表明网络的深度和宽度对ConvNets的表达能力都很重要,但如何有效地缩放ConvNet以获得更好的效率和准确性仍然是一个有待解决的问题。我们的工作系统地和经验地研究了在网络宽度、深度和分辨率三个维度上的ConvNet缩放。

三、Compound Model Scaling 复合模型缩放

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

1、Problem Formulation 问题公式化

一个卷积网络层i可以被定义为一个函数:Yi = Fi(Xi),这里Fi是一个算子(卷积操作),Yi是输出张量,Xi是输入张量,张量大小为⟨Hi, Wi, Ci⟩,Hi和Wi是空间维度,Ci是通道维度。一个卷积神经网络N能够被一系列复合层表示:

在实践中,卷积网络层通常被划分为多个阶段,每个阶段的所有层共享相同的架构:例如,ResNet有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一个层执行向下采样。因此我们可以定义一个卷积网络为:
这里FiLi表示在阶段i中Fi层Li次重复,⟨Hi, Wi, Ci⟩表示i层输入张量X的形状。图2(a)是一个具有代表性的ConvNet,这里的空间维度逐渐收缩,但通道维度扩大,例如,原始的输入形状⟨224, 224, 3⟩变成了输出形状⟨7, 7, 512⟩。

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

其中,w,d,r为放缩变换网络的宽度、深度和分辨率的系数;Fi、Li、Hi、Wi、Ci是在基线网络中预定义的参数(见表1为例)。
表1。EfficientNet-B0基线网络——每一行描述一个阶段i中的Li层,输入分辨率和输出通道Ci。符号采用公式2。

2、Scaling Dimensions 缩放维度

问题2的主要难点在于,最优的d、w、r相互依赖,且在不同的资源约束条件下值会发生变化。由于这一困难,传统的方法大多在以下几个维度中卷积神经网络:

深度(d):许多ConvNets最常用的方式是缩放网络深度。直观的感觉是,更深层次的卷积神经网络可以捕捉更丰富、更复杂的特征,并在新任务上很好地推广。然而,更深层次的网络也因为消失梯度问题而更加难以训练。虽然一些技术,如跳过连接skip connection和batch normalization,可以缓解训练问题,但非常深的网络的精度增益会降低:例如,ResNet-1000具有与ResNet-101类似的精度,尽管它有更多的层。图3(中间)显示了我们对不同深度系数d的基线模型进行缩放的实证研究,进一步表明卷积神经网络的精度收益递减。较大的网络,其宽度、深度或分辨率越大,其精度越高,但精度增益在达到80%后迅速饱和,说明了单维缩放的局限性。基线网络如表1所示。

图3。扩展具有不同网络宽度(w)、深度(d)和分辨率(r)系数的基线模型。

宽度(w):网络宽度缩放通常用于小尺寸模型。正如(Zagoruyko & Komodakis, 2016)中所讨论的,更宽的网络往往能够捕捉更详细的特征,更容易训练。然而,非常宽但很浅的网络往往很难捕捉到更高层次的特征。我们在图3(左)中的实证结果表明,当网络随着w的增大而变得更宽时,准确度很快就会饱和。

分辨率(r): 使用更高分辨率的输入图像,ConvNets可以捕获更加详细的图案。在早期的ConvNets中,从224x224开始,现代的ConvNets倾向于使用299x299或331x331来获得更好的精度。最近,GPipe以480x480分辨率在ImageNet数据集上达到了最好的精度。更高的分辨率,如600x600,也被广泛用于对象检测ConvNets。图3(右)显示了网络分辨率缩放的结果,确实更高的分辨率可以提高精度,但是对于非常高的分辨率,精度增益会减小(r = 1.0表示分辨率224x224, r = 2.5表示分辨率560x560)。

上述分析使我们得出第一个观察结果:
观察1 -缩放网络的宽度、深度或分辨率这三者中的任何维度都可以提高精度,但对于较大的模型,精度增益会降低。

3、Compound Scaling 复合缩放

我们从经验上观察到,不同维度的缩放不是相互独立的。直观地说,对于高分辨率的图像,我们应该增加网络深度,这样更大的receptive field(感受野)可以帮助捕捉包含更大图像中更多像素的相似特征。相应地,我们也应该在分辨率较高时增加网络宽度,以便在高分辨率图像中以更多的像素捕获更多的细粒度(fine-grained)图案。

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

图4。为不同的基线网络调整网络宽度。线中每个点表示一个宽度系数不同的模型(w),所有基线网络如表1所示。第一个基线网络(d=1.0, r=1.0)有18个卷积层,分辨率为224x224,而最后一个基线(d=2.0, r=1.3)有36个卷积层,分辨率为299x299
观察2 -为了追求更高的精度和效率,在ConvNet缩放期间平衡网络宽度、深度和分辨率的所有维度是至关重要的。

事实上,之前的一些工作已经尝试过任意平衡网络的宽度和深度,但是它们都需要繁琐的手工调优。

在本文中,我们在条理化解决方法下,提出一个新的复合缩放方法,使用一个复合系数去均匀的缩放网络宽度、深度和分辨率:

s.t.表示subject to 受限于。
α,β,γ是常量,可以由一个小的网格搜索得到。直观地,是指定系数,控制有多少更多的资源用于模型扩展,而α,β,γ指定如何将这些额外的资源分别分配给网络宽度、深度和分辨率。值得注意的是,普通的卷积运算的操作的FLOPS成本与d, w^2, r^2等等是成比例的,翻倍的神经网络深度会使FLOPS成本也翻倍,翻倍神经网络的宽度或分辨率,将增加FLOPS的四倍。因为卷积神经网络通常决定了卷积神经网络的计算成本,以公式3缩放一个卷积神经网络将大约增加总计的FLOPS(每秒浮点运算次数)。在这篇文章中,我们限制,以至于任何新的,合集FLOPS大约增加。

四、EfficientNet Architecture

由于模型缩放不更改在基线网络中的图层的算子(卷积操作)Fi,所以有一个好的基线网络很重要。我们将使用现有的ConvNets来评估我们的缩放方法,但是为了更好地展示我们的缩放方法的有效性,我们还开发了一个新的移动级的基线网络,称为EfficientNet-B0。

受到本论文作者在cvpr2019另一篇论文的启发,开发了基线网络EfficientNet-B0,通过影响多目标神经结构搜索,优化准确性和FLOPS。具体来说,使用了与作者在2019发的那一篇论文相同的搜索空间,并使用作为优化目标,ACC(m)和FLOPS(m)表示模型m的精度和FLOPS,T是目标FLOPS,且w=-0.07,是控制准确度和FLOPS之间权衡的超参数。这里我们优化的是FLOPS而不是延迟,因为我们没有针对任何特定的硬件设备。我们的搜索产生了一个高效的网络,我们将其命名为EfficientNet-b0。由于我们使用与MnasNet相同的搜索空间(Tan et al.,2019),所以架构类似于MnasNet,只不过由于我们更大的FLOPS目标(我们的FLOPS目标是400M),所以我们的EfficientNet稍大一些。表1给出了EfficientNet-b0的架构。它的主要构成要素是移动bottleneck—— MBConv(mobilenet里面提出的倒瓶颈块),在此基础上我们还增加了squeeze-and-excitation(SE ratio)优化(看另一篇论文)。

从基线EfficientNet-b0开始,我们使用我们的复合缩放方法,通过两个步骤来进行缩放:

  • 步骤1:我们首先固定,假设两个更多的可用资源,并基于方程2和3对α,β,γ做一个网格搜索。特别地,在约束条件下,我们找到EfficientNet-B0最佳值α = 1.2,β = 1.1,γ = 1.15。
  • 步骤2:然后我们固定α,β,γ为常量,并在方程3中以不同的扩大基线网络,获得EfficientNet-B1到B7(细节在表2)。
    表2。在ImageNet数据集上的性能结果。所有EfficientNet模型由EfficientNet-B0缩放而来,在方程3中使用了不同的复合系数φ。将具有类似top-1/top-5精度的ConvNets分组进行效率比较。与现有的ConvNets相比,我们的缩放EfficientNet模型将参数和FLOPS减少了一个数量级(高达8.4倍的参数减少和高达16倍的FLOPS减少)。(每个与EfficientNet在一个行中对比的模型,是与这个EfficientNet比具有类似精度的卷积神经网络,且EfficientNet比他少一个数量级的参数和FLOPS)

值得注意的是,也有可能在一个更大的模型中(与EfficientNets对比)直接搜索α,β,γ获得更好的性能,但搜索成本变得更高。我们的方法通过在小型基线网络上只做一次搜索(步骤1)来解决这个问题,然后对所有其他模型使用相同的比例系数(步骤2)。

五、Experiments

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

1、Scaling Up MobileNets and ResNets

作为概念验证,我们首先将我们的缩放方法应用于广泛使用的MobileNets和ResNet。表3显示了以不同方式缩放时,模型在ImageNet数据集上的实验结果。与其他单一维度缩放方法相比,我们的复合缩放方法提高了所有这些模型的精度,说明我们提出的方法对于一般已有卷积神经网络的有效性。
Table3. Scaling Up MobileNets and ResNet

2、ImageNet Results for EfficientNet

我们在ImageNet数据集上训练我们的EfficientNet模型,使用的设置:RMSProp 优化器使用decay为0.9 且momentum为0.9;batch norm momentum为0.99;weight decay为1e-5;initial learning rate为0.256 ,且每2.4个epoch衰减0.97。我们也使用swish激活(Ramachandran et al.,2018;Elfwing et al., 2018),固定自动增广策略(Cubuk et al.,2019),随机深度(Huang et al.,2016),survival概率为0.8。众所周知,更大的模型需要更多的正则化,我们线性地增加dropout ratio,从0.2(对于EfficientNet-B0)到0.5(对于EfficientNet-B7)。

表2显示了从相同基线EfficientNet-b0扩展的所有EfficientNet模型的性能。我们的EfficientNet模型通常使用比其他具有类似精度的卷积神经网络少一个数量级的参数和FLOPS。其中,我们的EfficientNet-b7在66M参数、37B FLOPS条件下,在top1类获得了97.1%的精度,在top5类达到了84.4%的精度,且比之前最好的GPipe小了8.4倍(参数数量小)。

图1和图5展示了具有代表性的ConvNets的参数-精确性和FLOPS-accuracy曲线,其中我们的缩放EfficientNet模型在参数和FLOPS都比其他ConvNets少得多的情况下获得了更好的准确性。值得注意的是,我们的有效网络模型不仅小,而且计算成本更低。例如,我们的EfficientNet-B3比ResNeXt-101使用少了18倍的FLOPS,但达到更高的精度。
Figure 5. FLOPS vs. ImageNet Accuracy – Similar to Figure 1 except it compares FLOPS rather than model size.

为了验证计算成本,我们还测量了实际CPU上几个有代表性covnet的推断延迟,如表4所示,其中我们报告了20次运行的平均延迟。我们的EfficientNet-B1运行速度比广泛使用的ResNet-152快5.7倍(He et al.,2016),而EfficientNet-B7运行速度比GPipe (Huang et al.,2018)快6.1倍,这表明我们的EfficientNet在实际硬件上确实是快的。
表4。推断延迟比较——延迟是在Intel Xeon CPU E5-2690的单核上以批处理大小1进行测量的。

3、Transfer Learning Results for EfficientNet

我们还在一个常用的迁移学习数据集列表上评估了我们的EfficientNet,如表6所示。
Table6. Transfer Learning Datasets.

我们从(Kornblith et al.,2019)和(Huang et al.,2018)借鉴了相同的训练设置,在ImageNet预先训练检查点,然后在新数据集上微调。

表5显示了迁移学习性能:(1)与NASNet-A (Zoph et al.,2018)和incep-v4 (Szegedy et al.,2017)等公开可用模型相比,我们的EfficientNet模型实现了更好的精度,参数平均缩减率了4.7倍(最高达到21倍)。(2)与动态合成训练数据的DAT(Ngiam et al.,2018)和使用专门的管道并行性训练的GPipe (Huang et al., 2018)等最先进的模型相比,我们的EfficientNet模型在8个数据集中有5个数据集的精度超过了它们,但是使用的参数却平均少了9.6倍。
Table 5. EfficientNet Performance Results on Transfer Learning Datasets. Our scaled EfficientNet models achieve new state-of-the-

图6比较了各种模型的精度-参数曲线。总的来说,我们的EfficientNet在参数上比现有模型少一个数量级的情况下始终能够达到更好的精度,包括ResNet (He et al.,2016)、DenseNet (Huang et al.,2017)、Inception (Szegedy et al.,2017)和NASNet (Zoph et al.,2018)。
Figure 6. Model Parameters vs. Transfer Learning Accuracy – All models are pretrained on ImageNet and finetuned on new datasets.

六、6. Discussion

为了将我们提出的缩放方法从EfficientNet架构中分离出来,图8比较了同一EfficientNet-b0基线网络中不同缩放方法在ImageNet数据集上的性能。一般来说,所有的缩放方法都可以在FLOPS计算成本更高的情况下提高精度,但是我们的复合缩放方法可以进一步提高精度,比其他单维缩放方法提高2.5%,这说明了我们提出的复合缩放方法的重要性。

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

七、Conclusion

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

你可能感兴趣的:(【论文笔记】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks)