efficientnet翻译加自己的理解

摘要

卷积神经网络(ConvNets)通常是在固定的资源预算下开发的,如果有更多的资源可用,就会扩大规模以获得更好的准确性。在本文中,我们系统地研究了模型缩放,并认为仔细地平衡网络的深度、宽度和分辨率可以得到更好的性能。在此基础上,我们提出了一种新的尺度划分方法,即利用简单而高效的复合系数来均匀地划分深度/宽度/分辨率各维度。我们证明了该方法在放大MobileNets 和 ResNet方面的有效性 。更进一步,我们使用神经结构搜索neural architecture search 来设计一个新的基线网络,并将其扩展以获得一系列模型,称为EfficientNets ,其精度和效率都比以前的ConvNets好得多。特别是,我们的efficientnet - b7在ImageNet上实现了最先进的84.3%的top-1 accurac,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的efficiententnets在cifar - 100(91.7%)、Flowers(98.8%)和其他3个迁移学习数据集上迁移效果也很好,达到了最先进的精度,参数少了一个数量级。源代码是在https:/ / github.com/tensorflow/tpu/tree/主/模型/官方/高效网络

介绍

1尺度可变ConvNets被广泛用于获得更好的精度。例如,ResNet (He et al., 2016)可以通过使用更多层从ResNet-18扩展到ResNet-200;最近,GPipe (Huang et al., 2018)通过扩大基线模型4次,获得了84.3%的ImageNet top-1精度。u 扩展ConyNets的过程从来没有被很好地理解过,目前有很多方法可以做到这一点。最常见的方法是通过深度扩大ConvNets的规模(He et al…)。或宽度(Zagoruyko & Komodakis. 2016)。另一种不太常见但越来越流行的方法是通过图像分辨率放大模型(Huang et al., 2018)。在以往的工作中,通常只按三个维度中的一个来衡量——深度。宽度和图像大小。尽管可以任意扩展两个或三个维度,但任意扩展需要繁琐的手工调优,而且常常无法达到最佳的精度和效率。
2在本文中,我们想研究和重新思考扩大ConvNets的过程。特别地,我们调查中心问题:是否有一个原则的方法来扩大ConvNets,以达到更好的准确性和效率?我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单的固定比例缩放来实现。在此基础上,我们提出了一种简单而有效的复合标度方法(compound scaling method). ,有别于传统的任意标度方法。我们的方法均匀地缩放网络的宽度、深度以及一组固定尺度系数的分辨率。例如,如果我们想使用2N倍的计算资源,那么我们可以简单地将网络深度增加a的N次方,宽度增加B的N次方,图像大小增加γ的N次方,其中a, B,γ是由在原始小模型上进行小网格搜索所确定的常系数。图2说明了我们的缩放方法和传统方法之间的区别。
在这里插入图片描述

图2。模型扩展。(a)是一个基线网例;(b)-(d)是常规缩放,只增加网络宽度、深度或分辨率的一维,(e)是我们提出的复合缩放方法,以固定的比例均匀缩放三个维度

