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