文章标题
EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks(ICML2019)
本文亮点
1.系统研究了网络深度、宽度、输入图片分辨率对网络性能的影响。
2.给出了同时改变网络深度、宽度、输入图片分辨率以高效率地提高网络性能的方法。
3.使用NAS构建了基础网络EfficientNet-B0,并以此为基础,改变网络深度、宽度、输入图片分辨率从而得到一系列高效的网络。
关键内容
在给定计算和存储资源限制下,最佳的网络深度、宽度、分辨率是相互依赖的。只增加网络深度、宽度或者分辨率都可以提高网络性能,但是过度增加单个维度总会导致精度“饱和”,如下图所示。左图表示只增加通道数、中图表示只增加深度、右图表示只增加网络输入图片分辨率。
联合改变网络深度、宽度或分辨率更有利于提高网络精度,如下图所示。d表示增加深度的系数,r表示增加输入图片分辨率的系数,单条曲线的每个节点代表不同的通道数目。
因此,为了最大限度提高网络精度,混合地改变网络深度、宽度和输入图片分辨率是更好的选择。本文提供了一套方法指导我们同时改变网络深度、宽度和输入图片分辨率:
按照上图的公式进行网络扩充,目标网络的计算量大约是原网络的=倍。实际使用时,值根据目标网络计算量而定,例如:当目标网络计算量为当前网络的2倍时,令。确定值后,使用网格搜索,寻找使得网络精度提升最好的值。加入约束是为了降低网格搜索的难度。
为验证上述方法的正确性,作者首先给出了1个基础网络,然后在该网络上进行各个维度的扩充,对得到的网络进行性能评估。基础网络名为EfficientNet-B0,它的构建参考了如下几篇文章的内容:
-
MnasNet:Platform-aware neural architecture search for mobile.
-
MobileNetv2:Inverted residuals and linear bottlenecks.
-
Squeeze-and-excitation networks.
网络基础架构如下图所示:
基于上述基础网络,使用如下步骤进行扩充:
- 令,即扩充网络使得计算量使原来得2倍,使用网格搜索寻找最优的。
- 令固定,改变值扩充网络。
上述方法得到的结果未必是最优解,但是比较简单。
利用上面的步骤,得到了EfficientNet-B1~EfficientNet-B7,并评估了它们得性能:
使用联合扩充多维的方法,能在保持较少的参数和较少的计算量的前提下,达到很好的精度。作者也通过实验证明了EfficientNet系列网络对于迁移学习性能也很好。