翻译一下efficientnet的论文,仅为本身看着方便

Efficientnet:对卷积网络模型缩放的从新思考git

引言:github

卷积神经网络是在固定的资源限制下进行开发的,在给与更多的运算时间和内存消耗的状况下是能够有效的提升准确率。网络

在本文中咱们系统的研究模型缩放,肯定系统相关的调节网络的层数和深度和输入图片的分辨率可使分类结果最优。架构

基于此,咱们提出了一种新的缩放方法,该方法使用复合系数来均匀的缩放深度、宽度,和分辨率。该方用于优化mobilenet和resnet。(剩下的不补分不看了,就是分类比较厉害的赶脚,代码链接https: //github.com/tensorflow/tpu/tree/ master/models/official/efficientnet.函数

介绍:学习

经过扩大网络的参数能够提升准确率,好比讲resnet18扩展到resnet200,最近gpine达到了84.3%时间后,并未对扩展网络结构有更好的理解,最多见的办法就是增长网络的深度和网络的宽度。另一个方法就是提升输入图片的分辨率,在以往的网络修改中你们都只专一于这三个(深度,宽度,分辨率)中的一个方面。手动的调节两方面以上的参数,很容易形成资源浪费,不能起到最好的效果。测试

本文着重考虑如何尊崇一个原则扩展网络的这三个方面。研究代表,平衡网络的深度,宽度,分辨率相当重要,并且能够简单的以恒定比例缩放每一个维度来实现平衡(yin que si ting),基于此咱们提出了一种简单而有有效的复合缩放方法。优化

与任意缩放这些参数不一样,咱们使用一组固定的缩放系数来均匀的缩放网络宽度和分辨率。例如咱们要将如今消耗的资源扩大两倍,则能够将网络深度增长a^n,宽度增长b^n,分辨率增长y^n,其中aby是经过小网格搜索肯定的常数系数.直观的来说,若是输入的图像更大,则网络须要更多的层来解析图片,并须要更多的通道来捕获更大图像上更细节的方面。(此处省略一部分......)spa

复合模型缩放(划重点)设计

咱们将阐述缩放问题,研究不一样的方法,并提出咱们的新缩放方法。

一个卷积层能够表示为一个函数 Yi = Fi(Xi), yi是输出tensor,xi是输入tensor,Fi是运算符,张量的shape为h,w,c ,其中h是卷积核的个数。

事实上,一个网络结构有不少相同的stage组成(好比shufflenet的shuffleblock),而每个层都有相同的卷积参数量以及参数尺寸定义,包含会有一些下降图片维度的层(step = 2),所以能够将这些相同的卷积层定义为公式中Fi在阶段i中重复li次,h,w,c是卷积层的参数。通常的网络降维的过程都是图片的w不断下降,而c不断增长。

一般人们调参的时候都是专一于分辨率和c或者网络长度Li,而不会改变预约义的Fi。经过固定Fi,模型锁房间花了新资源约束的设计问题,但仍然须要很大的设计空间才能探索到每层不一样的Li,Ci,Hi,Wi,为了进一步减小设计空间,咱们必须限制全部层必须以很定的比率均匀的缩放。

缩放尺寸

d,w,r互相依赖

d(深度):更深层的网络能够捕获更复杂更丰富的特征,但同时也会有梯度消失的问题,即便加入了残差和batch_normal操做,仍然较难训练。好比resnet1000和resnet-101类似(穷孩子哪里用过1000层的网络??????)

w(宽度):更多的宽度能够学习更多细节的特征(同时也会致使泛化能力不强?),而且易于训练,可是捕捉较高级别的特征会比较难(好比红色的矩形中含有梯形仍是扭曲的这种),可是这种网络在训练时候,偏差会降的很快,精度会提高的很快。

分辨率(r):使用更高的分辨率的输入图像能够捕获更多细节的特征,如今广泛使用299*299和331*331而也有些使用600*600和480*480提升准确率(学术上的灿烂老是在不断增长分辨率,工业上部署的困难总在想着怎么下降分辨率)。可是对于很是高的分辨率,精度增益会下降(r=1.0表示分辨率224*224,r=2.5表示分辨率560*560)

这些参数对于较大型的识别任务,参数不断增长,而增益成都会下降。

复合缩放

dwr不是独立的,三者应该成某种相互影响,共同协做的。

比较不一样网络深度和分辨率下的宽度缩放臂力,若是只修改一个参数,精度很快就会饱和。但二者同时增加,能够实现更好的精度。

公式来了(划重点)

depth: d = α^φ width:

w = β^φ

resolution: r = γ^φ       

α ≥ 1≥ 1≥ 1

s.t. α · β^2 · γ^2 ≈ 2

话说,这个受限条件是算出来的,仍是观测经验的说?

α,β,γ是可由a肯定的常数,φ  是用户指定的系数用于控制模型的缩放,而α,β,γ指定如何分别将这些额外的资源分配给网络宽度,深度和分辨率。常规卷积运算的d,w^2,r^2成正比,即网络深度会加倍会让flops加倍,可是宽度和分辨率加倍会使flops加四倍。 咱们对α·β2·γ2≈2进行约束,使得对于任何新的φ,总FLOPS大约增长2φ。

Efficient net

使用和(Tan et al., 2019)相同的架构,并对其进行优化,架构相似于mnas,主要成分是bottleneck MBConv(看起来像是mobilenetv3的block)还添加了sqeeze net的结构。网络自己并没有亮点,关键再看做者如何调参。

步骤1:假设有更多的资源可用,首先将φ= 1固定,并根据w = β^φ r = γ^φ 进行遍历测试,发现efficientnetb0的最佳值为a

=1.2,b=1.1,y=1.15在α · β^2 · γ^2 ≈ 2的约束下

步骤2:而后,我么将a,B,y固定为常数,并以按照系数进行方法,深度放大1.2倍,宽度1.1倍,分辨率1.15倍。

剩下的都省略了。。。。。。,感受这个搜索不太容易实现,做者说要在小型网络上测试,而后迁移到大型网络上,但愿能有大神写一个表,网络扩大一倍的参数,扩大两倍的参数。。。。。。。。

白嫖使我快乐。