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

编程入门 行业动态 更新时间:2024-10-25 01:24:14

【论文极速读】 Efficient Net:一种组合扩大<a href=https://www.elefans.com/category/jswz/34/1765938.html style=卷积网络规模的方法"/>

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

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

前言

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

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

github:

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

微信公众号


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

  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=Fk​⊙⋯F2​⊙F1​(X)=j=1⋯k⨀​Fj​(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=1⋯s⨀​FiLi​​(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,rmax​Accuracy(N(d,w,r))s.t.  N(d,w,r)=i=1⋯s⨀​F^id⋅L^i​​(X<r⋅H^i​,r⋅W^i​,w⋅C^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 d⋅L^i​,同时会对分辨率进行增大 r ⋅ H ^ i , r ⋅ W ^ i r \cdot \hat{H}_i, r \cdot \hat{W}_i r⋅H^i​,r⋅W^i​,对宽度进行增大 w ⋅ C ^ i w \cdot \hat{C}_i w⋅C^i​,当然也要满足对计算量FLOP和内存占用的约束。

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⋅γ2≈2α≥1,β≥1,γ≥1​(1-4)

正如(1-4)公式所示,作者通过在小型网络上进行网格搜索,搜索出基本参数 α , β , γ \alpha,\beta,\gamma α,β,γ,当然这些参数需要满足约束,特别是 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2 α⋅β2⋅γ2≈2。这个约束用于限制网络的计算复杂度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 flops∼d⋅w2⋅r2,通过约束其约等于2,可以保证最后的计算量控制在 ( d ⋅ w 2 ⋅ r 2 ) ϕ (d \cdot w^2 \cdot r^2)^{\phi} (d⋅w2⋅r2)ϕ,也即是约等于 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。

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].

[9]. .py

更多推荐

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

本文发布于:2024-02-08 20:49:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1674887.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:卷积   组合   极速   规模   方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!