重读经典-EfficientNet

EfficientNet也是以前看过的一篇文章的,当时主要看了网络结构,对于文章的思考并没有很深入,这次重新看一下,加深一下对于文章的思考。


作者:Google

论文链接:https://arxiv.org/abs/1905.11946

开源代码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet


Model Scaling

本篇文章的重点是Model Scaling,至于Efficientnet只是作者在思考model scaling顺带的产物。

那么什么是Model Scaling,简单来说就是模型扩容,比如;resnet18,resnet50,resnet101,resnet201适用于不同场景的任务,使用resnet18去分类imagenet,那么肯定效果不会很好,使用resnet201放到手机上,那也很可能会卡死。

模型scaling的方法目前来看,三个方向比较主流,深度,宽度,和图像分辨率。深度的代表就是resnet, 宽度的代表就是mobilenet,图像分辨率我们知道增大分辨率一般都是有效的。在以前的方法中,往往是从这三个中的一个角度出发,来改变模型的scaling,但是这样做其实是存在一定的瓶颈的,作者在实验中也证实了这点。如下图所示,在达到80%之后,提升就变得缓慢了。

在这里插入图片描述

下图便是model scaling在三个角度的说明。

在这里插入图片描述

但是我们是否可以有个简单方法,可以同时改变三个角度,进而达到更好的精度与速度吗?

这个问题,作者也解释说,完全的平衡深度宽度和分辨率是很难的,但令人兴奋的是,我们可以采用一种简单的方式,使用固定的比例来得到简单的平衡,也就是本文的创新点了,作者管它叫做compound scaling method

那么作者是怎么做的呢?

首先,作者对这个任务进行了定义,如下:

其实这个问题就是个最优化问题,在有限的memory以及flops的条件下,最大化accuracy,公式如下:

在这里插入图片描述

但是因为每层都可以进行三个维度不同的放大缩小,如果我们不加以控制scale的比例,那么这个搜索空间就非常大了,不可能搜索出来的。

那么作者的compound scaling method是怎么做的呢?作者假设了深度、宽度、分辨率都是按照固定比例进行scale的,比如我们想提高 2 n 2^n 2n<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值