EfficientNet: 重新思考卷积神经网络的模型缩放技术
EfficientNet 是一种创新的神经网络架构,它通过一种称为"复合缩放"(compound scaling)的方法,实现了在准确率和效率之间的优异平衡。这篇论文由谷歌研究团队的 Mingxing Tan 和 Quoc V. Le 在 2019 年发表,提出了一种系统性的方法来扩展神经网络的规模,从而在资源有限的情况下获得更高的性能。本文将详细解析EfficientNet的核心思想、技术创新与实验结果。
1. 研究背景与动机
1.1 神经网络缩放的重要性
卷积神经网络(ConvNets)的规模对其性能有着显著影响。大型网络通常能够捕获更复杂的特征并实现更高的准确率,但也需要更多的计算资源和内存。因此,如何高效地扩展神经网络,成为深度学习研究中的一个重要问题。
1.2 传统缩放方法的局限性
传统的卷积神经网络(ConvNets)通常是在固定资源预算下开发的,然后如果有更多资源可用,就通过增加网络规模来提高准确率。常见的缩放方法有:
- 深度缩放(Depth Scaling):增加网络层数,如从ResNet-18扩展到ResNet-200。深层网络能够学习更复杂的特征并提高非线性表达能力,但可能面临梯度消失问题。
- 宽度缩放(Width Scaling):增加每层的通道数,如WideResNet和MobileNets。更宽的网络可以捕获更细粒度的特征并且训练更容易,但超宽网络可能难以捕获高级特征。
- 分辨率缩放(Resolution Scaling):增加输入图像的尺寸,如从224×224扩展到480×480。更高分辨率的输入可以帮助网络捕获更多细节,但计算成本会显著增加。
然而,传统上这些缩放维度通常是单独调整的,而没有系统性地考虑它们之间的相互关系。这种做法往往导致次优的准确率和效率。论文研究表明,任意缩放这些维度需要繁琐的手动调整,并且通常会产生次优的准确率和效率。
2. 研究发现与方法
2.1 关键观察
作者通过系统性研究不同缩放方法的效果,提出了两个重要观察:
观察1:增加网络的宽度、深度或分辨率任何一个维度都能提高准确率,但对于更大的模型,准确率增益会逐渐减少。
作者进行了一系列实验,分别缩放网络的深度、宽度和分辨率,结果如下:
- 深度缩放:当深度系数从d=1.0增加到d=8.0时,准确率从76%提高到80%,但随后增益变得很小。
- 宽度缩放:当宽度系数从w=1.0增加到w=5.0时,准确率从76%提高到80%左右,但继续增加宽度收益递减。
- 分辨率缩放:当分辨率从r=1.0(224×224)增加到r=2.5(560×560)时,准确率也从76%提高到80%左右,但高分辨率的收益递减明显。
观察2:为了追求更好的准确率和效率,在扩展网络规模时平衡宽度、深度和分辨率这三个维度至关重要。
作者发现,在不同基线网络下比较宽度缩放效果时,当同时增加深度(d=2.0)和分辨率(r=2.0)时,相同FLOPS下可以获得更高的准确率。这表明不同缩放维度不是独立的,需要协调和平衡。
2.2 复合缩放法(Compound Scaling Method)
基于上述观察,作者提出了一种新颖的复合缩放方法,该方法使用统一的系数来同时缩放网络的宽度、深度和分辨率:
深度: d = α ϕ 宽度: w = β ϕ 分辨率: r = γ ϕ 约束条件: α ⋅ β 2 ⋅ γ 2 ≈ 2 α ≥ 1 , β ≥ 1 , γ ≥ 1 \begin{aligned} \text{深度:} d &= \alpha^\phi \\ \text{宽度:} w &= \beta^\phi \\ \text{分辨率:} r &= \gamma^\phi \\ \text{约束条件:} \alpha \cdot \beta^2 \cdot \gamma^2 &\approx 2 \\ \alpha \geq 1, \beta \geq 1, \gamma &\geq 1 \end{aligned} 深度:d宽度:w分辨率:r约束条件:α⋅β2⋅γ2α≥1,β≥1,γ=αϕ=βϕ=γϕ≈2≥1
其中:
- ϕ \phi ϕ 是用户指定的系数,控制可用于模型缩放的资源
- α \alpha α, β \beta β, γ \gamma γ 是常数,可以通过小型网格搜索确定
- 约束条件 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 α⋅β2⋅γ2≈2 保证了当 ϕ \phi ϕ 增加1时,总体FLOPS(浮点运算次数)大约增加2倍
这种复合缩放方法的直观理解是:
- 如果输入图像更大,网络需要更多层来增加感受野,以捕获更大图像上的相似特征
- 同时,网络也需要更多通道来捕获更大图像上更细粒度的模式
- 网络深度、宽度和分辨率三个维度应该协调增长,而不是独立缩放
2.3 复合缩放法的理论基础
常规卷积操作的FLOPS计算如下:
FLOPS ∝ d ⋅ w 2 ⋅ r 2 \text{FLOPS} \propto d \cdot w^2 \cdot r^2 FLOPS∝d⋅w2⋅r2
其中:
- d d d 代表网络深度(层数)
- w w w 代表网络宽度(通道数)
- r r r 代表输入分辨率
因此:
- 将网络深度加倍,FLOPS也会加倍
- 将网络宽度或分辨率加倍,FLOPS会增加4倍
这就是为什么约束条件设为 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 α⋅β2⋅γ2≈2,因为这确保了对于任何新的 ϕ \phi ϕ 值,总FLOPS将大约增加 2 ϕ 2^\phi 2ϕ 倍。
3. EfficientNet 架构
为了更好地展示复合缩放方法的有效性,作者开发了一个新的基准网络,称为 EfficientNet-B0,并对其进行缩放以创建一系列更大的模型。
3.1 基准网络设计
EfficientNet-B0 基准网络利用多目标神经架构搜索(NAS)优化,同时考虑准确率和计算效率。具体地,作者使用与MnasNet相同的搜索空间,并将优化目标设定为:
ACC ( m ) × [ FLOPS ( m ) / T ] w \text{ACC}(m) \times [\text{FLOPS}(m)/T]^w ACC(m)×[FLOPS(m)/T]w
其中:
- ACC ( m ) \text{ACC}(m) ACC(m) 和 FLOPS ( m ) \text{FLOPS}(m) FLOPS(m) 分别代表模型 m m m 的准确率和FLOPS
- T T T 是目标FLOPS
- w = − 0.07 w=-0.07 w=−0.07 是用于控制准确率和FLOPS之间权衡的超参数
EfficientNet-B0的主要构建模块是移动反向瓶颈卷积(MBConv, Mobile Inverted Bottleneck Convolution),并添加了挤压-激励(Squeeze-and-Excitation)优化。MBConv首先由MobileNetV2提出,具有以下特点:
- 使用1×1卷积扩展通道数(通常扩展6倍)
- 使用深度可分离卷积进行高效特征提取
- 使用1×1卷积将通道数降回原来水平
- 添加残差连接以改善梯度流
EfficientNet-B0的架构详细信息如下表所示:
阶段 | 操作符 | 分辨率 | 通道数 | 层数 |
---|---|---|---|---|
1 | Conv3x3 | 224×224 | 32 | 1 |
2 | MBConv1, k3x3 | 112×112 | 16 | 1 |
3 | MBConv6, k3x3 | 112×112 | 24 | 2 |
4 | MBConv6, k5x5 | 56×56 | 40 | 2 |
5 | MBConv6, k3x3 | 28×28 | 80 | 3 |
6 | MBConv6, k5x5 | 14×14 | 112 | 3 |
7 | MBConv6, k5x5 | 14×14 | 192 | 4 |
8 | MBConv6, k3x3 | 7×7 | 320 | 1 |
9 | Conv1x1 & Pooling & FC | 7×7 | 1280 | 1 |
其中:
- MBConv1表示扩展因子为1的MBConv(即不扩展通道数)
- MBConv6表示扩展因子为6的MBConv
- k3x3和k5x5表示卷积核大小
3.2 EfficientNet 系列缩放
从EfficientNet-B0基准网络出发,作者应用复合缩放方法分两步进行缩放:
步骤1:固定 ϕ = 1 \phi = 1 ϕ=1,假设资源增加一倍,进行小规模网格搜索确定 α \alpha α, β \beta β, γ \gamma γ 的最佳值。对于EfficientNet-B0,最佳值为 α = 1.2 \alpha = 1.2 α=1.2, β = 1.1 \beta = 1.1 β=1.1, γ = 1.15 \gamma = 1.15 γ=1.15,满足约束条件 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 α⋅β2⋅γ2≈2。
步骤2:固定 α \alpha α, β \beta β, γ \gamma γ 为常量,使用不同的 ϕ \phi ϕ 值缩放基准网络,得到EfficientNet-B1到B7。
这种两步缩放方法的优势在于,只需要在小型基准网络上搜索一次 α \alpha α, β \beta β, γ \gamma γ 值(步骤1),然后就可以使用相同的缩放系数来扩展所有其他模型(步骤2)。这避免了在更大的模型上进行昂贵的搜索。
4. 实验结果
4.1 在现有网络上应用复合缩放法
为了验证复合缩放法的有效性,作者将其应用于现有的流行网络,包括MobileNetV1、MobileNetV2和ResNet-50。
实验结果如下表所示:
模型 | FLOPS | Top-1 准确率 |
---|---|---|
基准 MobileNetV1 | 0.6B | 70.6% |
通过宽度缩放 MobileNetV1 (w=2) | 2.2B | 74.2% |
通过分辨率缩放 MobileNetV1 (r=2) | 2.2B | 72.7% |
复合缩放 MobileNetV1 (d=1.4, w=1.2, r=1.3) | 2.3B | 75.6% |
基准 MobileNetV2 | 0.3B | 72.0% |
通过深度缩放 MobileNetV2 (d=4) | 1.2B | 76.8% |
通过宽度缩放 MobileNetV2 (w=2) | 1.1B | 76.4% |
通过分辨率缩放 MobileNetV2 (r=2) | 1.2B | 74.8% |
复合缩放 MobileNetV2 | 1.3B | 77.4% |
基准 ResNet-50 | 4.1B | 76.0% |
通过深度缩放 ResNet-50 (d=4) | 16.2B | 78.1% |
通过宽度缩放 ResNet-50 (w=2) | 14.7B | 77.7% |
通过分辨率缩放 ResNet-50 (r=2) | 16.4B | 77.5% |
复合缩放 ResNet-50 | 16.7B | 78.8% |
结果表明,与单维度缩放方法相比,复合缩放方法在所有这些网络上都能显著提高准确率,证明了该方法对一般现有ConvNets的有效性。
4.2 ImageNet上的结果
作者在ImageNet数据集上训练了EfficientNet系列模型(B0-B7),使用以下设置:
- RMSProp优化器,衰减0.9,动量0.9
- 批量归一化动量0.99
- 权重衰减1e-5
- 初始学习率0.256,每2.4个epochs衰减0.97
- 使用Swish激活函数
- 使用AutoAugment进行数据增强
- 使用随机深度(stochastic depth)进行正则化,存活概率为0.8
- 从EfficientNet-B0到B7线性增加Dropout比例(从0.2到0.5)
EfficientNet模型在ImageNet数据集上取得了令人印象深刻的结果:
模型 | Top-1 准确率 | Top-5 准确率 | 参数数量 | FLOPS |
---|---|---|---|---|
EfficientNet-B0 | 77.1% | 93.3% | 5.3M | 0.39B |
EfficientNet-B1 | 79.1% | 94.4% | 7.8M | 0.70B |
EfficientNet-B2 | 80.1% | 94.9% | 9.2M | 1.0B |
EfficientNet-B3 | 81.6% | 95.7% | 12M | 1.8B |
EfficientNet-B4 | 82.9% | 96.4% | 19M | 4.2B |
EfficientNet-B5 | 83.6% | 96.7% | 30M | 9.9B |
EfficientNet-B6 | 84.0% | 96.8% | 43M | 19B |
EfficientNet-B7 | 84.3% | 97.0% | 66M | 37B |
与现有最先进模型的对比:
- EfficientNet-B7达到了84.3%的top-1准确率,与当时最先进的GPipe模型(84.3%)相当,但参数量减少了8.4倍(66M vs 557M),推理速度提高了6.1倍
- 与广泛使用的ResNet-50相比,EfficientNet-B4将top-1准确率从76.3%提高到83.0%(+6.7%),同时FLOPS相似
- EfficientNet-B3比ResNeXt-101高0.7%准确率,但使用的FLOPS少18倍
这些结果表明,EfficientNet不仅规模小,而且计算效率高。作者还测量了CPU上的实际推理延迟:
- EfficientNet-B1比ResNet-152快5.7倍
- EfficientNet-B7比GPipe快约6.1倍
4.3 迁移学习结果
作者还评估了EfficientNet在八个广泛使用的迁移学习数据集上的性能:
- CIFAR-10
- CIFAR-100
- Birdsnap
- Stanford Cars
- Flowers
- FGVC Aircraft
- Oxford-IIIT Pets
- Food-101
实验采用ImageNet预训练的检查点,然后在新数据集上微调。结果如下:
数据集 | 最佳公开可用模型 | 准确率 | 参数数量 | EfficientNet模型 | 准确率 | 参数数量(比率) |
---|---|---|---|---|---|---|
CIFAR-10 | NASNet-A | 98.0% | 85M | EfficientNet-B0 | 98.1% | 4M (21x) |
CIFAR-100 | NASNet-A | 87.5% | 85M | EfficientNet-B0 | 88.1% | 4M (21x) |
Birdsnap | Inception-v4 | 81.8% | 41M | EfficientNet-B5 | 82.0% | 28M (1.5x) |
Stanford Cars | Inception-v4 | 93.4% | 41M | EfficientNet-B3 | 93.6% | 10M (4.1x) |
Flowers | Inception-v4 | 98.5% | 41M | EfficientNet-B5 | 98.5% | 28M (1.5x) |
FGVC Aircraft | Inception-v4 | 90.9% | 41M | EfficientNet-B3 | 90.7% | 10M (4.1x) |
Oxford-IIIT Pets | ResNet-152 | 94.5% | 58M | EfficientNet-B4 | 94.8% | 17M (5.6x) |
Food-101 | Inception-v4 | 90.8% | 41M | EfficientNet-B4 | 91.5% | 17M (2.4x) |
与最先进的结果相比:
数据集 | 最佳报告模型 | 准确率 | 参数数量 | EfficientNet模型 | 准确率 | 参数数量(比率) |
---|---|---|---|---|---|---|
CIFAR-10 | GPipe | 99.0% | 556M | EfficientNet-B7 | 98.9% | 64M (8.7x) |
CIFAR-100 | GPipe | 91.3% | 556M | EfficientNet-B7 | 91.7% | 64M (8.7x) |
Birdsnap | GPipe | 83.6% | 556M | EfficientNet-B7 | 84.3% | 64M (8.7x) |
Stanford Cars | DAT | 94.8% | - | EfficientNet-B7 | 94.7% | - |
Flowers | DAT | 97.7% | - | EfficientNet-B7 | 98.8% | - |
FGVC Aircraft | DAT | 92.9% | - | EfficientNet-B7 | 92.9% | - |
Oxford-IIIT Pets | GPipe | 95.9% | 556M | EfficientNet-B6 | 95.4% | 41M (14x) |
Food-101 | GPipe | 93.0% | 556M | EfficientNet-B7 | 93.0% | 64M (8.7x) |
总结:
- 与公开可用模型相比,EfficientNet模型平均减少了4.7倍(最高21倍)的参数,同时实现了更好的准确率。
- 与最先进模型相比,包括动态自适应迁移学习(DAT)和使用专门的流水线并行库训练的GPipe,EfficientNet模型在8个数据集中的5个上超过了它们的准确率,同时平均减少了9.6倍参数。
5. 可视化分析
为了更好地理解为什么复合缩放方法优于其他方法,作者比较了不同缩放方法的类激活图(Class Activation Map, CAM)。选取了几个有代表性的模型进行比较,这些模型都从相同的基线缩放而来:
模型 | FLOPS | Top-1 准确率 |
---|---|---|
基准模型 (EfficientNet-B0) | 0.4B | 77.3% |
通过深度缩放 (d=4) | 1.8B | 79.0% |
通过宽度缩放 (w=2) | 1.8B | 78.9% |
通过分辨率缩放 (r=2) | 1.9B | 79.1% |
复合缩放 (d=1.4, w=1.2, r=1.3) | 1.8B | 81.1% |
结果表明,使用复合缩放的模型倾向于关注更多相关区域和更多对象细节,而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象。这直观地解释了为什么复合缩放模型能够实现更高的准确率。
6. 复合缩放法的进一步分析
为了更清楚地了解复合缩放法的贡献,作者分离了缩放方法与EfficientNet架构的影响,对EfficientNet-B0基准网络使用不同的缩放方法进行比较。
结果表明:
- 所有缩放方法都能随着FLOPS增加而提高准确率
- 复合缩放法能够比其他单维度缩放法提高多达2.5%的准确率
- 当FLOPS增加到5亿以上时,复合缩放法与单维度缩放法的差距更加明显
这充分证明了复合缩放法的重要性,并强调了在神经网络缩放中平衡不同维度的必要性。
7. 结论与意义
7.1 主要贡献
EfficientNet的主要贡献包括:
- 复合缩放方法:提出了一种简单而高效的复合缩放方法,使用复合系数统一缩放网络宽度、深度和分辨率,解决了卷积神经网络缩放中的一个重要但缺失的部分
- 系统性研究:系统性研究了模型缩放的影响,发现平衡网络宽度、深度和分辨率可以获得更好的性能
- EfficientNet架构:开发了新的EfficientNet系列模型,在ImageNet和多种迁移学习数据集上取得了最先进的性能,同时大幅减少了模型大小和计算成本
7.2 实践意义
EfficientNet的成功为未来的神经网络设计提供了重要启示:
- 平衡不同维度:在网络缩放中平衡不同维度至关重要,而不是仅关注单一维度的扩展
- 资源高效模型:对于资源受限的环境(如移动设备)特别有价值,因为它允许以最少的资源获得最大的性能提升
- 迁移学习能力:EfficientNet展示了出色的迁移学习能力,表明其学习的特征具有很好的泛化性
EfficientNet参考文献
- Tan, M., & Le, Q. V. (2019). EfficientNet: Rethinking model scaling for convolutional neural networks. Proceedings of the 36th International Conference on Machine Learning (ICML), 6105-6114.