EfficientNet : Google Brain提出仅需1/8参数的图像分类SOTA ICML 2019
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EfficientNet : Google Brain提出仅需1/8参数的图像分类SOTA ICML 2019相关的知识,希望对你有一定的参考价值。
参考技术A论文: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
目前,卷积神经网络的性能优化主要有3个维度:1) 增加网络的宽度 2) 增加网络的深度 3) 增加输入图片的分辨率,目前很容易通过修改一个维度来直接提升网络的准确率,但是同时修改网络的两个甚至三个维度则需要繁琐的人工调参,而且很难达到最优
论文核心研究是否存在一条准则来指导卷积网络的性能优化,而结论是网络的宽度/深度/分辨率是有平衡关系的,而且存在一个常量的比例。基于以上的发现,论文提出简单有效的混合缩放方法(compound scaling method),通过一系列的固定缩放因子,均匀地缩放网络的宽度,深度和分辨率,图2展示了各维度缩放以及混合缩放方法的示意图
此外,由于网络的性能和效率十分依赖于基础网络,论文使用神经结构搜索来获取新的基础网络,再进行相应的缩放来获取一系列模型,论文称之为EfficientNets
如图1所示,EfficientNet在准确率、速度和参数量上都有很大的提升,其中EfficientNet-B7在ImageNet上达到了SOTA,而对于其它参数量少的版本,其性能也是很不错的
卷积网络层 可以定义为函数 , 为算子, 为输入,维度为 ,一个卷积网络 可以定义为连续的操作
实际卷积网络可以分为不同的阶段(stage),每个阶段除了第一层进行池化外,都具有相同的层结构,如图2a。因此可以进一步转化为公式1, 为层 在state 重复叠加 次
和卷积网络设计的核心在于找到最好的层结构 ,而模型缩放的核心则在于不修改结构 的前提下,扩展网络的深度 ,宽度 和分辨率
由于各层各维度的修改可以各种各样,论文进一步缩小设计空间,每层各维度必须通过常量的比例进行均匀地缩放,如公式2所示,其中 , , 为网络深度,宽度和分辨率的缩放因子
缩放网络的深度是卷积网络中最常见的方式,一般更深的网络能够提取更丰富、更复杂的特征,从而能够在新任务中有更好的表现。而更深的网络由于梯度弥散问题,通常会更难训练,尽管已经有很多优化的技巧,如skip connections和batch normalization,但过深的网络的收益依然很低,比如ResNet-1000和ResNet-101的精度几乎一样,图3中间展示了不同深度缩放尺度下的准确率
对于小型网络,缩放网络的宽度是很常见的优化方式,更宽的网络能够提取更细粒度也更容易训练。但过宽而不够深的网络很难提取高维度的特征,如图3左所示,在网络过宽后,准确率收益快速下降
使用更大的输入图片分辨率,卷积神经网络能够提取更多细粒度的特征,如图3右所示,基础的分辨率为224x224,更大的分辨率的确能够带来更高的准确率,但同样过高的分辨率同样会有准确率收益过低的问题
从上面的研究可以认为,不同维度的缩放是非独立的,因此需要协调和平衡各维度的缩放操作。为了验证这一猜测,进行了图4实验,在不同的深度和分辨率下验证宽度缩放的性能。如果单一增加宽度 ,准确率很快就饱和了,而深度更深和分辨率更高则能在相同计算量下达到更高的精度
论文提出混合缩放方法(compound scaling method), 为混合因子,是用户定义的因子,用来均匀地进一步缩放网络的宽度,深度和分辨率, , , 是小型网格搜索得到的常量,分别控制深度,宽度和分辨率的基础缩放比例。一般卷积神经网络各维度缩放的计算量(FLOPS)增加的比例为 , , ,即缩放d倍深度会增加 倍计算量,而缩放w倍宽度或r倍分辨率则分别增加 和 倍计算量。因此,公式3会带来 倍的计算量增加。论文限制 ,这样对于每个 ,都是大约增加 的计算量
对于网络缩放的效果,基础网络架构也是很重要的,为了更好地展现混合缩放方法的性能,论文提出了一个mobile-size的基础模型EfficientNet
EfficientNet是利用MnasNet的多目标神经结构搜索(Tan et al., 2019)进行构建,该搜索方法同时优化准确率和FLOPS,以 为优化目标, 为模型, 为目标计算量(FLOPS), 为控制准确率和计算量的超参数
搜索得到网络为EfficientNet-B0,结构如Table 1所示。由于使用相同的搜索方法,该结构与MnasNet类似,区别在于EfficientNet-B0的计算量大点,因为优化时目标计算量设计得较大。EfficientNet-B0的核心是mobile inverted bottleneck MBConv(MobileNet v2),添加了squeeze-and-excitation(SeNet)进行优化
以EfficientNet-B0作为开始,混合缩放方法包含两个步骤:
需要注意的是,这里可以通过直接将 , , 加入搜索来获取更好的性能,但是在稍微大点的模型上进行这样的搜索的花费是十分巨大的,而论文提出的方法则能变相地解决这个问题
与其它单维度缩放的算法对比,在MobileNets和ResNets上,混合缩放方法能够获得更好的性能
EfficientNet的训练与(Tan et al., 2019)一致,另外加入了swish激活函数和生存概率为0.8的随机深度(stochastic depth),另外越大的网络需要更多的正则化,因此dropout的比例会根据网络大小进行调整,EfficientNet-B0为0.2,EfficientNet-B7则增加到0.5
Table 2展示了EfficientNet-B0缩放的所有版本的性能表现,通常EfficientNet能够在较少的计算量的情况下比其它卷积神经网络获得更高的准确率,特别是EfficientNet-B7在达到精度超过GPipe的情况下减少了8.4倍的参数量
之前的图1和图5展示了参数-准确率和计算量-准确率的曲线图,EfficientNet模型都能在相对少的消耗的情况下达到最好的精度,特别仅使用1/18的计算量就可以媲美ResNext-101
为了验证计算消耗,论文在实际CPU上计算了推理的延迟,结果证明EfficientNet的确更快
论文也在一系列的迁移学习数据集上进行测试,具体数据集如Table 6
Table 5展示了迁移学习的结果:
图6对比了不同模型在不同数据集上的准确率-参数量曲线图,EfficientNet一般都能仅使用少量的参数而达到更好的精度,由于目前的大多数算法
论文也对其它的缩放方法进行了对比,其它方法能够通过增大计算量来提升精度,但混合缩放方法能够进一步地提升模型精度
图7展示了Table 7的模型的类别活跃区域,可以看到,混合缩放方法能够更专注于物体细节的相关区域,而其它方法则存在物体细节缺失的情况
论文对模型缩放进行深入研究,提出混合缩放方法,该方法更优地选择宽度,深度和分辨率的维度缩放比例,从而使得模型能够达到更高的精度。另外,论文通过当下火热的神经架构搜索提出EfficientNet,配合混合缩放方法,能够在使用很少量的参数下,在达到较高的准确率,论文的理论和实践部分都十分值得学习
以上是关于EfficientNet : Google Brain提出仅需1/8参数的图像分类SOTA ICML 2019的主要内容,如果未能解决你的问题,请参考以下文章
Pytorch CIFAR10图像分类 EfficientNet v1篇
Pytorch CIFAR10图像分类 EfficientNet v1篇