谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

IT思维  •  扫码分享

公众号/将门创投

rom: GoogleAI   编译: T.R

谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

卷积网络的部署通常在固定资源的情况下进行,如果想要提高精度就需要更多的资源来部署更大、更深的网络。实际应用中,人们可以把ResNet-18拓展到ResNet-200增加层数提高精度,谷歌近期提出的GPipe也利用提升规模的方法在ImageNet上实现了 84.3%的top-1精度

Gpipe模型与ResNet不同规模的模型

对于扩大模型的规模,通常的做法是增加卷积网络的深度或宽度,或者利用更大的输入分辨率来训练和测评。虽然能够大幅度提升精度,但需要复杂的手工调校来进行优化。

那么我们能不能找到一种更为通用的方法来使扩大CNNs的规模以得到更好的精度和速度呢?谷歌在今年的ICML会议上给出了一种可行的解决方案。

研究中提出了一种名为 EfficientNet ,通过简单高效地混合系数来结构化地扩大CNNs的规模。与先前提高网络维度参数不同,这种新的方法不会去调整宽度、深度和分辨率,而是利用固定的规模系数集均匀化地对每个维度进行扩增。

基于这种规模化方法和自动机器学习,研究人员开发出了新的网络家族EfficientNets,不仅在精度上超过了前辈,更在效率上有了10倍的提升。

混合模型规模化—扩大CNNs规模的好方法

研究人员首先系统地分析了不同维度上的规模化对于模型的影响。

谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

在深度、宽度和分辨率等维度上记性扩充后的模型效果提升,但单个维度在达到80%后很快趋近于饱和。

分别对于不同的维度进行规模化后,研究人员发现对于网络宽度、深度和图像分辨率等所有维度的平衡下对于模型的表现提升最好。所以 混合 而不是单一的改变模型的规模是提升性能的较好选择。

混合规模化方法的第一步是进行 栅格搜索 ,在固定资源限制的条件下寻找不同规模维度下的关系。这将为不同的维度寻找适宜的规模化系数来实现最好的效果。随后利用这些搜索到的系数来对基准网络进行扩充,在给定的计算资源和模型大小下实现目标模型。

谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

上图显示了不同规模化的方法,与先前的方法不同,新提出的混合规模化方法在所有的维度上进行了规模化提升。

实验表明这种混合规模化方法比mobileNet(+1.4%)和ResNet(+0.7%)都有提升。

EfficientNet架构

前述的模型在规模化的时候依然高度依赖于基础网络模型。所以为了更好的提高模型的表现,研究人员提出了新型基准网络模型。利用自动机器学习框架来进行神经架构搜索,同时优化了精度和效率(FLOPS)。

最终的架构类似MobileNetV2和MnasNet,使用了移动反转瓶颈卷积结构(mobile inverted bottleneck),但在规模上有些许扩大。基于这一基础网络,研究人员利用不同的扩充方式得到了规模化的网络家族EfficientNets。

谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

简单的基准模型更容易扩展和规模化

EfficientNet的表现

为了测试模型的性能,研究人员在ImageNet上对现有的先进模型与EfficientNet进行了比较,结果表明EfficientNet在精度和效率上都超过了现有的模型,甚至在相同精度下将模型参数和操作减小了一个数量级。

在下图中可以看到,在左上角的高精度区域,B7型EfficientNet在ImageNet上达到了84.4%的top-1精度和97.1%的top-5精度,但与先前的GPipe相比在CPU上的运行使用的参数减小了8.4倍同时速度提升了6.1倍。与广泛使用的ResNet-50相比,相同参数的情况下提升了6.3%的top-1精度。

谷歌最新研究EfficientNet,通过AutoML和模型规模化提升精度与效率

结果显示了新的模型家族在精度与效率上的优势。

此外,为了验证模型的其他数据集上的表现,研究人员还将模型迁移到了CIFAR-100和Flowers上,EfficientNet在参数减少一个数量级(21x)的情况下在8个测试数据集中的5个上取得了最好的精度,证明了这一方法具有稳定的泛化能力。

这种新的模型有望成为计算机视觉任务的新基准,研究人员开源了所有的代码,同时可以看在这里找到基于TPU的加速实现:

https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

在这里还有在TPU上训练模型的详细教程:
https://cloud.google.com/tpu/docs/tutorials/efficientnet

在论文里找到更多的细节:
https://arxiv.org/pdf/1905.11946.pdf

ref:
https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html
https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
https://cloud.google.com/tpu/docs/tutorials/efficientnet
https://arxiv.org/pdf/1905.11946.pdf

picfrom:https://dribbble.com/shots/4908992-investment-increase

随意打赏

谷歌automl谷歌bert模型automl如何上谷歌谷歌模型
提交建议
微信扫一扫,分享给好友吧。