https://arxiv.org/pdf/1905.11946.pdf
https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
tf2实现https://github.com/calmisential/EfficientNet_TensorFlow2
扩展网络有三个维度,包括width(channels数)、depth(网络深度)、resolution输入分辨率。
作者通过实验表明,只改变其中一个维度,acc的提升很容易就饱和了,如何同时改变三个维度,使得acc和flops达到一个trade-off,就是本文的内容。
作者提出的一种缩放方法。网络深度增加一倍,flops变为之前的两倍;width或者resolution增加一倍,flops变为之前的四倍。
统一起来,增加的计算量。论文里限制,所以增加的计算量大概为
下面是作者以MBConv+SE模块搜索出来的一个结构。首先固定,即搜索出来的flops是之前的2倍,
得到一组最优值;
然后固定这三个参数,调整,得到B1至B7的一系列网络(具体实验结果可参考原文)。
值得注意的是,这个网络中,降采样用conv+str2代替conv+maxpool(相当于flops变为了1/4);用了5*5的卷积核,
减小了计算量,参考https://www.zhihu.com/question/326833457