EfficientNet Rethinking Model Scaling for Convolutional Neural Networks

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

https://arxiv.org/pdf/1905.11946.pdf

在本文中,我们系统地研究了模型的缩放,并发现仔细平衡网络深度、宽度和分辨率可以获得更好的性能。在此基础上,我们提出了一种新的缩放方法,该方法使用一个简单而高效的复合系数来统一缩放深度/宽度/分辨率的所有维度。我们证明了这种方法在扩展MobileNets和ResNet的有效性。

为了更进一步,我们使用神经结构搜索来设计一个新的基线网络,并将其扩大到获得一个模型系列,称为EfficientNets,它比以前的ConvNets实现了更好的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上达到了最先进的84.3%的最高准确率,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的EfficientNets在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个转移学习数据集上也有很好的转移效果,并取得了最先进的准确性,而参数却少了一个数量级。

为了更进一步,我们使用神经结构搜索来设计一个新的基线网络,并将其扩大到获得一个模型系列,称为EfficientNets,它比以前的ConvNets实现了更好的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上达到了最先进的84.3%的最高准确率,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的EfficientNets在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个转移学习数据集上也有很好的转移效果,并取得了最先进的准确性,而参数却少了一个数量级。Source code is at [https: //github.com/tensorflow/tpu/tree/master/models/official/efficientnet](https: //github.com/tensorflow/tpu/tree/master/models/official/efficientnet).

然而,扩大ConvNets的过程一直没有得到很好的理解,目前有很多方法。最常见的方法是通过深度(He等人,2016)或宽度(Zagoruyko和Komodakis,2016)来扩大ConvNets的规模。另一种不太常见,但越来越流行的方法是通过图像分辨率来放大模型(Huang等人,2018)。在以前的工作中,通常只对三个(深度、宽度和图像大小)维度中的一个进行缩放。虽然可以任意缩放两个或三个维度,但任意缩放需要繁琐的手工调整,而且仍然经常产生次优的精度和效率。

在本文中,我们想研究并重新思考扩大ConvNets的过程。我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单地以恒定的比例扩展它们来实现。

基于这一观察,我们提出了一种简单而有效的复合缩放方法。与传统的任意缩放这些因素的做法不同,我们的方法是用一组固定的缩放系数统一缩放网络的宽度、深度和分辨率。例如,如果我们想使用 2 N 2^N 2N倍的计算资源,那么我们可以简单地将网络深度增加 α N α^N αN,宽度增加 β N β^N βN,图像大小增加 γ N γ^N γN,其中α、β、γ是由原始小模型上的小网格搜索确定的常数系数。

直观地说,复合缩放方法是有意义的,因为如果输入图像较大,那么网络需要更多层来增加接收域,需要更多通道来在较大的图像上捕捉更细粒度的模式。事实上,先前的理论(Raghu et al., 2017;Lu等人,2018)和实证结果(Zagoruyko & Komodakis, 2016)都表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个实证量化网络宽度、深度和分辨率三个维度之间的关系的人。

3. Compound Model Scaling

在本节中,我们将阐述缩放问题,研究不同的方法,并提出我们新的缩放方法。

3.1. Problem Formulation

一个ConvNet层i可以被定义为一个函数。 Y i = F i ( X i ) Y_i = F_i(X_i) Yi=Fi(Xi),其中Fi
是算子,Yi是输出张量,Xi是输入张量,张量形状为 < H i , W i , C i > <H_i, W_i, C_i> <Hi,Wi,Ci>,其中Hi和Wi是空间维度,Ci是通道维度。一个ConvNet N可以用一个组成层的列表表示。 N = F k ⨀ . . . ⨀ F 2 ⨀ F 1 ( X 1 ) = ⨀ j = 1... k F j ( X 1 ) \mathcal N = F_k\bigodot ... \bigodot F2 \bigodot F1(X1) = \bigodot_{j=1...k} F_j (X_1) N=Fk...F2F1(X1)=j=1...kFj(X1)。在实践中,ConvNet层通常划分为多个阶段,每个阶段的所有层共享相同的架构:例如ResNet (He et al., 2016)有五个阶段,每个阶段的所有层都有相同的卷积类型,除了第一层执行降采样。因此,我们可以将ConvNet定义为:

在这里插入图片描述

F i L i \mathcal F^{L_i}_i FiLi代表 F i F_i Fi层在第i阶段重复 L i L_i Li次, < H i , W i , C i > <H_i, W_i, C_i> <Hi,Wi,Ci>表示第i层的输入张量X的形状。 图2(a)显示了一个典型的ConvNet,其中空间维数逐渐缩小,但通道维数在各层上扩展,例如,从初始输入形状224, 224, 3到最终输出形状7, 7, 512。

在这里插入图片描述

图2。模型扩展。(a)是一个基线网络实例;(b)-(d)是只增加网络宽度、深度或分辨率一维的常规缩放。(e)是我们提出的compound scaling方法,它以固定比例统一标度所有三个维度。

与常规的ConvNet设计不同的是,它主要集中在寻找最佳的层结构 F i \mathcal F_i Fi,模型缩放试图扩大网络的深度度( L i L_i Li)、宽度( C i C_i Ci)和/或分辨率( H i , W i H_i,W_i HiWi)而不改变基线网络中预定的 F i \mathcal F_i Fi。通过固定 F i \mathcal F_i Fi,模型缩放简化了新的资源约束的设计问题,但它仍然是一个很大的设计空间,以探索每一层不同的Li、Ci、Hi、Wi。为了进一步减少设计空间,我们限制所有层必须以恒定的比例统一缩放。我们的目标是在任何给定的资源约束下最大限度地提高模型精度,这可以被表述为一个优化问题

在这里插入图片描述

其中w、d、r是缩放网络宽度、深度和分辨率的系数; F ^ i 、 L ^ i 、 H ^ i 、 W ^ i 、 C ^ i \hat F_i、\hat L_i、\hat H_i、\hat W_i、\hat C_i F^iL^iH^iW^iC^i是基线网络的预定义参数(见表1为例)

在这里插入图片描述

其主要构建模块是 mobile inverted bottleneck MBCon(Sandler等人,2018;Tan等人,2019),我们还在其中加入了squeeze-and-excitatio优化(Hu等人,2018)。

3.2. Scaling Dimensio

问题2的主要困难是,最佳的d、w、r相互依赖,而且在不同的资源约束下,其值会发生变化。由于这个困难,传统的方法大多在其中一个维度上对ConvNets进行扩展:

观察结果1 -提高网络宽度、深度或分辨率的任何维度都能提高精度,但对于更大的模型,精度增益会降低。

3.3. Compound Scaling

我们根据经验观察到,不同的缩放维度是不独立的。直观地说,对于更高分辨率的图像,我们应该增加网络深度,这样更大的感受野可以帮助捕捉类似的特征,包括更大图像中的更多像素。相应地,当分辨率较高时,我们也应该增加网络的宽度,以便在高分辨率的图像中捕捉到更多像素的细微模式。这些直觉表明,我们需要协调和平衡不同的缩放维度,而不是传统的单一维度的缩放

为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放,如图4所示。如果我们只缩放网络宽度w而不改变深度(d=1.0)和分辨率(r=1.0),准确性很快就会饱和。随着深度(d=2.0)和分辨率(r=2.0)的提高,在相同的FLOPS成本下,宽度的扩展可以达到更好的精度。这些结果使我们得出第二个观察结果。

在这里插入图片描述

观察2–为了追求更好的准确性和效率,在ConvNet缩放过程中,平衡网络宽度、深度和分辨率等所有维度是至关重要的。

本文提出了一种新的 compound scaling method,采用复合系数 ϕ \phi ϕ统一标度网络宽度、深度和分辨率,其原则如下:

在这里插入图片描述

其中α、β、γ是可以通过小网格搜索确定的常数。直观地说, ϕ \phi ϕ是一个用户指定的系数,它控制有多少更多的资源可以用于模型缩放,而α、β、γ分别指定如何将这些额外的资源分配给网络宽度、深度和分辨率

值得注意的是,普通卷积运算的FLOPS与 d 、 w 2 、 r 2 d、w^2、r^2 dw2r2成正比,即网络深度翻倍将使FLOPS翻倍,但网络宽度或分辨率翻倍将使FLOPS增加4倍由于卷积运算通常在ConvNets的计算成本中占主导地位,用方程3缩放ConvNet将使总FLOPS大约增加 ( α ⋅ β 2 ⋅ γ 2 ) ϕ (α\cdotβ^2\cdotγ^2)^\phi (αβ2γ2)ϕ。在本文中,我们约束 α ⋅ β 2 ⋅ γ 2 α\cdotβ^2\cdotγ^2 αβ2γ2 ≈ 2,这样对于任何新的 ϕ \phi ϕ,总FLOPS将大约增加 2 ϕ 2^\phi 2ϕ

,我们约束 α ⋅ β 2 ⋅ γ 2 α\cdotβ^2\cdotγ^2 αβ2γ2 ≈ 2,这样对于任何新的 ϕ \phi ϕ,总FLOPS将大约增加 2 ϕ 2^\phi 2ϕ。**

实验结果部分见论文原文https://arxiv.org/pdf/1905.11946.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值