Google出品,ImageNet新的State-of-the-art

论文链接: https://arxiv.org/pdf/1905.11946.pdf
官方源码: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
第三方PyTorch源码: https://github.com/lukemelas/EfficientNet-PyTorch

1.介绍

本文的思路来源是,作者观察到通过扩大网络模型的方法,可以获得更好的精度。最常见的方法是增加网络深度或者宽度(通道数),还有一种不常见的但越来越流行的方法是通过增加图像分辨率(如Gpipe采用480*480的图像)来扩大模型的规模。因此作者思考是否有一种原则性的方法可以平衡上述三种扩展方向,使得网络经过同等规模的扩大后达到更好的精度和效率,如图所示。基于此,提出了一种简单有效的复合标度方法,利用网格搜索得到了一组固定的缩放系数分别对网络的宽度、深度和分辨率进行缩放。
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
本文可看做是对深度学习炼丹的丹方进行解析,对网络的深度、宽度与分辨率这三种成分的配比进行系统性的研究,在提出的EfficientNet-B0的基础上用此方法扩展网络,证明了该方法的有效性。而EfficientNet-B7在ImageNet上实现了84.4%的top-1 / 97.1%的top-5精度,超过现有最好的结果(文中为Gpipe),同时参数少8.4倍,推理速度快6.1倍,效果非常棒!同时也在MobileNet与ResNet上用此方法扩展,效果上得到了证实。

2.复合模型扩展

一个卷积层ii可以被定义为一个函数:Yi=Fi(Xi)Y_i = F_i(X_i),其中FiF_i是卷积操作,YiY_i是输出的张量,XiX_i是输入的张量且张量的形状为<Hi,Wi,Ci><H_i,W_i,C_i>。此外CNN通常被划分为多个阶段,每个阶段的所有层结构是相同的,比如ResNet中有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行下采样。因此一个神经网络NN可以表示为
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
其中FiLiF_i^{L_i}表示在第ii个阶段的第LiL_i次重复的FiF_i层,<Hi,Wi,Ci><H_i,W_i,C_i>是第ii层输入的张量XX形状。不同于之前普通的网络设计是集中在寻找更好的FiF_i层架构,模型缩放则是扩展网络长度(LiL_i)、宽度(CiC_i)和分辨率(Hi,WiH_i,W_i)而不改变baseline网络中的FiF_i。为了进一步减少设计空间的大小,限制所有参数必须以恒定的比例均匀地缩放。目标是为了在给定资源限制时最大化模型精度,可以被定义为一个优化问题:
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
其中w,d,rw,d,r是对网络的宽度、深度和分辨率缩放的参数,Fi^,Li^,Hi^,Wi^,Ci^\hat{F_i},\hat{L_i},\hat{H_i},\hat{W_i},\hat{C_i}是baseline网络中预先定义好的参数。
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
作者做了以上实验,得出两个结论:

  • 扩展网络宽度、深度或分辨率中的任何维度都可以提高精度,但是对于较大的模型,精度增益会降低,对应Figure 3中的尾部收敛。
  • 为了追求更高的精度和效率,在ConvNet缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的,对应figure 4。

因此本文提出一种新的复合标度方法,使用复合系数ϕ\phi来均匀缩放网络宽度、深度和分辨率
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
α,β,γ\alpha,\beta,\gamma是可以通过小型网格搜索确定的常量,而ϕ\phi从直观上解释是是用户按照能够提供的额外计算资源开销(相对于baseline将网络扩展时需要额外计算资源)的多少来指定的参数。α,β,γ\alpha,\beta,\gamma则是确定如何分别为网络宽度、深度和分辨率分配这些额外资源。

常规卷积运算的FLOPS与d,w2,r2d,w^2,r^2成正比,例如将网络深度加倍会加倍FLOPS,而将网络宽度或者分辨率加倍会使得FLOPS大致增加四倍,因此用公式(3)对网络进行缩放时,会使得总体FLOPS增加大约(αβ2γ2)ϕ(\alpha\cdot\beta^2\cdot\gamma^2)^\phi倍,在本文中,通过约束αβ2γ22\alpha\cdot\beta^2\cdot\gamma^2\approx2使得对任意的ϕ\phi整体的FLOPS将会增加2ϕ2^\phi

3.EfficientNet架构

首先作者使用MnasNet的方法,利用多目标神经网络架构搜索,同时优化准确率和FLOPS,得到了FLOPS为400M的baseline网络EfficientNet-B0,网络架构如下表:
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
然后从这个baseline着手,使用两个步骤:

  • STEP 1: 固定ϕ=1\phi=1,即假设有两倍以上的可用资源,并做一个小的网格搜索得到了最佳值α=1.2,β=1.1,γ=1.15\alpha=1.2,\beta=1.1,\gamma=1.15,在αβ2γ22\alpha\cdot\beta^2\cdot\gamma^2\approx2的约束下。这样做的原因是因为在大模型上搜索成本太高了。
  • STEP 2: 固定α,β,γ\alpha,\beta,\gamma并使用不同的ϕ\phi对baseline网络进行扩展,得到了EfficientNet-B1到B7

【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

实验结果

对MobileNet和ResNet采用这种方法进行网络扩展
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
在ImageNet上的模型参数量与精度对比图
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
在其它数据集上迁移学习的效果,在5个数据集上达到了SOTA,参数平均减少9.6倍。
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
可以看出复合缩放方法比任何单一效果都好
【论文解读】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

总结

提出Mobilesize的EfficientNet,在ImageNet和五个常用的迁移学习数据集上,用更少的参数和FLOPS达到超越SOTA的精度。
在此之前,通常提高准确率的方法是单纯增加深度,宽度或者分辨率中的某一种,但是效果不能达到最优。在相同计算资源的限制下,平衡这三者的贡献才能让网络得到最好的效果。

相关文章:

  • 2021-10-03
  • 2022-01-04
  • 2021-06-01
  • 2021-11-16
  • 2021-08-10
  • 2021-11-11
  • 2021-09-08
  • 2021-08-27
猜你喜欢
  • 2021-04-24
  • 2021-05-12
  • 2021-11-05
相关资源
相似解决方案