[ICML19]EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

个人觉得idea很不错,中心思想是直接对整体架构进行scale以达到减少参数的目的,也是Quoc V. Le刚发表在ICML19的文章,并且在Imagenet达到了最新的state-of-art级别的work。pytorch版本


Abstract

卷积神经网络(ConvNets)通常是在固定的资源预算下开发的,如果有更多的资源可用,则会进行扩展以获得更高的精度。在本文中,我们系统地研究了模型缩放,并发现仔细平衡网络的深度、宽度和分辨率可以获得更好的性能。在此基础上,我们提出了一种新的标度方法,该方法使用一个简单而高效的复合系数来均匀地标度深度/宽度/分辨率的所有维度。我们证明了该方法在扩展mobilenet和ResNet方面的有效性。为了更进一步,我们使用神经结构搜索设计了一个新的baseline线网络,并将其扩展,以获得一系列被称为efficient entnets的模型,这些模型比以前的ConvNets具有更好的准确性和效率。特别是我们的streamlined - b7在ImageNet上实现了84.4%的top-1 / 97.1%的top-5精度,比现有最好的ConvNet小8.4倍,推理速度快6.1倍。在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个传输学习数据集上,我们的高效网络传输效果也很好,并且达到了最先进的精度,参数少了一个数量级。源代码载于[github]


1. Introduction

为了获得更好的精度,广泛使用了放大的ConvNets。例如,通过使用更多的层,可以将ResNet (He et al., 2016)从ResNet-18扩展到ResNet-200;最近,GPipe (Huang et al., 2018)将baseline模型放大4倍,实现了84.3%的ImageNet top-1精度。然而,扩大规模的过程会产生矛盾从来没有被很好地理解过,现在有很多方法可以做到这一点。最常见的方法是根据ConvNets的深度(He et al., 2016)或宽度(Zagoruyko &Komodakis, 2016)。另一种不太常见但越来越流行的方法是通过图像分辨率放大模型(Huang et al., 2018)。在以前的工作中,通常只缩放三维深度、宽度和图像大小中的一个。虽然可以任意缩放两个或三个维度,但是任意缩放需要繁琐的手工调优,而且常常会产生次优的精度和效率。

在这篇论文中,我们想研究和重新思考扩大ConvNets的过程。特别地,我们研究的中心问题是:有没有一种原则性的方法来扩大ConvNets的规模,从而达到更好的精度和效率?我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单地按比例缩放每个维度来实现。在此基础上,提出了一种简单有效的复合标度方法。与传统的任意缩放这些因子的方法不同,我们的方法使用一组固定的缩放系数来均匀地缩放网络的宽度、深度和分辨率。为示例中,如果我们想使用2^N倍计算资源,然后我们可以简单地增加网络深度αN,宽度由βN,和图像的大小由γN,α,β,γ是常系数由小网格搜索原始的小模型。图2说明了我们的缩放方法和传统方法之间的区别。

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

