作者:Mingxing Tan机器之心编译参与:
路、张倩
谷歌提出了一项新型模型缩放方法:利用复合系数统一缩放模型的所有维度,该方法极大地提升了模型的准确率和效率。谷歌研究人员基于该模型缩放方法,提出了一种新型 CNN 网络 EfficientNet,该网络具备极高的参数效率和速度。目前,该模型的代码已开源。卷积神经网络(CNN)通常以固定成本开发,然后再按比例放大,从而在获得更多资源时可以达到更高的准确率。例如,ResNet可以通过增加网络层数,从 ResNet-18 扩展到 ResNet-200。近期 GPipe 将基线 CNN 扩展了 4 倍,从而在 ImageNet 数据集上达到了 84.3% 的 top-1 准确率。模型缩放的通常做法是任意增加 CNN 的深度或宽度,或者使用更大的输入图像分辨率进行训练和评估。尽管这些方法确实可以改进准确率,但它们通常需要大量手动调参,且通常获得的是次优性能。那么,我们是否可以寻找更好的 CNN 扩展方法,来获得更高的准确率和效率呢?谷歌研究人员在一篇 ICML 2019 论文《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》中,提出了一种新型模型缩放方法,该方法使用一种简单但高效的复合系数(compound coefficient)以更加结构化的方式扩展 CNN。与任意扩展网络维度(如宽度、深度、分辨率)的传统方法不同,该新方法使用固定的一组缩放系数扩展每个维度。受益于该方法和AutoML的最新进展,谷歌开发出了一系列模型——EfficientNets,该模型的准确率超越了当前最优模型,且效率是后者的 10 倍(模型更小,速度更快)。
论文链接:https://arxiv.org/pdf/1905.11946.pdf复合模型缩放
:
扩展 CNN 的更好方法为了理解网络缩放的效果,谷歌研究人员系统地研究了缩放模型不同维度的影响。虽然缩放单个维度可以改善模型性能,但研究人员发现平衡网络的所有维度(宽度、深度和图像分辨率)和可用资源才能最优地提升整体性能。该复合缩放方法的第一步就是执行网格搜索,寻找固定资源限制下基线模型不同缩放维度之间的关系。这决定了每个维度的恰当缩放系数。第二步是应用这些系数,将基线网络扩展到目标模型大小或目标计算成本。不同缩放方法对比。传统缩放方法 (b)-(d) 任意缩放模型的单个维度,而谷歌提出的新型复合缩放方法则不同,它扩展模型的所有维度。相比于传统的模型缩放方法,该复合缩放方法可持续改善模型的准确率和效率,如 MobileNet 的 ImageNet 准确率提升了 1.4%,ResNet 的准确率提升了 0.7%。EfficientNet 架构模型缩放的效果严重依赖基线模型。因此,为了进一步提升性能,谷歌研究人员使用 AutoML MNAS 框架执行神经架构搜索,从而开发出一种新型基线模型,该模型可以优化准确率和效率。该基线模型使用 mobile inverted bottleneck convolution(MBConv),类似于 MobileNetV2 和 MnasNet,但是由于 FLOP 预算增加,该模型较大。于是,研究人员继续缩放该基线模型,得到一组模型——EfficientNets。基线模型 EfficientNet-B0 的架构简单、干净,这使得它易于扩展和泛化。EfficientNet 性能研究人员在 ImageNet 数据集上对比了 EfficientNets 和已有 CNN 模型。EfficientNet 模型要比已有 CNN 模型准确率更高、效率更高,其参数量和 FLOPS 都下降了一个数量级。例如,在高准确率的模式中,EfficientNet-B7 在 ImageNet 上获得了当前最优的 84.4% top-1 / 97.1% top-5 准确率,CPU 推断速度是 Gpipe 的 6.1 倍,而后者的大小是 EfficientNet-B7 的 8.4 倍。与现在广泛使用的 ResNet-50 相比,EfficientNet-B4 使用类似的 FLOPS 取得的 top-1 准确率比 ResNet-50 高出 6.3%(ResNet-50 76.3%,EfficientNet-B4 82.6%)。模型大小 vs. 准确率。EfficientNet-B0 是通过 AutoML MNAS 开发出的基线模型,Efficient-B1 到 B7 是扩展基线模型后得到的网络。EfficientNet 显著优于其他 CNN。具体来说,EfficientNet-B7 取得了新的 SOTA 结果:84.4% top-1 / 97.1% top-5 准确率,且其大小远远小于之前的最优 CNN 模型 GPipe(后者的模型大小是 EfficientNet-B7 的 8.4 倍),速度是 GPipe 的 6.1 倍。EfficientNet-B1 的参数量远远小于 ResNet-152,但速度是后者的 5.7 倍。EfficientNet 在 ImageNet 上的性能。推断延迟对比。尽管 EfficientNets 在 ImageNet 上性能优异,但要想更加有用,它们应当具备迁移到其他数据集的能力。谷歌研究人员在 8 个常用迁移学习数据集上评估了 EfficientNets,结果表明 EfficientNets 在其中的 5 个数据集上达到了当前最优的准确率,且参数量大大减少,这表明 EfficientNets 具备良好的迁移能力。EfficientNets 能够显著提升模型效率,谷歌研究人员希望 EfficientNets 能够作为未来计算机视觉任务的新基础。因此,研究人员开源了 EfficientNet 模型。EfficientNet 源代码和 TPU 训练脚本参见:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet参考链接:https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html
https://colab.research.google.com/drive/1Jw28xZ1NJq4Cja4jLe6tJ6_F5lCzElb4
GitHub
https://github.com/lukemelas/EfficientNet-PyTorchGoogle原论文
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
Mingxing Tan, Quoc V. Le
https://arxiv.org/abs/1905.11946Colab Demo
https://colab.research.google.com/drive/1Jw28xZ1NJq4Cja4jLe6tJ6_F5lCzElb4