AI亿览通入口
400-700-8700
  • AI新零售

    AI新基建

    工业互联网
    消费品零售方案
    智慧城市
    地产科技

    AI新资管

    保险标的物AI监管
    动产抵押AI监管

IMG_256
EfficientNet是谷歌于2019年提出的新一代高性能卷积神经网络。得益于近年来日趋成熟的神经架构搜索(neural architecture search, NAS)技术和论文作者开创性的模型复合参数缩放(compound scaling)方法,使得该模型能够以极少的计算量达到极高的准确度,这也是模型名称中Efficient一词的由来。

本文由品览高级算法研究员Eddie,为大家解读EfficientNet的结构特点和应用

1. EfficientNet概述仅仅是最原始的基线模型EfficientNet-B0在ImageNet上的精确度就高达77.3% [1],超过了风靡业界的ResNet-50模型,但是其FLOPS却不到后者的十分之一。
更让人惊喜的是,当EfficientNet-B0通过compound scaling扩展为性能更高的EfficientNet-B4后精确度可以达到83.0% [1],而FLOPS也仅仅和ResNet-50,DenseNet-201这些主流模型持平。这种优秀的性能,使得EfficientNet一经问世就广受赞誉。IMG_258
Figure 1. EfficientNet的与主流分类模型的性能对比 [1],横轴表示模型的运算量,纵轴表示模型在ImageNet数据集上的准确度。

 

2. EfficientNet-B0与NAS搜索优秀的基线模型是EfficientNet系列性能的保障。基线模型EfficientNet-B0是借鉴了MnasNet的多目标神经架构搜索(multi-objective neural architecture search)方法和因子分层化搜索空间(Factorized Hierarchical Search Space)而得到的。该方法先给模型预设了一个宏观结构和一个目标函数,然后通过强化学习算法找到一个使得性能函数取到柏拉图最优解(pareto optimal solution)的微观结构。这里的宏观结构沿用了MnasNet的设计,把模型预设成了7个首尾相接的block [2],此外还设置了一个结构固定的输入block和输出block。每个block的输出特征图的长和宽是输入特征图的一半或者与输入特征图相同。而每个block内含有的算子组合需要在子空间中搜索得到。IMG_259Figure 2. 神经架构搜索示意图,这里采用了MnasNet的搜索示意图[2],但是EfficientNet-B0采用了相同的搜索结构,只是目标函数不同此外,最终的模型结构还不能超过预设的FLOPS上限(这里是400M)。因此当一个block内的算子较多而占用较大FLOPS时,其他block内的FLOP就要相应减少防止模型的总FLOPS超标。目标函数具体定义为:IMG_260上式中的T就是上文提到的400M的FLOPS上限,而超参数w=-0.07 [1]控制了模型在精确度和运算量上的平衡。通过上述搜索方法得到的模型就是EfficientNet-B0,与MnasNet的类似,也是由7组MBConv模块串联而成的结构。IMG_261Figure 3. EfficientNet-B0结构图,Layers一栏表示一个block内含有的MBconv模块个数(MBconv被视为了一个单独的层来处理)MBconv模块(Mobile Inverted Bottleneck)与MobileNetV2中的Invert Residual Linear Bottleneck结构的[3]类似,作者还加入了Squeeze-Excitation操作提升性能,具体结构如下:IMG_262Figure 4. MBconv模块的结构图,该结构的特点是把输入特征图的通道数先膨胀6倍,然后经过depth-wise卷积和SE操作,最后把通道数收缩回原始通道数。但注意,EfficientNet-B0中的第一个block内,MBConv不会对通道数进行膨胀。

当一个block需要把输入特征图的长宽减半时,会在这个block内的第一个MBConv模块的中使用stride = 2的Depth Wise卷积,除此之外都只使用stride = 1的卷积。

 

3. 模型扩展和compound scaling根据MnasNet的使用的架构搜索方法得到基线模型EfficientNet-B0后,论文作者重点研究了模型的扩展策略,使得增加有限的计算资源时,可以获得最大的准确度提升。他们发现按照一定的比例同步放大模型的深度(即层数),宽度(即通道数)和分辨率(即输入图片的长宽)可以取得最优的扩展效果。当输入高分辨率的图片时,需要通过增加网络深度来扩大感受野,从而捕获图片中的大尺寸特征区域。同时,增加像素的通道数可以方便网络学习如何捕获高分辨率图片中的细粒度特征。为此,他们提出了一种复合参数缩放(compound scaling)方法,先用参数α,β,γ及φ控制模型深度,宽度及分辨率相比基线网络EfficientNet-B0的放大倍率,然后在给定的FLOPS和内存上限内,用grid search搜索最优模型。

IMG_263

Figure 5. 复合参数扩展的数学模型
这里他们人为构造了一个约束条件α*β^2*γ^2= 2,表示扩展后的模型的FLOPS是扩展前的2^φ倍(这里不详细解释,推荐读原论文来理解)。在这种约束条件下,φ = 1时grid search得到的最优模型的参数为α = 1.2,β = 1.1,γ = 1.15。因为增加层数带来的FLOPS增加略小,所以α比β,γ大一些是很合理的。之后,作者固定上述最优α,β,γ值,作者通过选取一系列φ值进行实验,得到了EfficientNet-B1~EfficientNet-B7七个模型。与现在的主流CNN模型比较,精确度的提高和FLOPS的减少非常显著。IMG_264

Figure 6. EfficientNet与其他主流模型在ImageNet上的性能对比

 

4. EfficientNet的应用除了在ImageNet数据集上的出众表现,EfficientNet在其他广泛使用的数据集上的迁移学习效果也非常不错。在Cifar, Stanford Cars, Oxford Pets等常用数据集上,EfficientNet往往能够达到数一数二的准确率,而FLOPS却只有相同准确度的模型的九分之一。此外,EfficientNet的轻量化和高精确度使其非常适合作为backbone网络嵌入到语义分割模型(比如Unet)和目标检测模型(比如RetinaNet)中。以EfficientNet为基础开发的目标检测模型EfficientDet也性能颇高,在COCO数据上取得了目前最高的准确率。这些优点使得EfficientNet一经问世,就在学术界和工业界被迅速关注。在Kaggle,天池等权威数据科学竞赛中,EfficientNet被参赛者广为采用,大有当年XGboost算法流行各大机器学习竞赛成为刷榜利器的势头。在移动端应用方面,最近已经出现了更为轻量化的EfficientNet Lite[4],能够在计算资源受限的情况下仍然提供很高的分类准确度。IMG_265

 

参考文献:

1. Mingxing Tan, Quoc V. Le, EffificientNet: Rethinking Model Scaling for Convolutional Neural Networks

2. Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le, MnasNet: Platform-Aware Neural Architecture Search for Mobile

3. Mark Sandler Andrew Howard Menglong Zhu Andrey Zhmoginov Liang-Chieh Chen,MobileNetV2: Inverted Residuals and Linear Bottlenecks

4.https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/

 

o       

 

 

IMG_266

 

【AI论技】EfficientNet的原理和应用

2020-04-08