深度学习系列 | 解读EfficientNet

论文原文:https://arxiv.org/pdf/1905.11946.pdf

1. Introduction

EfficientNet分为EfficientNet-B0至EfficientNet-B7八个模型。其中,EfficientNet-B0是整个EfficientNet系列的Baseline,EffficientNet-B1至EfficientNet-B7可视作 ϕ \phi ϕ(Compound Coefficient,混合系数)取不同值时的结果。

关于 ϕ \phi ϕ(Compound Coefficient,混合系数),见后续介绍。

先看下面这张图(Fig 1),EfficientNet在ImageNet数据集上几乎碾压了所有SOTA算法,足以见得其威力强大。
Model Size vs. ImageNet Accuracy

Fig 1. Model Size vs. ImageNet Accuracy

2. EfficientNet Architecture

2.1 Compounding Scaling

Compounding Scaling(混合缩放)可以说是整个EfficientNet的核心创新点。在说Compounding Scaling之前,先说说传统的缩放方式。

传统缩放Model的形式主要有三种:

  • Depth (d,深度):最常见的方法。深层次的网络可以捕获更加丰富和复杂的特性,并且具备更优的泛化能力。但是,由于深层次的网络在训练过程中更容易存在梯度消失的现象,也导致其很难训练,并且,达到一定深度之后的网络,在精度增益方面也是在减小的。
  • Width(w,宽度):常适用于小网络。更宽的网络往往能够捕获更细粒度的特征,并且更容易训练。但是,极宽但浅的网络往往难以捕获更高级别的特征(这里也可以理解为全局特征的捕获),并且,同Depth一样,达到一定宽度后就会精度饱和。这里的宽度指通道数(Channel)。
  • Resolution (r,分辨率):使用更高分辨率的输入图像可以让网络捕获更细粒度的特征。在低于某个threshold的情况下,更高的resolution有很好的精度提高,若resolution高于这个threshold,精度增益则开始下降。

限于d,w,r三者之间存在一定的关联,在不同计算资源条件下,其值是变化的。因此,传统的缩放方式仅在上述三个维度中,挑选一个维度进行缩放。

仅在某个维度下,进行缩放的TOP-1精度:

Scaling Up a Baseline Model with Different Network Width (w), Depth (d), and Resolution (r) Coefficients其中,FLOPS(floating point operations per second),意指每秒浮点运算次数。

Fig 2. Scaling Up a Baseline Model with Different Network Width (w), Depth (d), and Resolution (r) Coefficients

Fig 2非常直观地看出,单个维度缩放Model的效果。

鉴于单维度缩放Model的弊端,为提高缩放Model带来的效率,EfficientNet的作者提出了Compounding Scaling(混合缩放),这也是造就EfficientNet为什么efficient的核心原因(没有之一,/狗头保命)。

所谓的Compounding Scaling,其实非常简单,就是同时对刚刚所述的三个维度进行缩放(见Fig 3)。
Model Scaling

Fig 3. Model Scaling

那么,这就存在了一个问题,既然混合缩放的效果这么好(节约计算资源、快速提高精度等,就像模型名字一样),这是不是意味着我们只要一味增加宽度、深度和分辨率就可以了?答案自然是否定的。模型设计得太宽,太深,或者分辨率太高,在一开始的时候,增加这些特性是有用的,但很快就会饱和并容易过拟合,然后模型的参数会很多,效率开始变低(EfficientNet就变得不Efficient了)。那么,究竟应该如何平衡网络的深度、宽度和分辨率来提高模型的效率和准确率,让EfficientNet真的efficient?

为此,作者定义了一个Compound coefficient( ϕ \phi ϕ,由自己指定),将深度d、宽度w、分辨率r均统一在 ϕ \phi ϕ的旗下,受 ϕ \phi ϕ统一控制,来达到对三者的动态调整目的(见Fig 4)。

compound scaling method

Fig 4. compound scaling method

有了这个Compound coefficient之后,一切都变得简单起来,我们可用 ( α ∗ β 2 ∗ γ 2 ) ϕ (\alpha * \beta^2 * \gamma^2)^\phi (αβ2γ2)ϕ近似新增加的FLOPS,由于存在约束 α ∗ β 2 ∗ γ 2 ≈ 2 \alpha * \beta^2 * \gamma^2 \approx 2 αβ2γ22,所以新增加的FLOPS近似为 2 ϕ 2^\phi 2ϕ,方便控制在相同的FLOPS成本下,选择到最优的参数让EfficientNet变得Efficient。(其实,“EffficientNet-B1至EfficientNet-B7就是取了不同的 ϕ \phi ϕ。” 看到这,也自然就明白了本文一开始所说的这句话含义。)

2.2 EfficientNet-B0 baseline network

有了Compounding Scaling和Compound coefficient的概念后,就得知道EfficientNet的baseline是怎么一情况。

EfficientNet-B0的结构是通过MnasNet(multi-objective neural architecture search)搜索得到的,基本架构见Fig 5。

EfficientNet-B0 baseline network

Fig 5. EfficientNet-B0 baseline network

Fig 5中,MBConv指移动翻转瓶颈卷积(mobile inverted bottleneck convolution),有点类似于MobileNet-V2里的Inverted residuals。(其实就是在深度可分离卷积前,再加了一层逐点卷积。若想要进一步了解这一点,可见MobileNet的系列文章。)

2.3 Scale up

得到基线网络EfficientNet-B0后,通过下面两个步骤来进行模型缩放:

  1. 首先确定 ϕ = 1 \phi=1 ϕ=1,即有两倍的可用资源,并根据公式1和公式2进行 α , β , γ \alpha,\beta,\gamma αβγ的小网格搜索。作者找到了EfficientNet-B0满足约束的最佳值 α = 1.2 , β = 1.1 , γ = 1.15 \alpha=1.2,\beta=1.1,\gamma=1.15 α=1.2β=1.1γ=1.15
  2. α , β , γ \alpha,\beta,\gamma αβγ固定为常数,在 ϕ \phi ϕ取不同的值的情况下使用公式2缩放baseline,从而获得EfficientNet-B1至B7。

公式1:

公式1

公式2:

公式2
以上就是通过baseline来缩放,得到EfficientNet-B1至EfficientNet-B7的步骤。

3. Performence

学习完EfficientNet的核心思想及如何通过其baseline(EfficientNet-B0)缩放得到EfficientNet-B1至EfficientNet-B7,紧接着,最重要的自然是缩放之后,Model能有什么样的表现了。

在ImageNet数据集上,Efficient-B0至Efficient-B7的表现越来越好,Top-1精度在Efficient-B7上达到84.3%,Top-5精度更是达到了97.0%,可以说相当diao了。(见Fig 6)

在这里插入图片描述

Fig 6. EfficientNet Performance Results on ImageNet

以上就是关于EfficientNet的核心内容,为了突出重点,这里没有对文章内容进行逐一涉猎,只选择了部分最为重要的内容,也是为了方便读者能快速对EfficientNet形成概念和认识。原文还讲了混合缩放在迁移学习上的表现、利用CAM表征混合缩放的效果等方面内容,若读者有深入了解的兴趣,可点击原文链接进行详细阅读。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值