EfficientNet : Google Brain提出仅需1/8参数的图像分类SOTA | ICML 2019

Google Brain新作,论文提出用于模型缩放的混合缩放方法,能够更优地选择宽度,深度和分辨率的维度缩放比例,从而使得模型能够达到更高的精度(~2%)。论文进一步通过神经架构搜索提出EfficientNet,配合混合缩放方法,能够得到轻量而准确率高的模型,论文理论和实践都十分值得学习

来源:晓飞的算法工程笔记 公众号

论文: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Introduction


  目前,卷积神经网络的性能优化主要有3个维度:1) 增加网络的宽度 2) 增加网络的深度 3) 增加输入图片的分辨率,目前很容易通过修改一个维度来直接提升网络的准确率,但是同时修改网络的两个甚至三个维度则需要繁琐的人工调参,而且很难达到最优

  论文核心研究是否存在一条准则来指导卷积网络的性能优化,而结论是网络的宽度/深度/分辨率是有平衡关系的,而且存在一个常量的比例。基于以上的发现,论文提出简单有效的混合缩放方法(compound scaling method),通过一系列的固定缩放因子,均匀地缩放网络的宽度,深度和分辨率,图2展示了各维度缩放以及混合缩放方法的示意图
  此外,由于网络的性能和效率十分依赖于基础网络,论文使用神经结构搜索来获取新的基础网络,再进行相应的缩放来获取一系列模型,论文称之为EfficientNets

  如图1所示,EfficientNet在准确率、速度和参数量上都有很大的提升,其中EfficientNet-B7在ImageNet上达到了SOTA,而对于其它参数量少的版本,其性能也是很不错的

Compound Model Scaling


Problem Formulation

  卷积网络层i可以定义为函数Y_i=\mathcal{F}_i(X_i)\mathcal{F}为算子,X_i为输入,维度为\langle H_i,W_i,C_i\rangle,一个卷积网络\mathcal{N}可以定义为连续的操作\mathcal{N}=\mathcal{F}_k\odot ...\odot \mathcal{F}_2\odot \mathcal{F}_1(X_1)=\odot_{j=1...k}\mathcal{F}(X_1)

  实际卷积网络可以分为不同的阶段(stage),每个阶段除了第一层进行池化外,都具有相同的层结构,如图2a。因此可以进一步转化为公式1,\mathcal{F}^{L_i}为层\mathcal{F}_i在statei重复叠加L_i
  和卷积网络设计的核心在于找到最好的层结构\mathcal{F}_i,而模型缩放的核心则在于不修改结构\mathcal{F}_i的前提下,扩展网络的深度L_i,宽度C_i和分辨率(H_i,W_i)

  由于各层各维度的修改可以各种各样,论文进一步缩小设计空间,每层各维度必须通过常量的比例进行均匀地缩放,如公式2所示,其中w,d,r为网络深度,宽度和分辨率的缩放因子

Scaling Dimensions

  • Depth(d)

  缩放网络的深度是卷积网络中最常见的方式,一般更深的网络能够提取更丰富、更复杂的特征,从而能够在新任务中有更好的表现。而更深的网络由于梯度弥散问题,通常会更难训练,尽管已经有很多优化的技巧,如skip connections和batch normalization,但过深的网络的收益依然很低,比如ResNet-1000和ResNet-101的精度几乎一样,图3中间展示了不同深度缩放尺度下的准确率

  • Width(w)

  对于小型网络,缩放网络的宽度是很常见的优化方式,更宽的网络能够提取更细粒度也更容易训练。但过宽而不够深的网络很难提取高维度的特征,如图3左所示,在网络过宽后,准确率收益快速下降

  • Resolution (r)

  使用更大的输入图片分辨率,卷积神经网络能够提取更多细粒度的特征,如图3右所示,基础的分辨率为224x224,更大的分辨率的确能够带来更高的准确率,但同样过高的分辨率同样会有准确率收益过低的问题

Observation 1 - 不管通过缩放网络的宽度,深度或分辨率来提高模型的准确率,但模型越大的准确率的收益会越低

Compound Scaling

  从上面的研究可以认为,不同维度的缩放是非独立的,因此需要协调和平衡各维度的缩放操作。为了验证这一猜测,进行了图4实验,在不同的深度和分辨率下验证宽度缩放的性能。如果单一增加宽度(d=1.0,r=1.0),准确率很快就饱和了,而深度更深和分辨率更高则能在相同计算量下达到更高的精度