3直观上,复合尺度法是有意义的,因为如果输入图像更大,那么网络需要更多的层次来增加接受野,需要更多的通道来捕捉更细粒度的模式。事实上,之前的理论(Raghu et al., 2017;Lu et al., 2018)和实证结果(Zagoruyko & Komodakis, 2016)均表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率三个维度之间的关系进行实证量化的人。
4我们证明了我们的缩放方法在现存的MobileNets (Howard等人,2017年;桑德勒等人,2018年)和ResNet (He et al. 2016)上工作得很好。值得注意的是,模型缩放的有效性在很大程度上依赖于基线网络:为了更进一步,我们使用神经结构搜索(Zoph & Le 2017: Tan et al. 2019)来开发一个新的基线网络,并将其扩展以获得一系列模型,称为EfficientNets 。图1总结了ImageNet的性能。我们的效率网明显优于其他ConvNets。特别是,我们的efficient - net - b7超过了现有的最佳GPipe精度(Huang等。)但是减少了8.4倍的参数,推理速度提高了6.1倍。与广泛使用的ResNet-50相比(He等…我们的EffcientNet-B4将top-1 accurac从76.3%提高到83.0%(+6.7%),类似的FLOPs下。除了ImageNet, efficient net也有很好的迁移能力,在8个广泛使用的数据集中的5个上实现了最新的精确度,同时减少了比现有ConvNets大21倍的参数。

相关工作

ConvNet的精度:自从AlexNet (Krizhevsky et al., 2012)赢得了2012年ImageNet竞赛后,ConvNet通过不断增大而变得越来越精确:2014年ImageNet冠军GoogleNet (Szegedy et al., 2015)在参数约为6.8M的情况下达到了74.8%的第一精度,而2017年ImageNet冠军SENet (Hu et al., 2015)。2018年)以145M参数实现82.7%的最高精度。最近,GPipe (Huang et al., 2018)使用557M参数将最先进的ImageNet top-1验证精度进一步提高到84.3%:它太大了,只能通过一个专门的管道并行化库进行训练,方法是将网络分割并将每个部分扩展到一个不同的加速器。而这些模型主要是为ImageNet设计的。最近的研究表明,更好的ImageNet模型在各种传输学习数据集(Kornblith et al., 2019)和其他计算机视觉任务,如目标检测(He et al., 2016;谭et al . .2019)。虽然对许多应用程序来说,更高的精度是至关重要的,但我们已经达到了硬件内存的极限,因此进一步提高精度需要更高的效率。

Alexnet 6.8M 74.8
SEnet 145M 82.7
Gpipe 557M 84.3

