yahei · 2019年10月31日

EfficientNet:模型设计新范式

唔~2019年的图像特征提取方面似乎有了可喜的发展,大家不再盲目地堆大模型,而是寻找更加高效的特征提取结构,在显著减小参数量和计算量的同时模型的表现还能得到提升。同时我们可以看到深度可分离卷积及其变种几乎已经成为主流——
imagenet_sota.png

接下来我将分三次分别介绍今年Google Brain的几篇思路清奇的论文,首先是《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019ICML)》。
该论文的主要贡献在于简化模型缩放流程,统合了宽度、深度、分辨率三个维度的缩放,建立起一个简单有效的联系

模型缩放

在设计好模型结构的情况下,我们通常可以通过对模型的缩放,以增大模型的大小来换取模型表现的提升,或以牺牲模型表现为代价换取模型大小的减小。最常用的缩放维度有三个——深度、宽度和输入分辨率

  • 深度

    • 更深的网络往往能提取到更佳丰富和复杂的特征,并且有更强的泛化能力
    • 但深层网络存在训练难的问题,尽管shortcut、BN等技术缓解了这一问题,但随着网络的加深边际收益依旧会明显变小
    • 比如ResNet18、ResNet34、ResNet50、ResNet101、ResNet152,其数字代表的是模型中卷积层和全连接层数量(不考虑shortcut上用于downsample的卷积);VGG11、VGG13、VGG16、VGG19,其数字代表的是模型中卷积层和全连接层数量——这是一种典型的深度缩放
  • 宽度

    • 更宽的网络往往能提取更细粒度的特征,并且也更容易训练(同时足够宽的网络能够容许Dropout和BN技术兼容使用,比如WideResNet)
    • 比如MobileNet1.0、MobileNet0.75、MobileNet0.5、MobileNet0.25,其数字代表的是模型中卷积通道数量的缩放因子,除此之外还有常见的WideResNet,这是一种典型的宽度缩放
  • 输入分辨率缩放更为常见,通过增加输入图片的尺寸,可以保留更多信息,从而提升模型的表现
  • 除此之外,下采样策略也是一种缩放维度,提前下采样可以缩小模型,反之则会增大模型

    • 下采样策略可以看作更细粒度的输入分辨率缩放,它控制的是中间特征图的分辨率而非简单的模型输入分辨率
    • 比如FD-MobileNet采用快速下采样策略并提升模型宽度,在保持模型大小几乎不变的情况下提高模型的特征提取能力

论文作者做了简单的实验,表明单一放大某一因素,其边际收益是不断减小的——
(其中,w, d, r分别表示宽度(Width)、深度(Depth)、分辨率(Resolution)的缩放因子)
scales.png

混合缩放

此前已经有其他论文(如《Searching for Activation Functions(2017)》和《Regularized Evolution for Image Classifier Architecture Search(2019AAAI)》)讨论过多个缩放维度混合的模型缩放策略,而本文则是为深度、宽度、输入分辨率的缩放建立一个简单但有效的联系,从而简化缩放因子的选取过程。
其实思路非常简单,首先定义这三个缩放因子为$d$, $w$, $r$,并且让他们同步增长

$$ d = \alpha^\phi \\ w = \beta^\phi \\ r = \gamma^\phi $$

那么此时模型的计算量会增长为大约原来的$(\alpha \cdot \beta^2 \cdot \gamma^2) ^ \phi$倍;
为了简单起见,作者约束了$\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$,计算量随$\phi$增长为原来的$2^\phi$倍,这样一来只需要找到合适的$\alpha, \beta, \gamma$,然后调整$\phi$的值就可以实现简单的混合缩放。

EfficientNet模型设计

在上述基础上,作者提出了一种新的模型设计范式,并得到了EfficientNet系列模型——

  1. 用NAS搜索出符合预期大小的一个小模型,这里作者设定了计算量目标为400MFLOPS,于是搜出了一个跟MNasNet类似的小模型B0
    EfficientNetB0.png
    这里的Operator沿用了MNasNet的命名方式,MBConv1指的是MobileNetv1的原版深度可分离卷积,MBConv6指的是MobileNetv2的反残差结构,不过作者在论文中指出这里使用的是带SE模块的反残差结构
  2. 接下来通过网格搜索,找出满足$\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$的最优超参$\alpha, \beta, \gamma$,进而得到B1
    如作者搜索出来的结果为$\alpha=1.2, \beta=1.1, \gamma=1.15$,此时B1计算量约为800MFLOPS
  3. 按照混合缩放的公式,逐步增加$\phi$值,依次得到各种规模下的B2-B7

由此设计出来的模型有着相当惊人的特征提取效率,而且小模型的搜索空间比较小,更容易搜索出最优模型,搭配合理的模型缩放,放大后的模型甚至能比直接搜索的大模型更加有效——
compare_graph.png
compare_table.png

原文链接:https://hey-yahei.cn/2019/10/...

推荐阅读
关注数
286
内容数
26
计算机视觉相关学习笔记,欢迎关注。[链接]
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息