摘要:在这项工作中,我们提出了一个新的网络设计范式。我们的目标是帮助提高对网络设计的理解,发现跨场景的通用设计原则。我们设计网络的设计空间,其将网络的群体参数化(we design network design spaces that parametrize populations of networks),而不是专注于设计单个的网络实例。整个过程类似于经典的网络手工设计,但提升到了设计空间层面(elevated to the design space level)。使用我们的方法,我们探索网络设计的结构方面(structure aspect),并得出一个低维的设计空间,由简单的,规则的网络组成,我们称之为RegNet。RegNet参数化的核心观点非常简单:良好网络的宽度和深度可以解释为一个量化线性函数(a quantized linear function)。我们分析了RegNet的设计空间,得出了与当前网络设计实践不符的有趣发现。RegNet设计空间提供了简单而快速的网络,可以在各种flops模式下正常工作。在类似的训练设置和flops下,RegNet模型的性能优于流行的EfficientNet模型,同时在gpu上的速度提高了5倍。
https://arxiv.org/pdf/2003.13678.pdf
1.引言
深度卷积神经网络是视觉识别的引擎。在过去的几年中,更好的体系结构在广泛的视觉识别任务中取得了相当大的进展。例子包括LeNet[15]、AlexNet[13]、VGG[26]和ResNet[8]。这项工作既提高了神经网络的有效性,也提高了我们对网络设计的理解。特别是,上述工作序列分别证明了卷积、网络和数据大小、深度和残差的重要性。这些工作的结果不仅是特定的网络实例,而且是设计原则,可以推广和应用到许多设置。
虽然人工网络设计带来了巨大的进步,但人工寻找优化良好的网络是一项挑战,特别是随着设计选择的增加。解决这一限制的一种流行方法是神经结构搜索(NAS)。给定可能网络的固定搜索空间,NAS会自动在搜索空间中找到一个好的模型。最近,NAS受到了广泛的关注,并显示出了优异的结果[34,18,29]。
尽管NAS是有效的,但这种范式还是有局限性的。搜索的结果是适配到特定设置(例如,硬件平台)的单个网络实例。这在某些情况下是足够的;然而,它并不能使我们发现网络设计原理,从而加深我们的理解,使我们能够推广到新的设置。特别是,我们的目标是找到易于理解、构建和推广的简单模型。
在这项工作中,我们提出了一个新的网络设计范式,结合了手工设计和NAS的优点。我们不是专注于设计单个网络实例,而是设计参数化网络群体的设计空间(design design spaces that parametrize populations of networks)。我们遵循[21]使用术语设计空间(design space),而不是搜索空间,以强调我们不是在该空间中搜索网络实例。相反,我们是在设计空间本身。与手动设计一样,我们的目标是可解释性,并发现描述网络的一般设计原则,这些网络简单、工作良好,并在设置中通用(to discover general design principles that describe networks that are simple, work well, and generalize across settings.)。与NAS一样,我们的目标是利用半自动化程序来帮助实现这些目标。
我们采用的通用策略是,在保持或提高其质量的同时,逐步设计初始、相对无约束的设计空间的简化版本(to progressively design simplified versions of an initial, relatively unconstrained, design space),如图1所示。整个过程类似于手动设计,但是是提升到群体层面( elevated to the population level),并通过网络设计空间的分布估计进行指导[21]。
作为这个范例的测试平台,我们的重点是探索网络结构(例如,宽度、深度、组( groups)等),假设标准模型族包括VGG[26]、ResNet[8]和ResNeXt[31]。我们从一个相对无约束的设计空间开始,我们称之为AnyNet(例如,不同阶段的宽度和深度可以自由变化),并应用我们的human in-the-loop方法来获得一个由简单的“规则”网络组成的低维设计空间,我们称之为RegNet。RegNet设计空间的核心很简单:阶段的宽度和深度由一个量化线性函数决定。与AnyNet相比,RegNet设计空间具有更简单的模型,更易于解释,并且具有更高的好模型集中度(has a higher concentration of good models)。
在ImageNet[3]上,我们使用单个网络块类型(using a single network block type),在低计算、低历元的情况下设计RegNet设计空间。然后,我们证明了RegNet设计空间可以推广到更大的计算区间、训练时长和网络块类型(larger compute regimes, schedule lengths, and network block types)。此外,设计空间设计的一个重要特性是它更具可解释性,并能带来我们可以借鉴的见解。我们分析了RegNet的设计空间,得出了与当前网络设计实践不符的有趣发现。例如,我们发现最佳模型的深度在不同的计算区间是稳定的the depth of the best models is stable across compute regimes (about 20 blocks),最好的模型不使用瓶颈或反向瓶颈。
我们将顶级REGNET模型与各种设置下的现有网络进行比较。首先,REGNET模型在移动端非常有效。我们希望这些简单的模型能成为今后工作的有力基线。接下来,REGNET模型在所有度量方面都比标准RESNE(X)T[8,31]模型有了相当大的改进。我们重点介绍了在固定激活下的改进(the improvements for fixed activations),这是一个非常有实际意义的问题,因为激活的数量可以强烈地影响加速器(如gpu)上的运行时间。下一步,我们比较了与最先进的EFFICIENTNET[29]模型在不同计算模式下的性能。在可比较的训练设置和flops下,REGNET模型的性能优于EFFICIENTNET模型,而在gpu上的速度高达5倍。我们进一步测试了ImageNetV2[24]的泛化。
我们注意到,网络结构可以说是设计空间设计中最简单的一种形式。专注于设计更丰富的设计空间(例如,将op设计也包含进去)可能会导致更好的网络。尽管如此,结构仍可能是此类设计空间的核心组成部分。
为了便于将来的研究,我们将发布本文介绍的所有代码和预训练模型https://github.com/facebookresearch/pycls
2.相关工作
手动网络设计。 AlexNet[13]的引入将网络设计推向了一个蓬勃发展的研究领域。在随后的几年里,提出了改进的网络设计;例如VGG[26]、Inception[27、28]、ResNet[8]、ResNeXt[31]、DenseNet[11]和MobileNet[9、25]。这些网络背后的设计过程基本上是手工的,重点是发现新的设计选择,以提高精度,例如,使用更深层次的模型或残差。同样,我们的目标是发现新的设计原则。事实上,我们的方法类似于手工设计,但在设计空间层次上执行。
自动化网络设计。 最近,网络设计过程已经从人工探索转向更自动化的网络设计,并由NAS推广。NAS已被证明是寻找好模型的有效工具,例如[35、23、17、20、18、29]。NAS的大部分工作集中在搜索算法上,即在一个固定的、人工设计的搜索空间(我们称之为设计空间)内高效地寻找最佳的网络实例。相反,我们的重点是设计新的设计空间。两者是互补的:更好的设计空间可以提高NAS搜索算法的效率,也可以通过丰富设计空间导致更好模型的存在。
网络扩展。 手动和半自动网络设计通常侧重于为特定计算量specific regime(例如,与ResNet-50相当的flops)寻找性能最佳的网络实例。由于此过程的结果是单个网络实例,因此不清楚如何使实例适应不同的计算量场景(例如,更少的flops)。通常的做法是应用网络缩放规则,例如改变网络深度[8]、宽度[32]、分辨率[9],或三者联合使用[29]。相反,我们的目标是发现跨 regimes 的通用设计原则,并允许在任何目标 regimes中对最优网络进行有效的调整。
比较网络。 考虑到大量可能的网络设计空间,有必要使用可靠的比较指标来指导我们的设计过程。最近,文献[21]的作者提出了一种方法来比较和分析从设计空间取样的网络总体(populations of networks)。这个分布层面的视角与我们寻找一般设计原则的目标完全一致。因此,我们采用这种方法,并证明它可以作为一个有用的工具,以用于设计空间的设计过程。
参数化。 我们的最终量化线性参数化与以前的工作有相似之处,例如如何设置阶段宽度[26,7,32,11,9]。然而,有两个关键的区别。首先,我们提供了一个实证研究来证明我们所做的设计选择。其次,我们深入了解了以前不了解的结构设计选择(例如,如何设置每个阶段的块数)。
3.设计空间设计
我们的目标是设计更好的视觉识别网络。我们研究模型的群体行为(we study the behavior of populations of models.),而不是在特定的环境下设计或搜索一个单一的最佳模型。我们的目标是发现可应用于和改进整个模型群体的一般设计原则。这样的设计原则可以提供对网络设计的见解,并且更有可能推广到新的设置(不同于针对特定场景调整的单一模型)。
我们依赖于Radosavovic等人[21]提出的网络设计空间的概念。一个设计空间是一个巨大的(可能是无限的)模型架构的群体。[21]的核心观点是,我们可以从设计空间中采样模型样本,从而产生模型分布,并使用经典统计中的工具来分析设计空间。我们注意到这与架构搜索不同,架构搜索的目标是从空间中找到单个最佳模型。
在这项工作中,我们提出设计逐步简化版本的初始、无约束的设计空间。我们把这个过程称为设计空间设计。设计空间设计类似于顺序人工网络设计,但提升到群体层面。具体来说,在我们设计过程的每一个步骤中,输入是一个初始设计空间,输出是一个refined的设计空间,其中每个设计步骤的目的是发现产生更简单或性能更好模型的设计原则。(In this work, we propose to design progressively simplified versions of an initial, unconstrained design space. We refer to this process as design space design. Design space design is akin to sequential manual network design, but elevated to the population level. Specifically, in each step of our design process the input is an initial design space and the output is a refined design space, where the aim of each design step is to discover design principles that yield populations of simpler or better performing models.)
我们首先在§3.1中描述我们用于设计空间设计的基本工具。接下来,在§3.2中,我们将我们的方法应用于一个设计空间,称为AnyNet,它允许无约束的网络结构。在§3.3中,经过一系列的设计步骤后,我们得到了一个简化的设计空间,该空间仅由我们称之为RegNet的规则网络结构组成。最后,由于我们的目标不是为单个设置设计一个设计空间,而是为了发现推广到新设置的网络设计的一般原则,因此在§3.4中,我们测试了RegNet设计空间推广到新设置的情况。
相对于AnyNet设计空间,RegNet设计空间是:(1)在其维度和允许的网络配置类型方面都简化了,(2)包含了更高集中度的顶级性能模型,以及(3)更易于分析和解释。(Relative to the AnyNet design space, the RegNet design space is: (1) simplified both in terms of its dimension and type of network configurations it permits, (2) contains a higher concentration of top-performing models, and (3) is more amenable to analysis and interpretation.)
3.1. 设计空间设计工具
我们从设计空间设计工具的概述开始。为了评估和比较设计空间,我们使用了Radosavovic等人[21]引入的工具,他们提出通过从设计空间中抽取一组模型并描述由此产生的模型误差分布来量化设计空间的质量。这种方法背后的关键直觉是,相比使用搜索(手动或自动)并比较从两个设计空间中找到的最佳模型,比较两个设计空间的模型误差分布要更可靠,信息更丰富。
为了得到模型的分布,我们从一个设计空间对n个模型进行抽样和训练。为了提高效率,我们主要在低计算、低历元的训练模式下进行。特别是,在本节中,我们使用400 million flop(400MF)的计算区间,并在ImageNet数据集上对每个采样模型进行10个历元的训练[3]。(注释:按照惯例,我们用flops表示乘加(multiply-adds)。此外,我们使用MF和GF分别表示10e6和10e9触发器。)我们注意到,虽然我们训练了许多模型,但每次训练都很快:训练100个400MF的模型,每个模型训练10个epoch,其flops大致相当于训练一个ResNet-50(其为4GF),训练100epoch。
和[21]一样,我们分析设计空间质量的主要工具是误差经验分布函数(empirical distribution function,EDF)。个模型,误差为的误差EDF为:
给出了误差小于的模型的占比。我们在图2(左)中显示了来自AnyNetX设计空间(如§3.2所述)的n=500个采样模型的误差EDF。
给定一组经过训练的模型,我们可以绘制和分析各种网络特性与网络误差的关系,参见图2(中)和(右)中取自AnyNetX设计空间的两个示例。这样的可视化显示了一个复杂的高维空间的一维投影,并有助于获得对设计空间的洞察。对于这些曲线图,我们采用empirical bootstrap[5]来估计最佳模型的可能下降范围。
总结如下:(1)我们从一个设计空间中抽取并训练n个模型,生成模型的分布,(2)我们计算并绘制误差EDF,以总结设计空间的质量,(3)我们将设计空间的各种特性可视化,并使用empirical bootstrap来获得洞察力,并且(4)我们使用这些见解来完善设计空间。
注释4:给定对模型统计量,其中是模型特性,例如深度,是对应的误差。empirical bootstrap计算为:(1)抽样替换25%的配对(sampling with replacement 25% of the pairs),(2)选择样本中误差最小的一对,(3)重复次,最后(4)计算最小值的95%置信区间。中位数给出了最有可能的最佳值。
3.2. AnyNet设计空间
接下来我们将介绍我们最初的AnyNet设计空间。我们的重点是探索神经网络的假设标准的结构,固定的网络块(例如,残差瓶颈块)。在我们的术语中,网络的结构包括诸如块的数量(即网络深度)、块宽度(即通道数量)和诸如瓶颈比率、组宽度之类的其他块参数的元素。网络的结构决定了计算、参数和内存在整个网络计算图中的分布,是决定其准确性和效率的关键。
在我们的AnyNet设计空间中,网络的基本设计非常简单。给定一个输入图像,一个网络的组成包括一个简单的stem,然后是执行大部分计算的网络主体(body),以及预测输出类的最终网络头(head)组成,见图3a。我们保持stem和head固定,并且是尽可能的简单,我们关注的是body的结构,这是决定网络计算和准确性的核心。
网络body由4个阶段组成,以逐渐降低的分辨率运行,见图3b(我们在§3.4中探讨了不同的阶段数量)。每个阶段由一系列相同的块组成,见图3c。总的来说,对于每个阶段,自由度包括块数、块宽度和任何其他块参数。虽然总体结构很简单,但AnyNet设计空间中可能的网络总数是巨大的。
我们的大多数实验都使用带有组卷积的标准残差瓶颈块[31],如图4所示。我们将其称为X块,并将基于此的AnyNet设计空间称为AnyNetX(我们在§3.4中探讨了其他块)。虽然X块是相当简单的,但我们证明了它在优化网络结构时是非常有效的。
AnyNetX设计空间有16个自由度,因为每个网络由4个阶段组成,每个阶段有4个参数:块数、块宽度、瓶颈比和组宽度。除非另有说明,网络的输入分辨率为224。为了得到有效的模型,我们对做对数均匀采样再除以8,另外,(我们稍后测试这些范围)。我们重复采样过程,直到在目标复杂度的区间(360MF到400MF)中获得n=500个模型,并对每个模型进行10个epoch的训练。图2显示了AnyNetX的基本统计数据。(注释5:我们在§3中的训练设置完全遵循[21]。我们使用动量为0.9的SGD,1 GPU上的mini-batch size为128,以及初始学习率为0.05、权重衰减为5·10e-5的半周期余弦schedule。10个epochs通常足以提供可靠的群体统计数据。)
在AnyNetX设计空间中,有个可能的模型配置。我们并不从这大约个配置中搜索一个最好的模型,而是探讨是否有通用的设计原则,可以帮助我们了解和完善这个设计空间。为此,我们采用了设计设计空间的方法(we apply our approach of designing design spaces)。在这一方法的每一步中,我们的目标是:
1.要简化设计空间的结构,
2.要提高设计空间的可解释性,
3.改善或维持设计空间的质量,
4.保持设计空间的模型多样性。
我们现在将此方法应用于AnyNetX设计空间。
AnyNetX_A 为清楚起见,我们将初始的、无约束的AnyNetX设计空间称为AnyNetX_A。
AnyNetX_B 我们首先测试AnyNetX_A设计空间的所有阶段的瓶颈比率都相同,将得到的设计空间称为AnyNetX_B。和之前一样,我们在相同的设置下从AnyNetX_B中采样并训练500个模型。图5(左)所示的AnyNetX_A和AnyNetX_B的EDF在平均和最佳情况下几乎相同。这表明耦合时没有精度损失。除了更简单之外,AnyNetX_B更易于分析,如图5(右)所示。
AnyNetX_C 我们的第二个精化步骤(refinement step)紧跟第一个步骤。从AnyNetX_B开始,我们另外为所有阶段使用相同的组宽度来获得AnyNetX_C。与之前一样,EDF几乎没有变化,见图5(中间)。总的来说,AnyNetX_C比AnyNetX_A少了6个自由度,并且减少了近四个数量级的设计空间大小。有趣的是,我们发现是最好的(未显示);我们在§4中对此进行了更详细的分析。
AnyNetX_D 接下来,我们在图6中分析了AnyNetX_C中好网络和坏网络的典型网络结构。出现了一种模式:好网络的宽度是随着阶段而增加的。我们测试了的设计原理,并将具有此约束的设计空间称为AnyNetX_D。在图7(左)中,我们看到这大大提高了EDF。我们回过头去检查其他选项以快速地控制网络宽度。(We return to examining other options for controlling width shortly)
AnyNetX_E 在进一步检查许多模型(未显示)后,我们观察到另一个有趣的趋势。最好的一些模型,除了阶段宽度随着而增加,阶段深度也倾向于随着而增加,尽管在最后一个阶段不一定是这样(although not necessarily in the last stage)。我们测试了的设计原理,由此得到设计空间变体AnyNetX_E,如图7(右),可以看到它也改进了结果。最后,我们注意到和上的约束都将设计空间缩减了4倍!从AnyNetXA累积减少了。(each reduce the design space by 4)
3.3. RegNet设计空间
为了进一步了解模型结构,我们在单个图中展示了AnyNetX_E中最好的20个模型,见图8(左上角)。对于每个模型,我们绘制每个块的每块宽度(per-block width),直至网络深度(我们分别使用和表示阶段索引和块索引)。我们的模型可视化参考图6。
虽然个别模型(灰色曲线)存在显著差异,但总体上出现了一种模式。特别是,在同一个图中,我们画出了的曲线(实心黑色曲线,请注意y轴为取对数)。值得注意的是,这种简单的线性拟合似乎可以解释顶级模型网络宽度增长的群体趋势。然而,请注意,这种线性拟合为每个块指定了不同的宽度,而单个模型具有量化的宽度(分段常数函数)。
为了查看类似的模式是否适用于单个模型,我们需要一种策略,将一条线量化为一个分段常数函数。受AnyNetX_D和AnyNetX_E观察结果的启发,我们提出以下方法。首先,我们介绍块宽度的线性参数化:
此参数化有三个参数:深度、初始宽度和坡度,并为每个块生成不同的块宽度。为了量化,我们引入一个额外的参数,该参数控制量化,如下所示。首先,给定公式中的,我们计算每个块的,使得下式成立:
然后,为了量化,我们简单地将四舍五入取整(round),表示为,并通过以下方式计算量化的每块宽度(per-block widths):
我们可以很简单地将每块宽度计算为每阶段形式,实现为简单地计数宽度恒定的块的数量,也就是,每个阶段有块宽度和块数。当只考虑四阶段网络时,我们忽略了导致不同阶段数的参数组合。
我们通过拟合来自AnyNet_X的模型来测试这个参数化。特别是,给定一个模型,我们通过将网络深度设置为,并在、和上执行网格搜索来计算拟合度,以最小化每个块宽度的预测值与观测值的平均对数比(mean log-ratio,用表示)。图8(右上)显示了来自AnyNetX_E的两个顶级网络的结果。量化线性拟合(虚线)是这些最佳模型(实线)的好拟合。
接下来,我们在图8(底部)中绘制了AnyNetXC到AnyNetXE中每个网络的拟合误差和网络误差。首先,我们注意到每个设计空间中的最佳模型都具有良好的线性拟合。事实上,经验引导给出了一个接近0的窄带,它可能包含了每个设计空间中最好的模型。第二,我们注意到,平均而言,从AnyNetXC到AnyNetXE得到了改进,showing that the linear parametrization naturally enforces related constraints to and increasing.
为了进一步验证线性参数化,我们设计了一个只包含这种线性结构模型的设计空间。特别地,我们通过6个参数指定了一个网络结构:,,,,,。给定这些,我们通过公式(2)到公式(4)生成块宽度和深度。我们将生成的设计空间称为RegNet,因为它只包含简单、规则的模型。我们采样,
我们的样本d<64,,,和与以前一样(范围根据AnyNetXE上的设置,ranges set based on efit on AnyNetXE)。
RegNetX的误差EDF如图9(左)所示。在保持最佳模型的同时,RegNetX中的模型比AnyNetX具有更好的平均误差。在图9(中间)中,我们测试了两个进一步的简化。首先,使用(两级之间的宽度加倍)略微改善EDF,但我们注意到使用性能更好(稍后显示)。其次,我们测试设置,进一步将线性参数化简化为。有趣的是,它的性能甚至更好。但是,为了保持模型的多样性,我们不施加任何限制。最后,在图9(右)中,我们展示了RegNetX的随机搜索效率要高得多;搜索大约32个随机模型可能会得到好的模型。
表1显示了设计空间大小的总结(对于RegNet,我们通过量化其连续参数来估计大小)。在RegNetX的设计中,我们将原有的AnyNetX设计空间的维数从16降到了6维,大小接近10个数量级。然而,我们注意到,RegNet仍然包含各种各样的模型,可以针对各种设置进行调优。
3.4. 设计空间推广
我们设计的RegNet设计空间在一个低计算,低历元训练区间,只有一个单一的块类型。然而,我们的目标不是为一个单一的设置设计一个设计空间,而是发现网络设计的一般原则,可以推广到新的设置。
在图10中,我们将RegNetX设计空间与AnyNetXA和AnyNetXE在更高的flops、更高的epoch、5阶段网络和各种块类型下进行了比较(见附录)。在所有情况下,设计空间的顺序都是一致的,RegNetX > AnyNetXE > AnyNetXA。换言之,我们看不到过拟合(过度适配,overfitting)的迹象。这些结果很有希望,因为它们表明RegNet可以推广到新的设置。五阶段结果表明,RegNet的规则结构可以推广到更多的阶段的设置,其中AnyNetXA具有更多的自由度。
4.分析RegNetX设计空间
接下来,我们将进一步分析RegNetX设计空间,并重新讨论常见的深层网络设计选择。我们的分析产生了与流行实践不符的令人惊讶的见解,这使我们能够用简单的模型获得良好的结果。
由于RegNetX设计空间集中了大量优秀的模型,因此对于以下结果,我们将切换到较少的模型(100)采样,但将其训练更长的时间(25个epochs),学习率为0.1(见附录)。我们这样做是为了观察网络行为中更细粒度的趋势。
RegNet趋势。 我们在图11中显示了不同flop区间的RegNetX参数的趋势。值得注意的是,最佳模型的深度在不同区间(左上)是稳定的,最佳深度约为20个块(60层)。这与普遍做法是使用更深的模型以获得更高的flops形成对比。我们还观察到,最佳模型使用的瓶颈比率为1.0(上中),这有效地消除了瓶颈(通常在实践中使用)。接下来,我们观察到好模型的宽度乘数约为2.5(右上角),与流行的跨阶段宽度倍增的方法相似但不完全相同。其余的参数随着复杂度的增加而增加(底部)。(The remaining parameters (g, wa, w0) increase with complexity (bottom).)
复杂性分析。 除了flops和参数量之外,我们还分析了网络激活量,我们将其定义为所有conv层的输出张量的大小(图12左上角列出了常见conv操作符的复杂性度量)。虽然不是衡量网络复杂性的常用方法,但激活量在内存受限硬件加速器(如GPU、TPU)上会严重影响运行时间,例如,见图12上面一行。在图12下面一行中,我们观察到对于群体中的最佳模型,激活量随着flops的平方根而增加,随着参数量而线性增加,并且,运行时间最好同时使用线性项和平方根项进行建模,因为它同时取决于于flops和激活量。
RegNetX约束。 利用这些发现,我们改进了RegNetX的设计空间。首先,根据图11(上图),我们设置,和。其次,我们限制参数量和激活量,如图12(底部)所示。这将产生快速、低参数量、低内存占用,而不影响精度的模型。在图13中,我们用这些约束测试RegNetX,并观察到约束版本在所有flop区域中都是优越的。我们在§5中使用这个版本,并进一步将深度限制为12≤ D≤ 28(另见附录D)。
替代设计选择。 现代移动网络通常采用[25]中提出的反向瓶颈()和深度卷积[1]()。在图14(左)中,我们观察到反向瓶颈略微降低了EDF,并且,相对于和,深度卷积表现得更差(进一步分析见附录)。接下来,受[29]发现缩放输入图像分辨率会有帮助的启发,我们在图14(中间)中测试了不同的分辨率。与[29]相反,我们发现对于RegNetX,224×224的固定分辨率是最好的,即使在更高的flops下也是如此。
SE 最后,我们使用流行的压缩和激励(SE)op[10]来评估RegNetX(我们将X+SE缩写为Y,并将得到的设计空间称为RegNetY)。在图14(右)中,我们看到RegNetY产生了良好的收益。
5.与现有网络的比较
我们现在将RegNetX和RegNetY设计空间中各种复杂度的顶级模型与ImageNet上的最新技术进行比较[3]。我们使用小号大写字母来表示各个模型,例如REGNET_X。我们还为这些型号添加了flop格式的后缀,例如400MF。对于每个flop模式,我们从RegNet参数的25个随机设置中选择最佳模型,并对最佳模型重新训练5次(每次100peoch),以获得可靠的误差估计。
图15和16分别显示了每个flop模式的顶级REGNETX和REGNETY模型。除了简单的线性结构和我们在§4中分析的趋势之外,我们还观察到一个有趣的模式。也就是说,较高的flop模型在第三阶段有大量的块,在最后阶段有少量的块。这类似于标准RESNET模型的设计。此外,我们观察到群宽度g随着复杂度的增加而增加,而深度对于大型模型是饱和的。
我们的目标是进行公平比较,并提供简单易复制的基线。我们注意到,除了更好的体系结构之外,最近报道的网络性能的大部分提高都是基于训练策略和正则化技巧(见表7)。由于我们的重点是评估网络体系结构,因此我们在相同的训练设置下进行了精心控制的实验。特别是,为了提供与经典作品的公平比较,我们不使用任何训练时增强(we do not use any training-time enhancements)。
5.1. 最新技术比较:移动端计算区间
最近在网络设计方面的大部分工作都集中在移动领域(大约600MF)。在表2中,我们比较了600MF的REGNET模型和现有的移动端网络。我们观察到,与手动设计[9、25、19]和NAS[35、23、17、18]找到更好的移动网络的大量工作相比,REGNETS在这个计算区间中出人意料地有效。
我们强调,REGNET模型使用我们的基本100 epoch schedule ,除了权重衰减之外没有任何正则化,而大多数移动网络使用更长的schedule,使用各种训练技巧,例如深度监督[16]、Cutout [4]、DropPath[14]、AutoAugment[2]等等。因此,我们希望我们在短期训练计划中取得的良好成果能够作为今后工作的一个简单基准。
5.2. 标准基线比较:ResNe(X)t
接下来,我们将REGNETX与标准RESNET[8]和RESNEXT[31]模型进行比较。实验中的所有模型都来自完全相同的设计空间,前者是人工设计的,后者是通过设计空间设计获得的。为了公平比较,我们在相同的训练设置(我们的标准REGNET训练设置)下比较REGNET和RESNE(X)T模型。我们注意到,这导致改进RESNE(X)T基线,并强调了谨慎控制训练设置的重要性。
比较如图17和表3所示。总的来说,我们看到REGNETX模型通过单独优化网络结构,在所有复杂度指标下都提供了相当大的改进。我们强调,好的REGNET模型可以在各种计算区间下使用,包括在低计算区间下,没有好的RESNE(X)T模型。
表3a显示了按激活量分组的比较(这会强烈影响加速器(如gpu)的运行时间)。这种设置对研究社区特别有兴趣,因为模型训练时间是一个瓶颈,将来可能会有更多的实际用例,特别是当加速器在推理时间获得更多的使用时(例如,在自动驾驶汽车中)。给定固定的推理或训练时间预算,REGNETX模型是非常有效的。
5.3. 最新技术比较:在所有的计算区间
我们将比较的重点放在EFFICIENTNET上[29],它代表了最新技术,并报告了使用NAS和跨复杂度的有趣模型缩放规则的组合获得的令人印象深刻的收益。
为了实现直接比较,并隔离由于网络架构的改进而产生的增益,我们选择复制精确的EFFICIENTNET模型,但使用我们的标准训练设置,训练100个epoch,除了权重衰减之外没有正则化(更长的训练和更强的正则化的影响如表7所示)。我们只优化了和,参见附录中的图22。这与REGNET的设置相同,可以进行公平比较。
结果如图18和表4所示。在低flops下,EFFICIENTNET优于REGNETY。在中间flops,REGNETY的性能优于EFFICIENTNET,在较高的flops中,REGNETX和REGNETY的性能都更好。
我们还观察到,对于EFFICIENTNET,激活量与flops成线性比例(由于分辨率和深度的缩放),而对于regnet,激活与flops的平方根成比例。这会导致EFFICIENTNET的GPU训练和推理时间变慢。例如,REGNETX-8000比EFFICIENTNET-B5快5倍,而错误率却更小。
6.结论
在这项工作中,我们提出了一个新的网络设计范式。我们的研究结果表明,设计网络设计空间是一个为今后的研究很有前途的途径。
附录A:测试集评估
在本文中,我们在ImageNet[3]验证集上进行了所有实验。这里我们在ImageNetV2[24]测试集上评估我们的模型(原始测试集不可用)。
评估设置。 为了研究在ImageNet上开发的模型的泛化,[24]的作者按照原始程序(ImageNetV2)收集了一个新的测试集。他们发现新的测试集上,模型的排序不会变,但绝对误差会增加。(They find that the overall model ranks are preserved on the new test set.) 我们在ImageNetV2测试集上重复§5中的比较。
RESNE(X)T比较。 表5中,我们与RESNE(X)T模型进行了比较。我们发现,虽然模型排序通常是一致的,但是它们之间的差距减小了。尽管如此,REGNETX模型仍然是比较有利的,并且在不同的flop区间提供了良好的模型,包括在低计算区间中,没有良好的RESNE(X)T模型可用。使用REGNETY可以获得最佳结果。
与EFFICIENTNET比较 我们与表6中的EFFICIENTNET模型进行了比较。与之前一样,我们观察到模型的排序大体一致,但差距减小。总的来说,结果证实了REGNET模型的性能相当于最先进的EFFICIENTNET,同时在gpu上的速度高达5倍。
附录B:附加消融
在本节中,我们将进行额外的烧蚀,以进一步支持或补充正文的结果。
固定深度。 在§5中,我们观察到我们的顶级模型的深度相当稳定(∼20个块)。在图19(左)中,我们比较了在不同的flops区间使用固定深度。为了与我们的最佳结果进行比较,我们对每个模型进行了100个epoch的训练。令人惊讶的是,我们发现在平均和最佳情况下,在所有的flops区间,固定深度网络可以与深度不同的网络的性能相匹配。事实上,这些固定深度网络符合我们在§5中的最佳结果。
更少的阶段。 在第5节中,我们观察到,在高flops区间,最佳的REGNET模型在第四阶段(一个或两个)有很少的块。因此,我们在6.4GF下测试了3个阶段的网络,每个阶段训练100个epochs。在图19(中)中,我们显示了结果,并观察到三阶段网络的性能相当差。然而,我们注意到,为了使三阶段网络运行良好(留作将来的工作),可能需要额外的改变(例如,在网络stem或head)。
反向瓶颈。 在§4中,我们观察到使用反向瓶颈(b<1)会降低性能。由于我们的结果是在一个低计算区间,在图19(右)中,我们在6.4GF和100个epochs下重新测试。令人惊讶的是,我们发现在这种情况下,b<1会进一步降低结果。
Swish与ReLU 最近的许多方法使用Swish[22]激活函数,例如[29]。在图20中,我们使用Swish和ReLU研究RegNetY。我们发现Swish在低flops下优于ReLU,但在高flops下,ReLU更好。有趣的是,如果被限制为1(深度卷积),Swish的性能要比ReLU好得多。这表明d深度卷积和Swish的交互作用是有利的,尽管根本原因还不清楚。
附录C:优化设置 正如在§3中讨论的,我们的基本训练设置遵循[21]。为了调整REGNET模型的学习率和权重衰减,我们进行了一项研究,如图21所示。在此基础上,对于§4和§5中的所有模型,我们设置和。我们将GPU的数量增加到8个,同时保持每个GPU的图像数量不变,以使我们的最终模型能够在100个epochs进行更快的训练。在调整批量大小时,我们使用线性缩放规则调整,并应用5个epoch渐进预热[6]。
为了进行公平的比较,我们对图22中的EFFICIENTNET重复了同样的优化。有趣的是,学习率和权重衰减在不同的复杂度区间仍然是稳定的。最后,在表7中,我们报告了训练增强对EFFICIENTNET-B0的显著影响。对于较大的模型,差距可能更大(见表4)。
附录D:实施细则
最后,我们将介绍更多的实现细节。
组宽度兼容性(Group width compatibility)。 当我采样宽度和分组宽度时,我们可能会得到不兼容的值(即不能被整除)。为了解决这个问题,我们采用了一个简单的策略。也就是说,如果,我们设置;否则,我们将取整为可被整除。最后的最多可以与原来的相差1/3(证明省略)。对于具有瓶颈的模型,我们将此策略应用于瓶颈宽度(并相应地调整宽度)。
组宽度范围。 如§4所述,我们注意到一个总的趋势,即在较高的计算区间,好模型的组宽度较大。为了说明这一点,我们逐渐调整组宽度范围,以适配更高的计算区间。例如,在3.2GF时,我们使用中能被8整除的,而不是采样。
块类型。 在§3中,我们证明了RegNet设计空间可以推广到不同的块类型。我们将描述这些额外的块类型,如图23所示,接下来:
1.R块:除无分组外,与X块相同,
2.V块:只有一个3×3卷积的基本块,
3.VR块:和V块相同,但是加了一个残差连接。
我们注意到,好的参数值可能因块类型而异。例如,与X块不同,R块使用b>1优于b=1。我们的方法对此具有鲁棒性。
Y块详细信息。
为了获得Y块,我们在X块的3×3卷积之后添加SE op,并且我们使用1/4的SE缩减比。我们对这些选择进行了实验,但是发现它们的性能相当(未显示)。