EfficientNet详解:当前最强网络

简介

EfficientNet源自Google Brain的论文EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. 从标题也可以看出,这篇论文最主要的创新点是Model Scaling. 论文提出了compound scaling,混合缩放,把网络缩放的三种方式:深度、宽度、分辨率,组合起来按照一定规则缩放,从而提高网络的效果。EfficientNet在网络变大时效果提升明显,把精度上限进一步提升,成为了当前最强网络。EfficientNet-B7在ImageNet上获得了最先进的 84.4%的top-1精度 和 97.1%的top-5精度,比之前最好的卷积网络(GPipe, Top-1: 84.3%, Top-5: 97.0%)大小缩小8.4倍、速度提升6.1倍。

 

EfficientNet的主要创新点并不是结构,不像ResNet、SENet发明了shortcut或attention机制,EfficientNet的base结构是利用结构搜索搜出来的,然后使用compound scaling规则放缩,得到一系列表现优异的网络:B0~B7. 下面两幅图分别是ImageNet的Top-1 Accuracy随参数量和flops变化关系图,可以看到EfficientNet饱和值高,并且到达速度快。

 

 

EfficientNet详解:当前最强网络

 

EfficientNet详解:当前最强网络

 

原理

增加网络参数可以获得更好的精度(有足够的数据,不过拟合的条件下),例如ResNet可以加深从ResNet-18到ResNet-200,GPipe将baseline模型放大四倍在ImageNet数据集上获得了84.3%的top-1精度。增加网络参数的方式有三种:深度宽度分辨率

 

深度是指网络的层数,宽度指网络中卷积的channel数(例如wide resnet中通过增加channel数获得精度收益),分辨率是指通过网络输入大小(例如从112x112到224x224)

 

直观上来讲,这三种缩放方式并不不独立。对于分辨率高的图像,应该用更深的网络,因为需要更大的感受野,同时也应该增加网络宽度来获得更细粒度的特征。

 

之前增加网络参数都是单独放大这三种方式中的一种,并没有同时调整,也没有调整方式的研究。EfficientNet使用了compound scaling方法,统一缩放网络深度、宽度和分辨率。

EfficientNet详解:当前最强网络

 

如下图所示,(a)为baseline网络,(b)、(c)、(d)为单独通过增加width,depth以及resolution使得网络变大的方式,(e)为compound scaling的方式。

EfficientNet详解:当前最强网络

 

EfficientNet中的base网络是和MNAS采用类似的方法(唯一区别在于目标从硬件延时改为了FLOPS),使用了compound scaling后,效果非常显著,在不同参数量和计算量都取得了多倍的提升。

EfficientNet详解:当前最强网络

 

此外,作者为了验证单独compound scaling的收益,base网络不使用MNAS网络结构搜索的结果,直接使用MobileNets和ResNet作为base进行scaling,结果显示在FLOPS接近的情况下,Top-1 Acc有0.6~1.4%的提升。

EfficientNet详解:当前最强网络

 

最后,EfficientNet的延时相对于ResNet/GPipe也有5~6倍的提升。

EfficientNet详解:当前最强网络

 

总结

总得来说,EfficientNet最大的贡献即为compound scaling,指导我们在设计网络时,特别是比较大的网络时,深度、宽度和分辨率要同步增加。

 

参考

论文链接:https://arxiv.org/abs/1905.11946

官方TensorFlow代码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

第三方PyTorch代码:https://github.com/lukemelas/EfficientNet-PyTorch

 

 

相关文章

人工智能技术分析

人工智能 机器学习 深度学习

第六届世界互联网大会乌镇峰会简评

华为人工智能战略分析:2019华为全连接大会

阿里含光 VS 华为昇腾:AI芯片路在何方

AI人工智能三要素:数据、算力和算法

计算机视觉(CV)任务介绍:分类、检测、分割、超分、关键点识别、图像生成、度量学习

理解深度学习中的分类网络:LeNet

 

PyTorch 1.3

tf.GradientTape详解:梯度求解利器

TensorFlow高阶API和低阶API

TensorFlow静态图和eager机制

TensorFlow 2.0

TensorFlow高阶API和低阶API

TensorFlow调试技巧

TensorFlow与PyTorch对比

PyCharm调试技巧

解读谷歌的AI杀手级专利:Dropout

 

AutoML算法分析(一):基于强化学习的算法

SENet详解

 

关于我

缘起:新的开始

 

公众号持续更新,欢迎订阅。

 

AI人工智能与大数据

EfficientNet详解:当前最强网络