convNet效率:深度convNet经常被过参数化。模型压缩(Han等,2016:He等,2018;Yang et al., 2018)是一种通过交易准确性来提高效率的方法来减少模型规模。随着移动电话变得无处不在,手工制作高效的移动大小的ConvNets也很常见,比如squeezenet(兰多拉等人,2016年;戈拉米等人2018), mobilenet(Howard等人,2017; Sandler等人,2018)和ShuffleNets(Zhang et al., 2018;Ma等,2018)。近年来,**神经结构搜索neural architecture search 在设计中越来越流行高效移动规模的convnets(tan等,2019年;Cai等)。通过广泛调整网络宽度、深度、卷积核类型和大小,实现了比手工制作的移动卷积网更好的效率。然而,尚不清楚如何将这些技术应用于具有更大设计空间和更昂贵调优成本的大型模型。在这篇论文中,我们的目标是研究超精确的超大ConvNets的模型效率。为了实现这一目标,我们求助于模型缩放
模型缩放:有很多方法可以针对不同的资源约束缩放一个卷积网:ResNet (He等…)可按比例缩小(例如:…或up(例如:…调整网络深度(#layers),而Wideresnet (扎戈鲁伊科和科莫达基斯, 2016) 和mobilenet (Howard et al., 2017)可以通过网络宽度(#channels)来缩放。人们也很清楚,更大的输入图像尺寸将有助于准确性与更多FLOPs的开销。尽管之前的研究(Raghu et al., 2017:林和杰格尔卡, 2018: 沙利尔和沙舒亚, 2018: 卢等人。(2018)的研究表明,网络的深度和宽度对于卷积神经网络的表达能力都很重要,但
如何有效地缩放卷积神经网络以达到更高的效率和精度仍然是一个有待解决的问题。**我们的工作系统和经验研究ConvNet 的所有三个维度的网络宽度,深度和分辨率。

compound model scaling

在这一节中。我们将会构想出标度问题,研究不同的方法,并提出我们新的标度方法。
1问题构想
在这里插入图片描述
1convnet N可以用一列组合层来表示
ConvNet层通常分为多个阶段,除了第一阶段下采样外,其余通常分为多个阶段,每个阶段的所有层采用相同的架构
FiLi表示第i阶段Fi层重复Li次
上图(a)展示了一个典型的卷积网络,其中空间维度是逐渐缩小的,而通道维度是逐层扩展的,例如,从初始输入形状224;224;3开始i到最终输出形状7;7;512
2提升常规卷积网络设计,主要关注寻找最佳的层架构Fi,模型缩放试图扩展网络的长度(L)、宽度©和/或分辨率(H. W),而不改变在基线网络中预定义的Fi。通过确定Fi,模型缩放简化了新资源约束下的设计问题,但仍有很大的设计空间去探索不同的Li、Ci、Hi、W;每一层。为了进一步缩小设计空间,我们限制了所有的lavers必须以恒定的比例均匀缩放。我们的目标是为任何给定的资源约束最大化模型的准确性。可表示为一个优化问题:
在这里插入图片描述
2缩放维度
1问题2的主要难点在于最优d、w、r相互依赖,且在不同资源约束下取值变化。由于这一困难,传统的方法大多在这些维度中缩放ConvNets:
2深度(d):最常用的方法是缩放网络深度被许多ConvNets使用(He等人,2016; Huang等人,2017;Szegedy等,2015;2016)。直觉上,更深入的卷积网络可以捕捉更丰富、更复杂的特征,并在新的任务上很好地推广。然而,由于梯度消失,深度网络的训练也更加困难(扎戈鲁伊科和科莫达基斯,2016年)。虽然 一些技术,如跳跃连接(He et al., 2016)和批处理归一化(loffe & Szegedy, 2015),缓解了训练问题,非常深网络的精度增益降低:例如。ResNet-1000和ResNet-101有相似的精确度,尽管它有更多的层。图3(中间)显示了我们对不同深度系数d的基线模型缩放的实证研究,进一步表明非常深卷积网的精度回报递减。
图3。将不同网络宽度(u)、深度(d)和分辨率®系数的基线模型进行缩放。网络越大,宽度、深度或分辨率越大,精度越高,但精度增益达到80%后很快饱和,说明了一维尺度缩放的局限性。基线网络如表1所示。4

3宽度(w):缩放网宽是常用的小型模型(霍华德等人,2017年;桑德勒等人,2018年;Tan等人,2019) 2.如中讨论的 (扎戈尔 · 科和科modakis。2016年),更广的网络往往能够捕捉到更细粒度的特征,也更容易训练。然而。极宽但浅的网络在捕获更高层次的特征时往往有困难。我们的经验结果在图3(左)显示,当网络变得更宽,更大的w时,准确率很快饱和。
4分辨率®:有了更高分辨率的输入图像,ConvNets可以潜在地捕获更细粒度的模式。从早期ConvNets的224x224开始,现代的ConvNets倾向于使用299x299 (Szegedy等。或331x331 (Zoph等,2018),以提高准确性。最近,GPipe (Huang等。(2018)实现了最先进的ImageNet精度,分辨率为480x480。更高分辨率,如600x600,也被广泛应用于生物检测ConvNets中(He et al., 2017;Lin等,2017)。图3(右)显示了网络分辨率缩放的结果,更高的分辨率确实提高了精度,但是对于非常高的分辨率,精度增益会降低(r = 1.0表示分辨率为224x224, r= 2.5表示分辨率为560x560)。以上分析使我们得出第一个结论:
5观测1-网络宽度、深度或分辨率的任何维度都可以提高精度,但对于较大的模型,精度增益会降低。
3compound scaling
1我们从经验上观察到,不同的尺度不是独立的。直观地说,对于分辨率较高的图像,我们应该增加网络深度,这样,更大的感受野可以帮助捕获更大图像中包含更多像素的相似特征。相应的,当分辨率较高时,也应该增加网络宽度。为了在高分辨率图像中捕捉更多的细粒度模式和更多的像素。这些直觉告诉我们,我们需要协调和平衡不同的尺度,而不是传统的一维尺度。在这里插入图片描述
图4。针对不同的基线网络缩放网络宽度。线中的每个点表示一个不同宽度的模型。系数(u)。所有基线网络见表1。第一个基线网络(d=1.0, r=1.0)有18个卷积lavers,分辨率为224x224。而最后一个基线(d=2.0, r=1.3)有36个层,分辨率为299x299。
2为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放,如图所示4. 如果我们只缩放网络宽度w而不改变深度(d=1.0)和分辨率(r=1.0),精度会很快饱和。具有更深的(d=2.0)和更高的分辨率(r=2.0)。宽度缩放在相同的FLOPs代价下达到更好的精度。这些结果使我们得出第二个观察结果:
3观测2为了追求更高的精度和效率,在进行对convnet尺度变换时,关键是要平衡网宽、网深和网分辨率的各个维度。
4事实上,之前的一些工作(Zoph et al., 2018;Real等人,2019)已经尝试过任意平衡网络宽度和深度,但都需要繁琐的手动调整。
5本文提出了一种新的复合标度方法,利用复合系数原则地均匀标度网络的宽度、深度和分辨率:

在这里插入图片描述
在这里插入图片描述

网络结构

由于模型缩放不会改变基线网络中的laver算子,因此拥有一个良好的基线网络也是至关重要的。我们将使用现有的ConyNets来评估我们的标度方法,但为了更好地证明我们的标度方法的有效性。我们还开发了一种新的手机尺寸基准,叫做“EfficientNet ”。
受到(Tan et al., 2019)的启发,我们通过利用多目标神经结构搜索来优化我们的基线网络,这种搜索既优化了精确性,也优化了FLOPs。具体来说,我们使用相同的搜索空间(Tan et al ., 2019),并使用ACC (m) xIFLOPS (m) / Tw作为优化目标,ACC (m)和FLOPs(m)表示m的准确性和FLOPs。T是目标FLOPs和w = -0.07是hyperparameter控制准确性和FLOPs之间的权衡。不像(Tan et al., 2019;Cai等人,2019),这里我们优化的是FLOPs而不是延迟,因为我们不针对任何特定的硬件设备。我们的搜索产生了一个高效的网络,我们将其命名为efficient net - bo。由于我们使用相同的搜索空间(Tan et al., 2019),架构类似于MnasNet,除了我们的efficient - Net- bo稍微大一些,因为我们的FLOPS目标更大(我们的FLOPS目标是400M)。表一显示了efficient - net - bo的架构。其mair构件为mobile倒置瓶颈MBConv (Sandler et al., 2018: Tan et al., 2019),对此我们也ado压缩激励优化(Hu et al., 2018: Tan et al., 2019)。2018)。从baseline efficient - net - bo开始,我们通过两个步骤应用我们的复合缩放方法来扩展它:
在这里插入图片描述
从baseline efficient - net - bo开始,我们通过两个步骤应用我们的复合缩放方法来扩展它:
步骤1:首先fixφ=1,假设有两倍以上的资源可用,然后根据公式2和3对a、B、y进行小的网格搜索。特别地,我们发现在a. 82.2 ~2的约束下,efficiency - bo的最佳值分别为a=1.2,B= 1.1,7 = 1.15。在α · β2 · γ2 ≈ 2. 的约束下
第2步:将e、B、y固定为常数,利用公式3对不同的基线网络进行缩放,得到efficiency - bi到B7(详见表2)。
值得注意的是,通过直接围绕大型模型搜索a、B、y,有可能获得更好的性能,但在大型模型上搜索成本会变得昂贵得令人难以接受。我们的方法解决了这个问题,只在小的基线网络上进行一次搜索(步骤1),然后对所有其他模型使用相同的缩放系数(步骤2)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用EfficientNet训练自己的数据,您需要遵循以下步骤: 1. 准备数据集:收集和准备您的数据集,确保它们符合您的需求和标准。 2. 数据预处理:对数据进行预处理,包括图像增强、数据增强、数据划分等。 3. 构建模型:使用EfficientNet模型作为基础模型,根据您的需求和数据集进行微调和修改。 4. 训练模型:使用训练数据集对模型进行训练,并使用验证数据集进行验证和调整。 5. 测试模型:使用测试数据集对模型进行测试和评估。 6. 模型优化:根据测试结果对模型进行优化和改进,以提高模型的准确性和效率。 以上是训练自己数据集的一般步骤,具体实现需要根据您的具体情况进行调整和修改。 ### 回答2: EfficientNet是一种高效的神经网络架构,可用于训练自己的数据。它采用了一系列的网络结构扩展方式,通过提高网络的深度、宽度和分辨率来提升性能。 首先,为了训练自己的数据集,我们需要准备数据。将数据集划分为训练集和验证集,并对数据进行标注和预处理,以便让模型能够更好地学习。预处理可能包括图像增强和数据扩充等操作,以增数据的多样性。 接下来,我们需要下载预训练的EfficientNet模型权重。这些权重可以作为预训练模型的初始参数,迁移到我们的数据集上进行微调。这样可以在有限的数据集上获得更好的性能。 然后,将自己的数据集输入EfficientNet模型进行训练。使用合适的优化算法如随机梯度下降(SGD)或自适应矩估计(Adam),根据训练集的样本进行反向传播和参数更新。同时,使用验证集评估模型的性能,避免过拟合。 在训练过程中,可以使用学习率衰减策略来调整学习率,以提高训练的稳定性和效果。此外,还可以在训练过程中使用正则化技术,如Dropout或L2正则化,以防止过拟合。 当训练达到预定的停止条件时,可以保存模型并使用测试集进行性能评估。测试集应与训练集和验证集相互独立,以确保模型的泛化能力。 最后,根据模型在测试集上的性能,可以进行模型调整、超参数调优等进一步优化工作,以获得更好的结果。 总之,使用EfficientNet训练自己的数据需要准备数据集、下载预训练权重、迁移到自己的数据集上进行微调、选择优化算法、进行训练和验证、调整超参数等步骤。通过这些步骤,就可以以高效的方式训练自己的数据。 ### 回答3: 要训练自己的数据集,可以使用EfficientNet这个强大的模型。首先,需要确保数据集已经准备好,并且正确地标注了每个样本。接下来,根据数据集的大小和复杂度,选择合适的EfficientNet模型版本,如EfficientNet-B0到EfficientNet-B7。 然后,根据数据集的情况,调整EfficientNet模型的超参数和训练参数。例如,可以调整学习率、批大小和训练轮数等参数,以获得更好的训练效果。 在训练过程中,可以使用一些常见的数据增强技术,如旋转、平移、裁剪和翻转等,来增数据集的多样性和数量。这样可以提高模型的泛化能力和稳定性。 为了训练EfficientNet模型,可以使用流行的深度学习框架,如TensorFlow或PyTorch。使用这些框架可以方便地定义模型结构、载数据集和进行模型训练。 在训练过程中,可以监控模型的训练损失和验证准确率等指标,以便了解模型的训练进展。如果发现模型出现过拟合或欠拟合等问题,可以尝试调整超参数或增更多的训练数据来改善模型效果。 当模型训练完成后,可以使用测试集对模型进行评估,并计算模型的准确率、精确率、召回率和F1分数等指标。根据评估结果,可以进一步调整模型和训练策略,以获得更好的性能。 最后,可以使用训练好的EfficientNet模型对新的未知样本进行预测。将样本输入到模型中,即可得到相应的分类结果。 总而言之,EfficientNet是一个强大的模型,可以通过调整超参数和训练策略来训练自己的数据集。通过不断优化和改进,可以获得准确性高并且泛化能力强的模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值