说到分类网络的优化方法,大家首先想到的可能是加深网络、增加宽度、提高分辨率、添加shortcut等方法,你可能会发现,大家都只是使用某一种方法来进行网络优化,而今天要说的这个EfficientNet网络,则是融合加深网络、增加宽度、提高分辨率这三个方面来对模型进行优化。EfficientNet的作者认为加深网络、增加宽度、提高分辨率这三个方法不应该是相互独立的,因此提出了提出了compound model scaling算法,能达到性能相似的情况下,大大减少模型参数量和提升速度!
几种model scaling方法的图解
既然要融合加深网络、增加宽度、提高分辨率这三种方法,我们首先要了解它们的基本理论。下图中的(b)、(c)、(d)分别从不同的维度对baseline做model scaling,而这篇论文要做的是将这3者结合起来一起优化,也就是(e)
单model scaling的缺陷
既然要做多model scaling的融合,那么单model scaling肯定存在缺陷吧?作者通过实验来说明,下图可以看到,单独优化这三个方面都可以有效的提升模型的性能,但是到一定程度就会遇到瓶颈(Acc达到80后提升不明显)
多model scaling融合的效果
既然单model scaling存在性能瓶颈,那么多model scaling的融合效果如何呢?作者通过实验展示效果,通过手动设置三种方法的参数,模型提升能打破性能瓶颈(突破80)
compound model scaling
既然证明融合有效果,那么现在需要考虑的是如何确定最优的组合?论文提出的compound model scaling算法就是为了解决这个问题的。
公式1表示一个conv网络的数学模型,N表示conv网络,X表示输入,Fi表示基础网络层,i表示stage,Li表示Fi结构在第i个stage中的重复数量。
公式2表达了多model scaling融合在模型参数和计算量满足限制条件的优化模型,待优化的参数就是网络深度d、网络宽度w、分辨率r。
作者使用一个复合系数统一缩放d,w,r,如公式3所示。其中、、是可以通过小网格搜索确定的常数。 是用户指定的系数,控制有多少资源可用于模型缩放,而、、指定如何将这些额外资源分配给网络宽度,深度和分辨率。
baseline网络
作者通过网络结构搜索设计了一个baseline网络,也就是EfficientNet-B0,其结构如下
得到baseline EfficientNet-B0后,通过两个步骤进行模型缩放:
- 步骤1:首先确定φ= 1,假设有两倍的可用资源,并根据公式2和3进行、、的小网格搜索。作者找到了EfficientNet-B0满足约束的最佳值 α=1.2、β=1.1、γ=1.15。
- 步骤2:然后我们将、、固定为常数,并使用公式3扩展具有不同的基线网络,以获得EfficientNet-B1至B7。
最后放一个实验结果