当前位置: 首页 > 科技观察

谷歌新开源模型EfficientNet:图像识别效率提升10倍,参数减少88%

时间:2023-03-19 20:23:01 科技观察

卷积神经网络通常在资源有限的情况下开发,然后在条件允许的情况下扩展到更大的计算资源以获得更好的准确性。在论文《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》中,谷歌AI的科学家系统地研究了模型扩展问题,提出了一种新的复合扩展方法和更高性能的EfficientNet。EfficientNet模型的相关代码和TPU训练数据也已经在GitHub上了。开源。该论文已被ICML2019录用,AI前线对其进行了简单梳理和总结。本文是AIFrontline第81篇论文的介绍。简介模型扩展广泛用于提高卷积网络的准确性。例如,ResNet系列可以通过增加层数从ResNet-18扩展到ResNet-200。Google的开源神经网络训练库GPipe通过对基线网络的四倍扩展,在ImageNet数据库上可以达到84.3%的top-1准确率。然而,虽然有许多方法可以扩展卷积网络,但很少有工作能够深入了解它们。许多先前的工作针对三个维度(深度、宽度和图像大小)调整神经网络。虽然调整这些因素中的任何两个或三个似乎是可行的,但实际上它需要大量的手动调整才能实现过去几乎没有的改进。对于EfficientNet的效果,我们先来看一张图:图中横坐标表示参数量,纵坐标表示在ImageNet数据库上的Top1准确率。可以看出,EfficientNet系列优于所有其他卷积网络。其中,Efficient-B7的准确率达到了84.4%的新水平。但其参数相比GPipe减少了8.4倍,推理速度是GPipe的6.1倍。更详细的数据可以参考后面的实验部分。研究动机本文作者对神经网络的展开过程进行了研究和思考。作者特别提出了一个想法:是否找到一种归一化的神经网络扩展方法,可以同时提高网络的准确率和效率。要实现这一点,关键的一步是如何平衡宽度、深度和分辨率三个维度。通过一些实证研究,作者发现使用固定尺度的缩放操作可以很容易地达到三者的平衡。最后,作者提出了一种简单但有效的复合缩放方法。例如,对于一个标准模型,如果要使用2^N倍的计算资源,作者认为只需要将网络宽度增加α^N,深度增加β^N,图像大小增加γ^N次。其中α、β、γ是一组常数系数,其值是在原始标准模型中使用小规模网格搜索得到的。为了直观说明本文提出的复合扩展方法与传统方法的区别,作者提供了下图作为参考:其中(a)是一个基线网络,(b)到(d)是三个不同的传统方法,分别对宽度、深度和图像分辨率进行扩展,(e)是本文提出的复合扩展方法,采用固定比例同时扩展三个维度。直觉上,复合扩展是有意义的。因为对于更大的输入图像,网络需要更多的层来增加感受野,需要更多的通道来获取细粒度的信息。总的来说,本文的核心工作主要分为两个方面:提出了复合扩展方法,这是对卷积网络三个维度同时扩展的首次尝试。该方法可以有效提高现有网络结构在大规模计算资源上的训练效果。设计了一种性能优异的新型网络结构——EfficientNet。该网络不仅性能远超其他网络结构,而且网络参数更少,推理速度更快。复合模型扩展方法这部分将详细介绍什么是网络扩展问题,并对不同的方法进行研究,从而引出我们的主角:复合扩展方法。问题建模卷积网络的本质是一个映射函数。这个函数可以写成下面的形式:其中Fi表示第i层执行的操作,Xi是输入张量。我们假设这个张量的大小是:。为了推理方便,省略了张量的batchsize信息。通常,我们会使用多个叠加的子模块来组成一个完整的卷积网络。例如,ResNet由5个子模块组成,也称为五个阶段。除了第一阶段的下采样外,每个阶段的所有层的卷积操作都是相同的。因此,神经网络也可以定义为如下形式(式(1)):其中,表示层Fi在第i阶段重复了Li次。表示第i层的输入张量X的形状。当一个输入张量流过整个卷积网络时,其空间维度通常会降低,同时伴随着通道数的增加,例如输入为<224,224,3>的张量通过特定的卷积网络。它的形状最终会变成<7,7,512>。对于神经网络,作者假设所有层必须按相同的常数比率统一缩放。因此,模型扩展问题可以表示为(等式(2)):其中w、d、r分别是扩展网络的宽度、深度和分辨率。是基线网络中预定义的网络参数。用一维展开求解式(2)的难点之一是d、w、r相互依赖,会因资源条件不同而发生变化。传统方法主要侧重于独立解决其中一个维度的缩放问题。下图展示了一些改变各个维度对模型性能影响的实验结果:图中从左到右分别是不同宽度、深度、分辨率系数对模型性能的影响。随着宽度、深度和分辨率的增加,网络越大,精度越高。但在达到80%后,准确率很快趋于饱和,说明单维扩展是有限的。这里的实验结果使用EfficientNet-B0作为基线网络,具体结构如下表所示:表1:EfficientNet-B0网络,每一行代表多层网络的某个阶段,分辨率输入张量大小,而Channels代表输出的通道数。通过表中符号与公式(1)中符号的对比,作者得出结论:观察1:扩大网络的宽度、深度、分辨率中的任意一个都可以提高其精度,但是随着模型变大越来越大,这种提升逐渐缩小。复合扩展实际上,不同的扩展维度并不是相互独立的。直观地说,对于更高分辨率的图像,应该使用更深的网络,这样才会有更大的感受野来对图像进行采样和特征提取。同样,网络的宽度也应该增加,以便通过在高分辨率图像中划分更多像素来捕获更细粒度的图案。基于以上直觉,这篇论文的作者做了一个错误——“我们应该平等地平衡不同的扩展维度,而不是像传统方法那样只进行单一维度的扩展”。为了验证这个假设,作者对比了不同的深度。在和分辨率下扩展网络宽度时的实验结果:上图中每条线上的每个点代表模型在不同宽度系数配置下的效果。所有基线网络都使用表1中的结构。第一个基线网络(d=1.0,r=1.0)有18个卷积层,输入分辨率为224224。***基线网络(d=2.0,r=1.3)有36个卷积层,输入分辨率为299299。可以看出,当宽度不变时,如果只改变深度和分辨率,准确率很快就会饱和。具有更高分辨率和更深网络的模型可以在相同的FLOPS(每秒浮点运算)成本下实现更好的精度。通过这部分的分析,作者得出结论:观察2:为了获得更好的精度和效率,在卷积网络的扩展中,平衡网络的宽度、深度、分辨率三个维度是非常关键的一步。事实上,一些类似的作品也尝试过随机平衡网络的宽度和深度,但这些作品需要繁琐的手动微调。与上述方法不同,本文作者提出了一种新的复合扩展方法。该方法使用复合系数Φ以归一化的方式统一扩展网络的深度、宽度和分辨率:其中α、β、γ为常数,由小型网络搜索确定。Φ是用户指定的扩展因子,用于控制有多少资源可用于模型扩展。对于一般的卷积运算,FLOPS要求与d,w^2,r^2成正比。由于卷积网络中计算量最大的运算通常是卷积运算,因此使用等式(3)扩展网络会导致总FLOPS变为大约.在本文中,作者使用公式来约束这三个参数,因此总的FLOPS增加了2^Φ。EfficientNet结构中上面提到的模型扩展方法并没有改变基线网络中每一层的操作。因此,为了提高模型的准确率,拥有一个好的基线网络也是非常重要的。在实验部分,作者评估了使用现有卷积网络的复合扩展方法。但为了更好地展示复合扩展方法的有效性,作者设计了一个新的轻量级基线网络EfficientNet。(注:这里的轻量级网络指的是可以在移动端使用的参数较少的卷积网络。)EfficientNet的结构已经列在表1中,其主干网络由MBConv组成,作者采用了squeeze-and-excitation操作优化了网络结构(参见SENet,ILSVRC2017冠军)。对于Efficient-B0,如果要使用复合扩展的方法对其进行扩展,需要分两步完成:第一步:先将Φ固定为1,假设至少有两倍的可用资源,通过公式(2)和式(3)对α、β、γ进行网格搜索。特别地,对于EfficientNet-B0,在约束条件下,α、β、γ分别为1.2、1.1、1.15,网络效果最好。第二步:固定α、β、γ为常量,然后通过式(3)采用不同的Φ对基线网络进行扩展,得到EfficientNet-B1至EfficientNet-B7。之所以只在小基线网络上使用网格搜索(步骤1)然后直接将参数扩展到大模型(步骤2)是因为直接在大模型上进行参数搜索非常昂贵且不可行,因此作者采用这种两步法确定模型扩展参数。在这部分实验中,作者首先在广泛使用的MobileNets和ResNets上验证了他们提出的模型扩展方法。实验结果如表3所示:与单维展开法相比,复合展开法在三种网络模型上都有改进,说明复合展开法对目前已有的网络是有效的。随后,作者在ImageNet数据库上训练了EfficientNet。实验结果表明,EfficientNet模型在参数和FLOPS方面比其他卷积网络少一个数量级,但可以获得相似的精度。特别是,Efficient-B7在top1中达到了84.4%,在top5中达到了97.1%,比GPipe更准确,但模型小了8.4倍:同时,作者还在常用的迁移学习数据集上评估了EfficientNet。EfficientNet的性能与其他类型的网络一致。实验结果如下图所示:为了更好地理解复合扩展方法能够取得更好效果的原因,作者将网络的激活图可视化。比较相同配置的基线网络经过不同扩展方式后激活图的变化:可以看出,复合扩展方式使得模型更加关注与目标细节相关的区域,而其他配置下的模型无法通过图像细节很好地捕捉到目标。总结在本文中,作者讨论了模型扩展方法中存在的问题,并提出了一种基于如何平衡网络的深度、宽度和分辨率的复合扩展方法。并且这种扩展方法在两种网络结构MobileNets和ResNet上进行了验证。此外,作者还通过神经结构搜索设计了一个新的基线网络EfficientNet,并对其进行了扩展,得到了一系列的EfficientNets。在图像分类标准数据集上,EfficientNets超越了之前的卷积网络,EfficientNet参数更少,推理过程更快。原论文链接:https://arxiv.org/abs/1905.11946开源代码地址:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet