本文主要是介绍EfficientNet简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引言
目前提升卷积神经网络的准确性方法大多是扩大其规模,比如从网络深度、网络宽度或者图像分辨率中选择,通常是缩放中一个方面进行提高,比如ResNet-18到ResNet-200就是使用了更多层,尽管可以任意缩放两个或三个维度,但是任意缩放都需要繁琐的手动调整,并且仍然能产生次优的精度和效率。
因此本文研究并重新思考扩展网络的过程,研究表明,平衡网络宽度、深度和分辨率的所有维度是至关重要的,这种平衡可以通过简单的固定比例缩放来实现。在此基础上,本文提出了一种简单而有效的复合模型扩张方法(compound scaling method),有别于传统的任意标度方法,本文均匀地缩放网络的宽度、深度以及一组固定尺度系数的分辨率。例如,如果想使用2N倍的计算资源,那么可以简单地将网络深度增加a的N次方,宽度增加B的N次方,图像大小增加γ的N次方,其中a, B,γ是由在原始小模型上进行小网格搜索所确定的常系数。下图就说明了本文方法与传统方法区别:
它从三个维度均扩大了,但是扩大多少,就是通过作者提出来的复合模型扩张方法结合神经结构搜索技术获得的。
实际效果如下图:
相关工作
(1)精度上:自从AlexNet赢得了2012年ImageNet竞赛的冠军,ConvNets开始通过更大的模型来增加准确率,GoogleNet赢得了2014年ImageNet的冠军,达到了74.8%的top-1准确率,模型大约6.8M参数量,SENet获得了2017年ImageNet的冠军达到了82.7%的top-1准确率使用了145M参数量。最近GPipe进一步把ImageNet最好的top-1验证集合的准确率推到了84.3%,使用了557M的参数量:这模型太大了,只有通过把网络分开并将每个部分扩展到不同的加速器,才能使用专门的管道并行库进行训练。而这些模型主要是为了ImageNet设计的,最近的研究表明更好的ImageNet模型在一系列迁移学习的数据集合以及其他计算机视觉任务比如目标检测.上表现更好,虽然更高的准确率对于许多应用来说是决定性的,但是目前已经碰到了硬件内存的限制,所以进一步提升准确率需要更好的效率。
(2)效率上:深的ConvNets经常参数过量。模型压缩是一个普遍的方法来降低模型的大小,通过准确率来换取效率。随着移动电话变得普及,手工制作有效率的移动大小的ConvNets也很普遍,比如SqueezeNets ,MobileNets和 ShuffleNets。最近神经网络结构搜索在设计高效的移动端大小的ConvNets上越来越流行,通过调节网络的宽度,深度,卷积核的类型和尺寸达到了甚至比手工制作的移动端ConvNets更好的效率。而如何把这些技术应用到更大的模型上是不清楚的,因为更大的模型有更大的设计空间和更昂贵的调节成本。这篇文章的目的是研究超过最高水平准确率的超级大ConvNets的效率。为了达到这个目标,我们继续模型的缩放。
(3)模型缩放:对于不同的资源限制下,有很多种方式去缩放一个ConvNet:ResNet可以通过调整网络的深度来缩小或放大,而WideResNet和 MobileNets能通过网络的宽度来缩放。公认的更大的输入图像尺寸带来更多运算量的同时能够帮助提升准确率。尽管之前的研究已经表明了网络的深度和宽度对于ConvNets的表达力都是重要的,但是仍遗留了一个开放性的问题怎样有效的去放缩一个ConvNet来达到更好的效率和准确率呢。本文系统地实验并且经验性的研究了ConvNet全部不到三个维度(网络的宽度,深度和图像分辨率)的缩放。
方法
整个卷积网络由 k 个卷积层组成,可以表示为:
但是在实际中,通常会将多个结构相同的卷积层称为一个stage,例如ResNet有5个 stage,每个stage中的卷积层结构相同(除了第一层为降采样层),以stage为单位可以将卷积网络 N 表示为:
优化目标就是在资源有限的情况下,要最大化 Accuracy, 优化目标的公式表达如下:
作者发现,更大的网络具有更大的宽度、深度或分辨率,往往可以获得更高的精度,但精度增益在达到80%后会迅速饱和,这表明了只对单一维度进行扩张的局限性,实验结果如下图:
作者指出,模型扩张的各个维度之间并不是完全独立的,比如说,对于更大的分辨率图像,应该使用更深、更宽的网络,这就意味着需要平衡各个扩张维度,而不是在单一维度张扩张。
如下图所示,直线上的每个点表示具有不同宽度系数(w)的模型。第一个基线网络(d=1.0,r=1.0)有18个卷积层,分辨率224x224,而最后一个基线(d=2.0,r=1.3)有36个卷积层,分辨率299x299。这个图说明了一个问题,为了追求更好的精度和效率,在ConvNet缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的。
所以本文提出了复合扩张方法,这也是文章核心的地方,(α,β,γ)是我们需要求解的一组参数,如下图公式,带约束的最优参数求解。(α,β,γ)分别衡量着depth, width和 resolution的比重,其中 β和γ在约束上会有平方,是因为如果增加宽度或分辨率两倍,其计算量是增加四倍,但是增加深度两倍,其计算量只会增加两倍。
求解方式:
1.固定公式中的φ=1,然后通过网格搜索(grid search)得出最优的α、β、γ,得出最基本的模型EfficientNet-B0.
2.固定α、β、γ的值,使用不同的φ,得到EfficientNet-B1, …, EfficientNet-B7
φ的大小对应着消耗资源的大小,相当于:
①当φ=1时,得出了一个最小的最优基础模型;
②增大φ时,相当于对基模型三个维度同时扩展,模型变大,性能也会提升,资源消耗也变大。
作者指明,由于模型缩放不会改变基线网络中的层,但是拥有一个良好的基线网络也是至关重要的。作者使用现有的基础网络来评估缩放方法,但是为了更好地证明缩放方法的有效性,还开发了一种新的mobile-size baseline,称为 EfficientNet,EfficientNet-B0的网络结构如下 (类似于 MobileNetV2和MnasNet):
实验
总结
这篇论文针对目前卷积神经网络的优化的普遍方法提出结合的思想,认为目前常用的加宽网络、加深网络和增加分辨率这3种常用的提升网络性能的方法之间不应该是相互独立的,可以对三个方面同时进行缩放处理,通过简单的固定比例缩放来实现平衡以达到性能的提升。因此提出了复合模型扩张算法,通过综合优化网络宽度、网络深度和分辨率达到指标提升的目的,能够达到准确率指标和现有分类网络相似的情况下,大大减少模型参数量和计算量。从实验来看,EfficientNet模型要比已有 CNN 模型准确率更高、效率更高,其参数量和FLOPS都下降了一个数量级。
这篇关于EfficientNet简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!