EfficientNet

论文
参考博客
代码地址1
代码地址2

摘要

  卷积神经网络是在固定的资源预算下开发的,如果有更多的资源可用,可以相应地得到更高的准确率。在本文中,我们系统地研究模型压缩并确认小心地平衡网络深度、宽度和分辨率能够带来更好的效果。通过这一观察,我们提出了一种新的缩放方法:使用简单高效的复合系数统一缩放所有的维度,包括深度、宽度以及分辨率。我们证明这种方法在压缩MobileNets和ResNets网络是有效的。
  为了更进一步,我们使用神经架构搜索来设计新的基础结构,进行缩放以获得一系列模型,称为EffientNets,它比以前的ConvNets具有更高的准确性和效率。特别地,我们的EfficientNet-B7在ImageNet上实现了最先进的84.4%top-1 / 97.1%top-5精度,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的EfficientNets在CIFAR-100(91.7%),Flowers(98.8%)和其他3个传输学习数据集上也能很好地传输和实现最先进的精度,参数的数量级减少了一个数量级。

1.简介

  缩放ConvNets被广泛地用来实现更高的准确率。比如,ResNet可以通过使用更多的层从18缩放到200,GPipe通过将基础结构缩放为原来的四倍实现了在ImageNet数据集top-1 84.3%的准确率。然而,网络缩放的方式不能被理解,并且没有一个确切的缩放方式。最常见的方式是网络深度或宽度的缩放。另一个比较常见的,但是最近很流行的方法是通过图片分辨率的缩放来缩放网络。在之前的工作中,缩放宽度、深度和分辨率的某一项是十分常见的。尽管可以任意缩放二维或三维,但任意缩放需要繁琐的手动调整,并且仍然经常产生次优的精度和效率。
  在这篇文章中,我们试图去研究和重新思考ConvNets的缩放过程。我们提出了一个核心问题:是不是存在一种原则性的缩放网络的方法来实现更高的准确率和效率?我们的实验研究表明,平衡网络宽度、深度和分辨率的所有维度是至关重要的,并且令人惊讶的是,通过简单地用恒定比率来缩放他们,可以实现这种平衡。基于这一观察,我们提出了验证简单而有效的复合缩放方法。与任意缩放这些因子的传统实践不同,我们的方法使用一组固定的缩放系数统一地缩放网络宽度、深度和分辨率。通过这一观察,我们提出了一种简单但是有效的复合缩放方法。与任意缩放这些因子的传统方法不同,我们的方法使用一组固定的缩放系数统一地缩放网络宽度,深度和分辨率。比如,我们想要使用$2^N$来扩展网络,我们能够简单地使用$\alpha ^N$增加网络深度,$\beta ^N$增加网络深度,图片的尺寸使用$\gamma ^N$,其中α,β,γ是通过原始小模型上的小网格搜索确定的常系数。图2展示了我们的模型和其它模型的区别。

  直观地讲,复合缩放方法是十分有意义的,因为输入的图片越大,网络就需要更多的层去扩大感受野,以及更多的通道去在更大的图片上去捕获更加细粒度的特征。我们证明了我们的缩放方法在现有的MobileNets和ResNet上运行良好。值得注意的是,模型扩展的有效性在很大程度上取决于基础网络;为了更进一步,我们使用神经架构搜索开发新的基础网络,并将其扩展以获得一系列模型,称为EfficientNets。图1总结了ImageNet性能,其中我们的EfficientNets明显优于其他ConvNets。特别是,我们的EfficientNet-B7超越了现有的最佳GPipe精度,但使用的参数减少了8.4倍,推理速度提高了6.1倍。与广泛使用的ResNet-50相比,我们的EfficientNet-B4使用类似的FLOPS将top-1精度从76.3%提高到82.6%(+6.3%)。

2.相关工作

