EfficientNet论文解读

893 阅读3分钟

文章标题

EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks(ICML2019)

本文亮点

1.系统研究了网络深度、宽度、输入图片分辨率对网络性能的影响。

2.给出了同时改变网络深度、宽度、输入图片分辨率以高效率地提高网络性能的方法。

3.使用NAS构建了基础网络EfficientNet-B0,并以此为基础,改变网络深度、宽度、输入图片分辨率从而得到一系列高效的网络。

关键内容

在给定计算和存储资源限制下,最佳的网络深度、宽度、分辨率是相互依赖的。只增加网络深度、宽度或者分辨率都可以提高网络性能,但是过度增加单个维度总会导致精度“饱和”,如下图所示。左图表示只增加通道数、中图表示只增加深度、右图表示只增加网络输入图片分辨率。

111

联合改变网络深度、宽度或分辨率更有利于提高网络精度,如下图所示。d表示增加深度的系数,r表示增加输入图片分辨率的系数,单条曲线的每个节点代表不同的通道数目。

123

因此,为了最大限度提高网络精度,混合地改变网络深度、宽度和输入图片分辨率是更好的选择。本文提供了一套方法指导我们同时改变网络深度、宽度和输入图片分辨率:

按照上图的公式进行网络扩充,目标网络的计算量大约是原网络的dw2r2d \cdot w ^2 \cdot r^2=αϕβ2ϕγ2ϕ2ϕ\alpha^{\phi} \cdot \beta^{2\phi} \cdot \gamma^{2\phi} \approx 2^\phi倍。实际使用时,ϕ\phi值根据目标网络计算量而定,例如:当目标网络计算量为当前网络的2倍时,令ϕ=1\phi=1。确定ϕ\phi值后,使用网格搜索,寻找使得网络精度提升最好的αβγ\alpha 、 \beta 、 \gamma值。加入αβ2γ22\alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2约束是为了降低网格搜索的难度。

为验证上述方法的正确性,作者首先给出了1个基础网络,然后在该网络上进行各个维度的扩充,对得到的网络进行性能评估。基础网络名为EfficientNet-B0,它的构建参考了如下几篇文章的内容:

  • MnasNet:Platform-aware neural architecture search for mobile.

  • MobileNetv2:Inverted residuals and linear bottlenecks.

  • Squeeze-and-excitation networks.

网络基础架构如下图所示:

基于上述基础网络,使用如下步骤进行扩充:

  • ϕ=1\phi=1,即扩充网络使得计算量使原来得2倍,使用网格搜索寻找最优的αβγ\alpha 、 \beta 、 \gamma
  • αβγ\alpha 、 \beta 、 \gamma固定,改变ϕ\phi值扩充网络。

上述方法得到的结果未必是最优解,但是比较简单。

利用上面的步骤,得到了EfficientNet-B1~EfficientNet-B7,并评估了它们得性能:

使用联合扩充多维的方法,能在保持较少的参数和较少的计算量的前提下,达到很好的精度。作者也通过实验证明了EfficientNet系列网络对于迁移学习性能也很好。