Google出品,ImageNet新的State-of-the-art
论文链接: https://arxiv.org/pdf/1905.11946.pdf
官方源码: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
第三方PyTorch源码: https://github.com/lukemelas/EfficientNet-PyTorch
1.介绍
本文的思路来源是,作者观察到通过扩大网络模型的方法,可以获得更好的精度。最常见的方法是增加网络深度或者宽度(通道数),还有一种不常见的但越来越流行的方法是通过增加图像分辨率(如Gpipe采用480*480的图像)来扩大模型的规模。因此作者思考是否有一种原则性的方法可以平衡上述三种扩展方向,使得网络经过同等规模的扩大后达到更好的精度和效率,如图所示。基于此,提出了一种简单有效的复合标度方法,利用网格搜索得到了一组固定的缩放系数分别对网络的宽度、深度和分辨率进行缩放。
本文可看做是对深度学习炼丹的丹方进行解析,对网络的深度、宽度与分辨率这三种成分的配比进行系统性的研究,在提出的EfficientNet-B0的基础上用此方法扩展网络,证明了该方法的有效性。而EfficientNet-B7在ImageNet上实现了84.4%的top-1 / 97.1%的top-5精度,超过现有最好的结果(文中为Gpipe),同时参数少8.4倍,推理速度快6.1倍,效果非常棒!同时也在MobileNet与ResNet上用此方法扩展,效果上得到了证实。
2.复合模型扩展
一个卷积层 i i i可以被定义为一个函数: Y i = F i ( X i ) Y_i = F_i(X_i) Yi=Fi(Xi),其中 F i F_i Fi是卷积操作, Y i Y_i Yi是输出的张量, X i X_i Xi是输入的张量且张量的形状为 < H i , W i , C i > <H_i,W_i,C_i> <Hi,Wi,Ci>。此外CNN通常被划分为多个阶段,每个阶段的所有层结构是相同的,比如ResNet中有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行下采样。因此一个神经网络