Observation 2 - 为了追求更高的准确率和性能,在缩放卷积网络的时候平衡网络的所有维度(宽度,深度和分辨率)是至关重要的

  论文提出混合缩放方法(compound scaling method),\phi为混合因子,是用户定义的因子,用来均匀地进一步缩放网络的宽度,深度和分辨率,\alpha,\beta,\gamma是小型网格搜索得到的常量,分别控制深度,宽度和分辨率的基础缩放比例。一般卷积神经网络各维度缩放的计算量(FLOPS)增加的比例为d,w^2,r^2,即缩放d倍深度会增加d倍计算量,而缩放w倍宽度或r倍分辨率则分别增加w^2r^2倍计算量。因此,公式3会带来(\alpha*\beta^2*\gamma^2)^\phi倍的计算量增加。论文限制\alpha*\beta^2* \gamma^2\approx2,这样对于每个\phi,都是大约增加2^\phi的计算量

EfficientNet Architecture


  对于网络缩放的效果,基础网络架构也是很重要的,为了更好地展现混合缩放方法的性能,论文提出了一个mobile-size的基础模型EfficientNet
  EfficientNet是利用MnasNet的多目标神经结构搜索(Tan et al., 2019)进行构建,该搜索方法同时优化准确率和FLOPS,以ACC(m)\times [FLOPS(m)/T]^w为优化目标,m为模型,T为目标计算量(FLOPS),w=0.07为控制准确率和计算量的超参数

  搜索得到网络为EfficientNet-B0,结构如Table 1所示。由于使用相同的搜索方法,该结构与MnasNet类似,区别在于EfficientNet-B0的计算量大点,因为优化时目标计算量设计得较大。EfficientNet-B0的核心是mobile inverted bottleneck MBConv(MobileNet v2),添加了squeeze-and-excitation(SeNet)进行优化
  以EfficientNet-B0作为开始,混合缩放方法包含两个步骤:

  • STEP 1:首先固定\phi=1,基于公式2和公式3对\alpha,\beta,\gamma进行网格搜索。具体地,EfficientNet-B0的搜索结果为\alpha=1.2,\beta=1.1,\gamma=1.15,基于约束\alpha\cdot \beta^2\cdot \gamma^2\approx2
  • STEP 2:然后固定\alpha,\beta,\gamma作为常数,根据公式3使用不同的\phi来对基础网络进行放大,得到EfficientNet-B1至EfficientNet-B7

  需要注意的是,这里可以通过直接将\alpha,\beta,\gamma加入搜索来获取更好的性能,但是在稍微大点的模型上进行这样的搜索的花费是十分巨大的,而论文提出的方法则能变相地解决这个问题

Experiment


Scaling Up MobileNets and ResNets

  与其它单维度缩放的算法对比,在MobileNets和ResNets上,混合缩放方法能够获得更好的性能

ImageNet Results for EfficientNet

  EfficientNet的训练与(Tan et al., 2019)一致,另外加入了swish激活函数和生存概率为0.8的随机深度(stochastic depth),另外越大的网络需要更多的正则化,因此dropout的比例会根据网络大小进行调整,EfficientNet-B0为0.2,EfficientNet-B7则增加到0.5

  Table 2展示了EfficientNet-B0缩放的所有版本的性能表现,通常EfficientNet能够在较少的计算量的情况下比其它卷积神经网络获得更高的准确率,特别是EfficientNet-B7在达到精度超过GPipe的情况下减少了8.4倍的参数量

  之前的图1和图5展示了参数-准确率和计算量-准确率的曲线图,EfficientNet模型都能在相对少的消耗的情况下达到最好的精度,特别仅使用1/18的计算量就可以媲美ResNext-101

  为了验证计算消耗,论文在实际CPU上计算了推理的延迟,结果证明EfficientNet的确更快

Transfer Learning Results for EfficientNet

  论文也在一系列的迁移学习数据集上进行测试,具体数据集如Table 6

  Table 5展示了迁移学习的结果:

  • 与公开模型(public-avaliable models)对比,EfficientNet能达到很好的精度,并且能平均仅需4.7x(最多21x)的参数
  • 与SOTA模型对比,EfficientNet能够在其中5个数据集中获胜,而且平均仅需9.6x的参数

  图6对比了不同模型在不同数据集上的准确率-参数量曲线图,EfficientNet一般都能仅使用少量的参数而达到更好的精度,由于目前的大多数算法

Discussion


  论文也对其它的缩放方法进行了对比,其它方法能够通过增大计算量来提升精度,但混合缩放方法能够进一步地提升模型精度

  图7展示了Table 7的模型的类别活跃区域,可以看到,混合缩放方法能够更专注于物体细节的相关区域,而其它方法则存在物体细节缺失的情况

CONCLUSION


  论文对模型缩放进行深入研究,提出混合缩放方法,该方法更优地选择宽度,深度和分辨率的维度缩放比例,从而使得模型能够达到更高的精度。另外,论文通过当下火热的神经架构搜索提出EfficientNet,配合混合缩放方法,能够在使用很少量的参数下,在达到较高的准确率,论文的理论和实践部分都十分值得学习

参考内容



写作不易,未经允许不得转载~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.