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

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

前言

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

∇ \nabla 联系方式:
e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

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

微信公众号

qrcode


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

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

然而单独提高深度/宽度/分辨率很容易达到性能的饱和,如Fig 1.1所示,EfficientNet考虑如何以一种合适的方式,组合性地同时提高深度+宽度+分辨率。对于一个卷积网络而言,第 i i i层的卷积网络可定义为 Y i = F i ( X i ) Y_i = \mathcal{F}_i(X_i) Yi=Fi(Xi),其中 X i , Y i X_i,Y_i Xi,Yi为输入和输出,而 F i ( ⋅ ) \mathcal{F}_i(\cdot) Fi()为卷积算子,其中 X i X_i Xi的形状为 < H i , W i , C i > <H_i,W_i,C_i> <Hi,Wi,Ci>。因此一个完整的卷积网络 N \mathcal{N} N可以表示为若干个卷积层的层叠,表示为:
N = F k ⊙ ⋯ F 2 ⊙ F 1 ( X ) = ⨀ j = 1 ⋯ k F j ( X ) (1-1) \mathcal{N} = \mathcal{F}_k \odot \cdots \mathcal{F}_2 \odot \mathcal{F}_1 (X) = \bigodot_{j=1\cdots k} \mathcal{F}_j (X) \tag{1-1} N=FkF2F1(X)=j=1kFj(X)(1-1)
考虑到当前流行的卷积网络设计方法,都会考虑将整个卷积网络划分为多个stage,然后每个stage内进行若干层相同结构卷积层的层叠,那么卷积网络可以表示为(1-2),其中的 F i L i \mathcal{F}_i^{L_i} FiLi表示第 i i i个stage的 F i \mathcal{F_i} Fi层叠了 L i L_i Li次。那么提高网络的宽度可以认为是提高 C i C_i Ci,提高深度就是提高 L i L_i Li,提高分辨率就是在提高 H i , W i H_i,W_i Hi,Wi,当然这一切的前提是固定卷积算子 F i \mathcal{F}_i Fi的架构。即便只考虑 L i , H i , W i , C i L_i,H_i,W_i,C_i Li,Hi,Wi,Ci,整个超参数空间依然是非常地大,作者在本文正是提供了一种策略对这些超参数进行搜索,最终搜索出来的参数 d , w , r d,w,r d,w,r需要满足最优化目标和条件(1-3)。
N = ⨀ i = 1 ⋯ s F i L i ( X < H i , W i , C i > ) (1-2) \mathcal{N} = \bigodot_{i=1\cdots s} \mathcal{F}_{i}^{L_i} (X_{<H_i, W_i, C_i>}) \tag{1-2} N=i=1sFiLi(X<Hi,Wi,Ci>)(1-2)

max ⁡ d , w , r A c c u r a c y ( N ( d , w , r ) ) s . t .    N ( d , w , r ) = ⨀ i = 1 ⋯ s F ^ i d ⋅ L ^ i ( X < r ⋅ H ^ i , r ⋅ W ^ i , w ⋅ C ^ i > ) M e m o r y ( N ) ≤ t a r g e t _ m e m o r y F L O P s ( N ) ≤ t a r g e t _ f l o p s (1-3) \max_{d,w,r} \mathrm{Accuracy}(\mathcal{N}(d,w,r)) \\ s.t. \ \ \mathcal{N}(d,w,r) = \bigodot_{i=1\cdots s} \mathcal{\hat{F}}_{i}^{d \cdot \hat{L}_i} (X_{<r \cdot \hat{H}_i, r \cdot \hat{W}_i, w \cdot \hat{C}_i >}) \\ \mathrm{Memory}(\mathcal{N}) \leq \mathrm{target\_memory} \\ \mathrm{FLOPs}(\mathcal{N}) \leq \mathrm{target\_flops} \tag{1-3} d,w,rmaxAccuracy(N(d,w,r))s.t.  N(d,w,r)=i=1sF^idL^i(X<rH^i,rW^i,wC^i>)Memory(N)target_memoryFLOPs(N)target_flops(1-3)

可看到最终搜索出来的参数 d , w , r d,w,r d,w,r将会对深度进行增大 d ⋅ L ^ i d \cdot \hat{L}_i dL^i,同时会对分辨率进行增大 r ⋅ H ^ i , r ⋅ W ^ i r \cdot \hat{H}_i, r \cdot \hat{W}_i rH^i,rW^i,对宽度进行增大 w ⋅ C ^ i w \cdot \hat{C}_i wC^i,当然也要满足对计算量FLOP和内存占用的约束。

standalone_wdr_enlarge

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

D e p t h : d = α ϕ W i d t h : w = β ϕ R e s o l u t i o n : r = γ ϕ s . t .    α ⋅ β 2 ⋅ γ 2 ≈ 2 α ≥ 1 , β ≥ 1 , γ ≥ 1 (1-4) \begin{aligned} \mathrm{Depth}: & d= \alpha^{\phi} \\ \mathrm{Width}: & w= \beta^{\phi} \\ \mathrm{Resolution}: & r= \gamma^{\phi} \\ s.t. \ \ & \alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2 \\ & \alpha \geq 1, \beta \geq 1, \gamma \geq 1 \end{aligned} \tag{1-4} Depth:Width:Resolution:s.t.  d=αϕw=βϕr=γϕαβ2γ22α1,β1,γ1(1-4)

正如(1-4)公式所示,作者通过在小型网络上进行网格搜索,搜索出基本参数 α , β , γ \alpha,\beta,\gamma α,β,γ,当然这些参数需要满足约束,特别是 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2 αβ2γ22。这个约束用于限制网络的计算复杂度FLOPs,我们知道一般的卷积网络的计算复杂度正比于 d , w 2 , r 2 d,w^2,r^2 d,w2,r2,也即是 f l o p s ∼ d ⋅ w 2 ⋅ r 2 flops \sim d \cdot w^2 \cdot r^2 flopsdw2r2,通过约束其约等于2,可以保证最后的计算量控制在 ( d ⋅ w 2 ⋅ r 2 ) ϕ (d \cdot w^2 \cdot r^2)^{\phi} (dw2r2)ϕ,也即是约等于 2 ϕ 2^{\phi} 2ϕ。作者采用的参数搜索策略是这样的:

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

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

efficientnet_b0

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

efficientnet_b0_detail

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FesianXu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值