URL:
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
源码
TL;DR
谷歌大脑(Google Research, Brain Team)在ICML2019上的一篇工作。
主要是探索如何在深度、宽度、分辨率3个层面对模型进行自动缩放。
方法
本文定义模型缩放包括3个尺度:宽度(width)指在channel数目上进行修改,深度(depth)指在layer数目上进行修改,分辨率(resolution)指在feature map大小上进行修改。组合缩放(compound)则是对上述3个维度进行组合修改。
实验和经验也告诉我们,增加上述3个维度能带来acc的提升(但也会带来计算量和参数量的增加)。但不同的组合策略能带来不同程度的性能提升。如下图所示,针对同一baseline,模型增大到同一Flops,不同组合带来的提升效果差别很大。
这就带来一个问题:如何科学地组合3中不同的缩放形式?
首先定义问题:我们的目标是找到acc最高的模型的缩放尺度参数。公式如下,其中分别是深度、宽度和分辨率的缩放尺度,表示阶段,层重复次。
由于搜参范围较大,为此,本文引入复合参数,即首先在小范围内搜索得到,然后由用户指定的大下即可。
此外,由于depth的增大会增加倍的flops,但是width和resolution则会分别增加倍的flops。因此本文约束。实际上本文搜索得到的参数分别为。
实验
实验结果分别如下: