谷歌efficientnet加速模型解读

谷歌在2019年5月发表了新论文 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks ICML 2019

这篇论文主要讲述了如何利用复合系数统一缩放模型的所有维度,达到精度最高效率最高,符合系数包括w,d,r,其中,w表示网络宽度;d表示网络的深度;r表示分辨率大小.

谷歌开源了tensorflow代码(需要1.13版本及以上), 地址为:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

一. 扩增网络

文中对w,d,r三者都做了扩增,如图e.对于(224,224,3)的某层tensor来说,224*224代表分辨率r,3代表宽度w.网络层数代表深度d.
在这里插入图片描述

二.复合系数的数学模型

文中给出了一般卷积的数学模型如下
在这里插入图片描述
其中H,W为卷积核大小,C为通道数,X为输入tensor;

则复合系数的确定转为如下的优化问题:
在这里插入图片描述
调节d,w,r使得满足内存Memory和FLOPS都小于阈值要求;

为了达到这个目标,文中提出了如下的方法:
在这里插入图片描述

对于这个方法,可以通过以下两步来确定d,w,r参数:
第一步,固定 ϕ \phi ϕ=1,在Efficientnet-B0这个基线网络的基础上,计算出 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha\cdot\beta^2\cdot\gamma^2\approx2 αβ2γ22约束下最优的 α β γ \alpha \beta \gamma αβγ值.
第二步,固定 α β γ \alpha \beta \gamma αβγ值,对基线网络使用不同的 ϕ \phi ϕ值进行扩增,得到Efficientnet-B1到B7,具体参数在开源代码里.
在这里插入图片描述
同样,我们也可以将基线网络扩展到其他网络,使用同样的方法来放大.
论文中基线模型使用的是 mobile inverted bottleneck convolution(MBConv),类似于 MobileNetV2 和 MnasNet,但是由于 FLOPS 预算增加,该模型较大。于是,研究人员缩放该基线模型,得到了EfficientNets模型,它的网络示意图如下:
在这里插入图片描述

可能会有人疑惑,为什么分辨率和宽度需要平方?我们查看网络中某个卷积层FLOPS的计算公式:
在这里插入图片描述
分辨率和宽度分别乘了两次,所以对应他们的约束也应该平方.

三.参数对比

在这里插入图片描述在这里插入图片描述
第一个表格作者只给了参数量对比和FLOPs对比,第二个表格是在至强CPU上的速度对比。
为了进一步测试efficientnet性能,本人在1080ti显卡上测试了resnet152和efficientnet-b1的前向传播速度,分别为0.0466s和0.0167s,提升了2.7倍。在i7 CPU上分别是0.1130s和0.0490s,提升了2.3倍。resnet50和efficientnet-b0的速度差别不大。
由此得出结论,flops跟速度关系不大,硬件性能跟速度的关系更大。flops只有在相同硬件条件下才能提升速度,且提升有限。同准确率的其他模型的flops越大, efficientnet模型的速度提升越多。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值