pdf code

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

这篇文章分析了CNN Scale Up的相关原理,然后给出EfficientNet.背后的逻辑是这样的,首先我们可以通过Neural Architecture Search得到一个低分辨率图片的高效率模型,然后依据它对应的Scale Up原理进行扩展。本文用到的baseline出自MnasNet(pdf),就是通过NAS得到的。本文的代码提供了keras以及Tensorflow实现。这个repo提供了pytorch实现

这里添加一个medium上的解读.

Model Scaling Observation

image 上图展示的是不同的scale up一个模型的方式。本文的结论是应该根据输入图片的分辨率、channel数目以及网络深度综合Scale Up得到的提升才是最明显的。

image 上图展示的是分别只Scale Up网络channel数,网络深度,以及图片分辨率得到的。作者的结论是只Scale Up一个因子很容易得到Saturation,通过另一个实验发现总合一起Scale Up能得到更好的结果。

Compound Scaling Method

作者选择这个的原因是因为FLOPS(浮点运算数)正比于深度,频道数的平方以及分辨率的平方。

Efficient Net

image

EfficientNet的基本单元由Mobile Conv(pdf)组成。

从这个BaseLine开始,通过小grid-search得到的初始值,更改得到不同的channel数,分辨率以及网络层数(网络层数的更改是通过更改堆叠MBConv的一个for循环的循环次数实现的)

实验与结果

本文首先尝试Scale Up了MobileNet以及ResNet的到好的结果,然后开始Scale Up EfficientNet, 以下图中各个网络的准确率、参数以及FLOPS是一个很好的参考.

image

image