EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
单位: 谷歌
摘要: 卷积神经网络(ConvNets)通常是在固定资源预算下开发的,如果有更多可用资源,则可以按比例放大以获得更高的准确性。在本文中,我们系统地研究模型缩放并确定仔细平衡网络深度,宽度和分辨率可以带来更好的性能。基于这一观察,我们提出了一种新的缩放方法,该方法使用简单但高效的复合系数均匀地缩放深度/宽度/分辨率的所有尺寸。我们证明了这种方法在扩展MobileNets和ResNet方面的有效性。
整体框架: 首先使用NAS搜索了一个基准网络,然后再在基准网络的基础上进行深度,宽度和分辨率的平衡。谷歌最近的mobilenetV3,autoargument(自动图像增强)都是使用自动搜索策略。因为在深度学习中有太多技巧性,或者太多的组合。如何组合起来使模型在任务中最优是现在bone net设计的方向。而这个过程中搜索的算法应该是最关键的。(谷歌并未开源)
EfficientNet-B7(参数最多的模型)比现在最优的convnet参数少了8.4x,速度快了6.1x提升还是很明显的。
主要思路就是在基准网络的基础上通过a,b,c,三个参数,控制宽度,深度和分辨率进行网络模型的自动调整。
复合模型缩放
CNN网络的每层中的width,depth,分辨率都是可以调整的。比如resnet中其中大部分模块都是相同的。所以对网络每层的三个参数都可以随意调整,则整个搜索优化空间太大。同时,在网络训练的过程中不好统一feature map的尺寸。于是作者限定三个参数同时等比例的缩放。
注意: 这里有计算资源的限制。因为很多论文从单一方面进行宽度,深度和分辨率的增大就能得到精度的提高。所以要有计算资源的限制。
上面的r就是缩放参数。个人觉得三个参数同时缩放就是为了控制feature map的尺寸不规则变化的问题。
为啥要同时同方向的缩放三个参数。从下图可以得到结论。所以是实验探究出来的。
在本文中,我们提出了一种新的复合缩放方法,它使用复合系数φ以原则方式统一地缩放网络宽度,深度和分辨率。
其中α,β,γ是可以通过小网格搜索确定的常数,就是网格搜索确定的。在本文中,我们约束α·β2·γ2≈2使得对于任何新的φ,总FLOPS将大约3增加2φ,就是以2为底的指数方式增加参数量。
基准网络
利用多目标神经架构搜索来优化准确性和FLOPS,从而开发基线网络。架构搜索应该是最关键的。 基准网络很像MnasNet(有机会好好看看)。EfficientNet-B0的参数量更多。
参数搜索
- 步骤1:我们首先确定φ= 1,假设有两倍的可用源,并根据公式2和3进行α,β,γ的小网格搜索。特别是,我们发现EfficientNet-B0的最佳值是α= 1.2,β= 1.1,γ= 1.15,受α·β2·γ2≈2的约束。
- 步骤2:然后我们将α,β,γ固定为常数,并使用公式3扩展具有不同φ的基线网络,以获得EfficientNet-B1至B7(表2中的细节)。
总结: 就是有GPU任性,不知道所有这些工作需要多少GPU的计算时间。
结果
确实在相同精度下,模型的参数量更少了。
- 将宽度,深度,分辨率提高用于已有网络。
发现随着宽度,深度,分辨率的提高。模型的精度会提高,同时模型的参数量也提高了。
后面就是各种实验正面模型的好了。我们重点看一下迁移学习的部分。论文中也将EfficientNet用于其他数据集,并和现有的SOT算法的结果进行了比较。
一句话: 效果很好,放心的用吧。
这幅图就是要说我缩放的策略牛逼,比那些在现有模型上随机缩放的效果好。
总结
效果好,精度高,速度快。放心迁移学习呗。