我们证明了我们的缩放方法在现有的mobilenet上运行良好(Howard等,2017;Sandler et al., 2018)和ResNet (He et al., 2016)。值得注意的是,模型缩放的有效性在很大程度上取决于基线网络;为了更进一步,我们使用了神经结构搜索(Zoph &Le,2017;开发一个新baseline网络,并将其扩展以获得一系列模型,称为efficient entnets。

图1总结了ImageNet的性能,其中我们的efficient net明显优于其他convnet。特别是,我们的streamlined - b7超过了现有的最佳GPipe精度(Huang et al., 2018),但是使用的参数少了8.4倍,反向传播速度快了6.1倍。与广泛使用的ResNet (He et al., 2016)相比,我们的effective net - b4在出现类似故障的情况下,将top-1的准确率从ResNet-50的76.3%提高到了82.6%。除了ImageNet,在8个广泛使用的数据集中,有5个数据集的传输性能良好,并达到了最先进的精度,同时比现有的convnet减少了21倍的参数。

2. Related Work

ConvNet Accuracy: 自AlexNet (Krizhevsky et al ., 2012)赢得了2012年ImageNet竞争,ConvNets变得越来越更准确,更大的:虽然2014 ImageNet赢家GoogleNet (Szegedy et al ., 2015)达到74.8%(精度约为6.8M参数,赢得2017年ImageNet SENet(Hu et al ., 2018)与145M精度达到82.7% 的参数。最近,GPipe (Huang et al., 2018)进一步利用5.57亿参数将ImageNet top-1验证精度提升到84.3%:它太大了,只能通过划分网络,将每个部分分散到不同的加速器上,用专门的管道并行库进行训练。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种传输学习数据集(Kornblith et al., 2019)和其他计算机视觉任务(如对象检测)中也表现得更好(He et al., 2016;Tan等人,2019)。虽然更高的精度对于许多应用程序来说是至关重要的,但是我们已经达到了硬件内存的极限,因此进一步提高精度需要更好的效率。

ConvNet Efficiency: Deep ConvNets常被过度参数化。模型压缩(Han等,2016;He et al., 2018;Yang et al., 2018)是一种通过以精度换取效率来减小模型大小的常见方法。随着手机的普及,手工制作高效的移动尺寸的ConvNets也很常见,比如squeezenet (Iandola et al., 2016;Gholami等,2018),MobileNets (Howard等,2017;Sandler et al., 2018)和ShuffleNets (Zhang et al., 2018;马等,2018)。最近,神经网络结构在设计高效的移动尺寸的ConvNets时变得越来越受欢迎(Tan等,2019;,并通过广泛调整网络宽度、深度、卷积核类型和大小,实现了比手工制作的移动卷积网络更好的效率。然而,目前还不清楚如何将这些技术应用于更大的模型,这些模型具有更大的设计空间和更昂贵的调优成本。在本文中,我们的目标是研究超大型超精确ConvNets的模型效率。为了实现这个目标,我们采用模型缩放。

Model Scaling: 针对不同的资源约束,有许多方法可以伸缩ConvNet: ResNet (He et al., 2016)可以通过调整网络深度(#layers)来伸缩(例如,ResNet-18)或向上伸缩(例如,ResNet-200),而WideResNet (Zagoruyko &Komodakis, 2016)和MobileNets (Howard et al., 2017)可以通过网络宽度(#channel)进行缩放。人们也认识到,较大的输入图像大小将有助于准确性与更多的开销拖放。虽然之前的研究(Raghu等,2017;林,Jegelka, 2018;Sharir,Shashua, 2018;Lu等(2018)的研究表明,网络的深度和宽度对ConvNet的表达能力都很重要,如何有效地缩放ConvNet以获得更好的效率和准确性仍然是一个有待解决的问题。我们的工作系统地和经验地研究了网络宽度、深度和分辨率三个维度的ConvNet缩放。


3. Compound Model Scaling

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

3.1. Problem Formulation

一个ConvNet Layeri可以定义为函数:Y_{i}=\mathcal{F}_{i}\left(X_{i}\right),其中\mathcal{F}_{i}为算子,Y_{i}为输出张量,X_{i}为输入张量,张量形状为\left\langle H_{i}, W_{i}, C_{i}\right\rangle,其中Hi和Wi为空间维数,Ci为通道维数。一个卷积网络N可以用一个由多个层组成的列表来表示:\mathcal{N}=\mathcal{F}_{k} \odot \ldots \odot \mathcal{F}_{1} \odot \mathcal{F}_{1}\left(X_{1}\right)=\odot_{j=1 \ldots k} \mathcal{F}_{j}\left(X_{1}\right.)。在实践中,ConvNet层往往被划分为多个阶段,每个阶段的所有层共享相同的架构:例如,ResNet (He et al., 2016)有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行下行采样。因此,我们可以定义一个ConvNet为

\mathcal{N}=\bigodot _{i=1 \ldots s} \mathcal{F}_{i}^{L_{i}}\left(X_{\left\langle H_{i}, W_{i}, C_{i}\right\rangle}\right)        

\bigodot \bigodot 

其中\mathcal{F}_{i}^{L_{i}}表示层Fi在i阶段重复Li次,\left\langle H_{i}, W_{i}, C_{i}\right\rangle表示第i层的输入张量X的形状。图2(a)展示了一个具有代表性的ConvNet,其中空间维度逐渐缩小,但通道维度在层上扩展,例如从初始输入形状224、224、3 扩展到最终输出形状 7、7、512。

与常规的ConvNet设计主要关注于寻找最佳层架构\mathcal{F}_{i}不同,模型缩放尝试在不更改基线网络中预定义的\mathcal{F}_{i}的情况下扩展网络长度(Li)、宽度(Ci)和/或分辨率(Hi, Wi)。通过修正Fi,模型缩放简化了新资源约束的设计问题,但对于每一层来说,探索不同的Li、Ci、Hi、Wi仍然是一个很大的设计空间。为了进一步缩小设计空间,我们限制了所有层必须以恒定的比例均匀缩放。我们的目标是使给定资源约束的模型精度最大化,可以将其表示为一个优化问题

\max _{d, w, r} \quad A \operatorname{ccuracy}(\mathcal{N}(d, w, r))

\quad \mathcal{N}(d, w, r)=\bigoplus_{i=1 \ldots s} \hat{\mathcal{F}}_{i}^{d \cdot \hat{L}_{i}}\left(X_{\left\langle r \cdot \hat{H}_{i}, r \cdot \hat{W}_{i}, w \cdot \hat{C}_{i}\right\rangle}\right)

\begin{array}{l}{\text { Memory }(\mathcal{N}) \leq target \_memory} \\ {\text { FLOPS }(\mathcal{N}) \leq {target\_ flops}}\end{array}

其中w、d、r为尺度化网络宽度、深度和分辨率的系数;\hat{\mathcal{F}}_{i}, \hat{L}_{i}, \hat{H}_{i}, \hat{W}_{i}, \hat{C}_{i}是基线网络中预定义的参数(如表1所示)

3.2. Scaling Dimensi

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

Depth (d):许多convnet最常用的方法是扩展网络深度(He et al., 2016;黄等,2017;Szegedy等,2015;2016)。直观的感觉是,更深层次的ConvNet可以捕获更丰富、更复杂的特性,并很好地概括新的任务。然而,由于梯度消失问题,更深层次的网络也更加难以训练(Zagoruyko &Komodakis, 2016)。虽然有一些技术,如跳过连接(He et al., 2016)和批处理标准化(Ioffe &(Szegedy, 2015),缓解了训练问题,非常深的网络的精度增益减小:例如,ResNet-1000与ResNet-101具有相似的精度,尽管它有更多的层。图3(中)显示了我们对不同深度系数d的基线模型进行缩放的实证研究,进一步表明,对于非常深的卷积神经网络,精度收益递减

Width (w):小型模型通常采用网络宽度缩放ls (Howard et al., 2017; Sandler et al., 20Tan et al., 2019)。正如Zagoruyko & Komodakis, 2016年所讨论的,更广泛的网络往往能够捕获更细粒度的特点,更容易训练。然而,非常宽但很浅的网络往往难以捕获更高层次的特性。我们在图3(左)中得到的经验结果表明,当网络越宽,w越大时,准确率会迅速饱和。

Resolution (r):使用更高分辨率的输入图像,ConvNets可以捕获更细粒度的模式。从早期ConvNets的224x224开始,现代ConvNets往往使用299x299 (Szegedy et al., 2016)或331x331 (Zoph et al., 2018)来获得更好的精度。最近,GPipe (Huang et al., 2018)以480x480分辨率实现了最先进的ImageNet精度。更高的分辨率,如600x600,也广泛应用于目标检测ConvNets (He et al., 2017;林等,2017)。图3(右)显示了缩放网络分辨率的结果,确实更高的分辨率可以提高精度,但是对于非常高的分辨率,精度增益会减小(r = 1.0表示分辨率224x224, r = 2.5表示分辨率560x560)。以上分析使我们得出第一个观察结果。

结果1:扩展网络宽度、深度或分辨率的任何维度都可以提高精度,但是对于较大的模型,精度增益会降低。

3.3. Compound Scaling

我们从经验上观察到,不同的尺度尺度并不是独立的。直观地说,对于高分辨率的图像,我们应该增加网络深度,这样更大的接受域可以帮助捕获包含更大图像中更多像素的类似特性。相应地,当分辨率较高时,也应增加网络的深度以便在高分辨率图像中捕捉更多的细粒度模式和更多的像素。这些直觉表明,我们需要协调和平衡不同的尺度,而不是传统的一维尺度。

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

结果2:为了追求更高的精度和效率,在ConvNet缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的。

事实上,之前的一些工作(Zoph等,2018;Real等人(2019)已经尝试过任意平衡网络的宽度和深度,但它们都需要繁琐的手动调优。

在本文中,我们提出一个新的混合缩放方法compound scaling method,使用一个复合系数φ统一尺度网络宽度,深度,和解决原则

\begin{aligned} \text { depth: } d &=\alpha^{\phi} \\ \text { width: } w &=\beta^{\phi} \\ \text { resolution: } & r=\gamma^{\phi} \\ \text { s.t. } & \alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2 \\ & \alpha \geq 1, \beta \geq 1, \gamma \geq 1 \end{aligned}

α,β,γ是常量,可以由一个小网格搜索。凭直觉,φ是指定系数控制有多少更多的资源用于模型扩展,而α,β,γ指定如何将这些额外的资源分配给网络宽度、深度,分别解决。值得注意的是,正则卷积运算的失败与d w2 r2成正比,即。,将网络深度加倍将会加倍FLOPS,但将网络宽度或分辨率加倍将会使FLOPS增加4倍。回旋网自卷积操作通常在计算成本,扩展一个事先经过方程3大约会增加总失败α·β2·γ2φ。在这篇文章中,我们限制α·β2·γ2 2,任何新的φ,总失败approximately3增加2φ


4. EfficientNet Architectur

由于模型缩放不会改变基线网络中的层操作符F i,因此拥有一个良好的基线网络也很重要。我们将使用现有的ConvNets来评估我们的缩放方法,但是为了更好地证明我们的缩放方法的有效性,我们还开发了一个新的移动尺寸基线,称为efficient entnet。受(Tan et al., 2019)的启发,我们开发了我们的基线网络,利用多目标神经结构搜索,优化准确性和失败。具体来说,我们使用相同的搜索空间(Tan et al ., 2019),并使用ACC (m) (F垂下的S (m) / T) w作为优化目标,ACC (m)和F垂下的S (m)表示的准确性和失败模型m T是目标失败和w = -0.07是hyperparameter控制准确性和失败之间的权衡。不像(Tan等,2019;Cai等人,2019),这里我们优化了FLOPS而不是延迟,因为我们没有针对任何特定的硬件设备。我们的搜索产生了一个高效的网络,我们将其命名为efficient net - b0。由于我们使用与(Tan等,2019)相同的搜索空间,所以架构类似于MnasNet,除了我们的EfficientNet-B0略大,因为FLOPS目标更大(FLOPS目标是400M)。

表1显示了efficient entnet - b0的体系结构。其主要构建块是移动倒瓶颈MBConv (Sandler et al., 2018;此外,我们还添加了挤压和激励优化(Hu et al., 2018)。从基线effective net - b0开始,我们使用复合缩放方法对其进行了两个步骤的缩放

值得注意的是,可以获得更好的性能,寻找α,β,γ直接围绕一个大型模型,但是搜索成本更贵得让人望而却步的大模型。我们的方法解决了这个问题,只在小型基线网络上搜索一次(步骤1),然后对所有其他模型使用相同的比例系数(步骤2)


5. Experiment

ImageNet

Transfer Learning


6. Discussion

为了将我们提出的缩放方法从efficient entnet体系结构中分离出来,图8比较了不同缩放方法的ImageNet性能方法用于相同效率的net - b0基线网络。总的来说,所有的缩放方法都可以提高精度,但代价是更多的失败,但我们的复合缩放方法可以进一步提高精度,比其他单维缩放方法提高2.5%,这表明我们提出的复合缩放的重要性。

为了进一步理解为什么我们的复合缩放方法比其他方法更好,图7比较了几种具有代表性的模型的类激活图(Zhou et al., 2016)。所有这些模型都是从相同的基线进行缩放的,它们的统计数据如表7所示。从ImageNet验证集中随机抽取图像。如图所示,复合缩放模型更倾向于关注具有更多对象细节的相关区域,而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象。

7. Conclusion

在本文中,我们系统地研究了ConvNet缩放,并发现仔细平衡网络的宽度、深度和分辨率是一个重要但缺少的部分,这阻碍了我们获得更好的精度和效率。为了解决这个问题,我们提出了一个简单而高效的复合缩放方法,它使我们能够更有原则地将基线ConvNet缩放到任何目标资源约束,同时保持模型的效率。通过这种复合缩放方法,我们证明了一个mobilesize的有效网络模型可以非常有效地缩放,在ImageNet和五个常用的传输学习数据集上,以一个数量级更少的参数和更少的失败来超越最先进的精度。

发布了261 篇原创文章 · 获赞 137 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/91353858