EfficientNetv1:Rethinking Model Scaling for Convolutional Neural Networks

使用"神经结构搜索技术"搜索网络的深度(网络层数)、宽度(channel数量)、分辨率(网络输入),以在有限硬件资源的情况下,得到准确度最高的模型

什么是 EfficientNet ?

  • 模型缩放:指根据不同的资源限制(例如计算量、内存、延迟等),调整网络结构的过程,如深度(网络层数)、宽度(channel 数量)、分辨率 (网络输入),但是传统的缩放策略只调整其中的一项,而忽略不同项之间的影响
  • 复合模型缩放:在给定资源预算的情况下,同时均匀地缩放网络的深度、宽度和分辨率,使得每个维度都能得到合理的增长。具体来说,EfficientNet 定义了一个复合系数用来控制缩放的程度。例如,如果我们想要使用2N 倍的计算资源,那么我们可以将网络深度乘以1.8,将网络宽度乘以1.1,将分辨率乘以1.2

EfficientNet 如何确定“复合系数”?

  • 如果彻底的去搜索宽度、深度、图片分辨率的各种组合,搜索空间将无限大,EfficientNet 按照以下公式定义这三个维度的缩放,可以看出使用相同系数 ϕ\phi 缩放宽度、深度、图片分辨率,其中 α=1.2,β=1.1,γ=1.15\alpha=1.2,\beta=1.1,\gamma=1.15。基准模型 EfficientNet-B0就是 ϕ=1\phi=1 的参数上搜索得到,

    depth:d=αϕwidth:w=βϕresolution:r=γϕs.t.αβ2γ22α1,β1,γ1\begin{array}{c}\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\approx2\\ \alpha\ge1,\beta\ge1,\gamma\ge1\end{array}

  • 为啥要约束 αβ2γ2=2\alpha\cdot\beta^2\cdot\gamma^2=2? 这是因为这三个变量和计算量的关系如下公式,当约束 αβ2γ2=2\alpha\cdot\beta^2\cdot\gamma^2=2 时,可以很好控制计算量的增长,比如要增加到10 倍计算力时,令 2ϕ=102^\phi=10 即可求出缩放因子 ϕ\phi,

    αϕ(βϕ)2(γϕ)2=αϕ(β2)ϕ(γ2)ϕ=(αβ2γ2)ϕ\alpha^{\phi}\cdot\left(\beta^{\phi}\right)^2\cdot\left(\gamma^{\phi}\right)^2=\alpha^{\phi}\cdot\left(\beta^2\right)^{\phi}\cdot\left(\gamma^2\right)^{\phi}=\left(\alpha\cdot\beta^2\cdot\gamma^2\right)^{\phi}

EfficientNet 的网络结构?

  • EfficientNet-b0的结构[[MobileNetv2]]很类似,MBCConv借鉴Mobilev2“倒残差”瓶颈,并结合SEBlock

  • EfficientNet 有8个系列,分别从 b0-b7,,其中 b0是 baseline, b1-b7都是在 b0基础上对深度、宽度和分辨率进行调整

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Coefficients:   width,depth,res,dropout
    'efficientnet-b0': (1.0, 1.0, 224, 0.2),
    'efficientnet-b1': (1.0, 1.1, 240, 0.2),
    'efficientnet-b2': (1.1, 1.2, 260, 0.3),
    'efficientnet-b3': (1.2, 1.4, 300, 0.3),
    'efficientnet-b4': (1.4, 1.8, 380, 0.4),
    'efficientnet-b5': (1.6, 2.2, 456, 0.4),
    'efficientnet-b6': (1.8, 2.6, 528, 0.5),
    'efficientnet-b7': (2.0, 3.1, 600, 0.5),

EfficientNet 的 MBCConv 结构?

  • 类似 MobileV2“倒残差”瓶颈 ( Inverted Residuals Bottlenecks)结构,一样使用深度可分离卷积,有3个改变:(1)将 ReLU 激活函数缓存 Swish 激活函数;(2)不同的是在短连接部分使 SEBlock;(3)使用 DropConnect 方法来代替传统的 drop 方法

EfficientNet 的 NAS Search?

  • EfficientNet 通过复合的缩放方式,优化模型的准确率、显存占比和速度

参考:

  1. 细说EfficientNet - 知乎
  2. 一文读懂EfficientNet - 腾讯云开发者社区-腾讯云
  3. 解读《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》 - 知乎