EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
论文下载地址:https://arxiv.org/abs/1905.11946
代码下载地址:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
论文创新:在有限的资源下平衡网络深度,宽度和分辨率得到一个效果最好的网络结构。
上图网络结构分别是(a)基础的网络结构。(b)只增加宽度之后的网络结构。(c)只增加深度的网络结构。(d)只提升分辨率的网络结构。(e)增加宽度,深度和分辨率的网络结构。
1. 更宽的网络结构可以捕捉更细粒度的信息,更加容易训练,但是浅的网络结构不能捕捉高层次的特征,缺少语义信息。
2. 更深的网络结构可以捕捉更加丰富和复杂的网络结构,并且泛化能力更强。但是网络越深越难训练。
3. 分辨率越高可以得到更加丰富的特征,但是分辨率越高就需要更宽和更深的网络来提取特征,网络的参数量就会呈指数增加。
基于以上的发现作者得到的一个观察结论是:任意放大网络宽度,深度和输入分辨率都会提升网络的精度,但是随着模型的增大,准确率的收益率也会逐渐变小。(ResNet-101和ResNet-1000之间的网络层差距很大,但是准确率相差不大)
上图展示的是不同分辨率,深度和宽度系数下的网络结构在Imagenet上的表现。每一个点代表的是不同的网络宽度,d表示网络深度,r表示网络深度。
1. 在d和r不点的情况下,网络越宽取得的精度越高。
2. 在相同的FLOPS下,网络越深,输入分辨率越高的网络结构取得的精度越高。
从上图中作者得到观察结论:为了追求更好的精度和效率,在卷积网络在缩放过程中,平衡网络宽度、深度和分辨率的所有维度是至关重要的。
网络搜索框架的提出:
基于以上的两个发现作者提出了自己的复合扩展方法:
α, β, γ可以通过小网络搜索来确定。φ表示我们要搜索的网络模型的FLOPS总量是多少,在基于φ的基础上来搜索我们的α, β, γ找到一个最合适的网络结构。
网络结构的搜索主要分为两步:
1. 首先固定φ=1,基于上面的公式找到最合适的α, β,γ值。找到论文中的EfficientNet-B0这个网络结构。
2. 然后固定α, β,γ,来扩大φ的尺度,得到EfficientNet-B1到EfficientNet-B7,这剩余的7个网络结构。
结果展示:
从下表可以看出,搜索得到的网络结构使用更少的参数量得到更好的准确率。