ConvNet Accuracy: 自AlexNet赢得2012年ImageNet竞赛以来,ConvNets通过扩大规模变得越来越准确:2014年ImageNet获胜者GoogleNet实现了74.8%的top-1精度,大约6.8 M参数,2017 ImageNet获胜者SENet以145M参数实现了82.7%的top-1精度。最近,GPipe使用557M参数进一步将最先进的ImageNet top-1验证精度推高到84.3%:它非常大,只能通过专门的管道并行库进行训练通过划分网络并将每个部分分散到不同的加速器。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种转移学习数据集和其他计算机视觉任务(如物体检测)中表现更好。虽然更高的精度对于许多应用来说至关重要,但我们已经达到硬件存储器限制,因此进一步提高精度需要更高的效率。
ConvNet Efficiency: 深度神经网络通常使用模型准确率和效率之间的交换,随着智能手机的普及,手工设计的高效网络模型也十分常见,比如SqueezeNets、MobileNets和ShuffleNets。最近,神经架构搜索在设计高效的移动大小的ConvNets中变得越来越流行,并且通过广泛调整网络宽度,深度,实现了比手工制作的移动ConvNets更高的效率、卷积内核类型和大小。但是,目前还不清楚如何将这些技术应用于具有更大设计空间和更昂贵成本的大型模型。在本文中,我们的目标是研究超大型ConvNets的模型效率,超越了最先进的精度。为了实现这一目标,我们采用模型缩放。
Model Scaling: 模型缩放:有许多方法可以根据不同的资源约束扩展ConvNet:ResNet可以通过调整网络深度来缩小(例如,ResNet-18)或向上(例如,ResNet-200),而WideResNet和MobileNets可以通过网络宽度进行缩放。众所周知,更大的输入图像尺寸将有助于提高FLOPS开销的准确性。 虽然先前的研究已经证明网络的深度和宽度对于ConvNets的表现力都很重要,但它仍然是 如何有效地扩展ConvNet以实现更高的效率和准确性的开放性问题。我们的工作系统地和经验地研究了网络宽度,深度和分辨率的所有三个维度的ConvNet缩放。

3.复合模型缩放

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

3.1.问题的公式


  一个神经网络可以由公式(1)所表示,F表示在第i个stage进行L次重复操作。与其它神经网络专注于寻找最佳的结构F不同,我们致力于在固定的结构F上寻找不同的H、W、C和L来达到更好的效果。为了方便训练,我们使C、L和r(分辨率)按照固定的比率进行缩放。

  问题可以用公式(2)来进行描述,转化为了寻找d、w和r使得准确率最高,d、w、r分别代表模型在深度、宽度和分辨率上的缩放程度。

3.2.缩放尺寸

  深度、宽度和分辨率三者之间的缩放互相依赖而且在不同的环境下有不同的表现,因此传统方法主要从它们中的一个进行缩放。

深度: 网络缩放最常用的方式就是深度的变化,更大的深度意味着可以提取出更丰富和更复杂的特征,但是也会有梯度消失问题的存在。虽然之后出现的捷径连接和BN可以缓解这一问题,但是深度的提升对应准确率的提升却微乎其微,如ResNet1000和ResNet101。


宽度: 在小网络中进行宽度的缩放是十分常见的。扩大宽度可以增加感受野,但是极宽且浅的网络难以捕获高层的特征,如图3所示,宽度的扩展会迅速饱和。

分辨率 使用更高分辨率的图片,卷积神经网络可以捕获更细粒度的图像。

结论一 增加网络的宽度、深度和分辨率都可以提高模型的准确率,但是对于大网络来说,准确率增加的速度会降低。

3.3.复合缩放


  我们凭经验观察到不同的尺度缩放不是独立的。直观地,对于更高分辨率的图像,我们应该增加网络深度,使得更大的感受域可以帮助捕获包括更大图像中的更多像素的类似特征。相应地,我们还应该在分辨率更高时增加网络宽度,为了在高分辨率图像中捕获具有更多像素的更细粒度的图案。这些直觉表明我们需要协调和平衡不同的缩放尺寸,而不是传统的单维缩放。
  如图4所示,单纯地缩放某一维度的效果要差与同时缩放三个维度。

结论二 为了更好地提高准确率和效率,在尺寸缩放过程中平衡缩放宽度、深度和分辨率是十分重要的。


  缩放比例按公式3进行。

4.EfficientNet结构

  α,β2,γ2 的乘积为2,确定了整体的计算量大小(深度扩大2倍,运算量增加2倍,宽度和分辨率扩大2倍,运算量增加4倍),训练中先固定Φ=1,然后通过网络搜索寻找合适的α、β、γ,然后固定α、β、γ,使用不同的Φ得到其它网络结构。











你可能感兴趣的:(EfficientNet)