【论文极速读】 Efficient Net:一种组合扩大卷积网络规模的方法

最近笔者需要基于Efficient Net作为图片编码器进行实验,之前一直没去看原论文,今天抽空去翻了下原论文,简单记下笔记。

FesianXu 20220313 at Baidu Search Team

前言

最近笔者需要基于Efficient Net作为图片编码器进行实验,之前一直没去看原论文,今天抽空去翻了下原论文,简单记下笔记。如有谬误请联系指出,本文遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明并且联系笔者,谢谢

联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:机器学习杂货铺3号店


前人的研究证实了,一种有效提高卷积网络性能的方法是:

  1. 增大卷积网络的深度,比如经典的ResNet [2]
  2. 增大卷积网络的宽度,比如Wide Residual Network [3]
  3. 增大卷积网络输入图片的分辨率,比如[4,5,6]

然而单独提高深度/宽度/分辨率很容易达到性能的饱和,如Fig 1.1所示,EfficientNet考虑如何以一种合适的方式,组合性地同时提高深度+宽度+分辨率。对于一个卷积网络而言,第层的卷积网络可定义为,其中为输入和输出,而为卷积算子,其中的形状为。因此一个完整的卷积网络可以表示为若干个卷积层的层叠,表示为: 考虑到当前流行的卷积网络设计方法,都会考虑将整个卷积网络划分为多个stage,然后每个stage内进行若干层相同结构卷积层的层叠,那么卷积网络可以表示为(1-2),其中的表示第个stage的层叠了次。那么提高网络的宽度可以认为是提高,提高深度就是提高,提高分辨率就是在提高,当然这一切的前提是固定卷积算子的架构。即便只考虑,整个超参数空间依然是非常地大,作者在本文正是提供了一种策略对这些超参数进行搜索,最终搜索出来的参数需要满足最优化目标和条件(1-3)。

可看到最终搜索出来的参数将会对深度进行增大,同时会对分辨率进行增大,对宽度进行增大,当然也要满足对计算量FLOP和内存占用的约束。

Fig 1.1 单独提高宽度,深度和分辨率容易达到性能的饱和。

正如(1-4)公式所示,作者通过在小型网络上进行网格搜索,搜索出基本参数,当然这些参数需要满足约束,特别是。这个约束用于限制网络的计算复杂度FLOPs,我们知道一般的卷积网络的计算复杂度正比于,也即是,通过约束其约等于2,可以保证最后的计算量控制在,也即是约等于。作者采用的参数搜索策略是这样的:

  1. 首先控制,然后以MBConv [7]为基础模块,对进行网格搜索,最后搜索出,这个的网络命名为EfficientNet B0
  2. 固定,通过选择不同的从而实现对EfficientNet的尺度增大,从而得到EfficientNet B0 ~EfficientNet B7

最终得到的EfficientNet B0网络见Fig 1.2所示,其网络结构图可见Fig 1.3,最终各个版本的EfficientNet见Table 1。

Fig 1.2 Efficient Net B0基础网络的深度,宽度和分辨率设置,其基础模块采用MBConv。
Table 1 搜索出来的各个维度的参数系数 [9]。
Model-typewidth_coefficientdepth_coefficientresolutiondropout_rate
Efficientnet-b01.01.02240.2
Efficientnet-b11.01.12400.2
Efficientnet-b21.11.22600.3
Efficientnet-b31.21.43000.3
Efficientnet-b41.41.83800.4
Efficientnet-b51.62.24560.4
Efficientnet-b61.82.65280.5
Efficientnet-b72.03.16000.5
Efficientnet-b82.23.66720.5
Efficientnet-l24.35.38000.5

Fig 1.3 Effcient Net B0的网络结构图,其中的MBConv1和MBConv6结构有些细微区别。[8]

Reference

[1]. Tan, Mingxing, and Quoc Le. "Efficientnet: Rethinking model scaling for convolutional neural networks." In International conference on machine learning, pp. 6105-6114. PMLR, 2019.

[2].He, K., Zhang, X., Ren, S., and Sun, J. Deep residual learning for image recognition. CVPR, pp. 770–778, 2016.

[3]. Zagoruyko, S. and Komodakis, N. Wide residual networks. BMVC, 2016.

[4]. Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., and Wojna, Z. Rethinking the inception architecture for computer vision. CVPR, pp. 2818–2826, 2016.

[5]. Zoph, B., Vasudevan, V., Shlens, J., and Le, Q. V. Learning transferable architectures for scalable image recognition. CVPR, 2018.

[6]. Huang, Y., Cheng, Y., Chen, D., Lee, H., Ngiam, J., Le, Q. V., and Chen, Z. Gpipe: Efficient training of giant neural networks using pipeline parallelism. arXiv preprint arXiv:1808.07233, 2018.

[7]. Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., and Chen, L.-C. Mobilenetv2: Inverted residuals and linear bottlenecks. CVPR, 2018.

[8]. https://www.researchgate.net/figure/The-structure-of-an-EfficientNetB0-model-with-the-internal-structure-of-MBConv1-and_fig2_351057828

[9]. https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/efficientnet_builder.py