ResNet的反击

ResNet strikes back: An improved training procedure in timm

https://arxiv.org/pdf/2110.00476.pdf

https://hub.fastgit.org/rwightman/pytorch-image-models/releases/tag/v0.1-rsb-weights

Ross Wightman, Hugo Touvron, Hervé Jégou

The influential Residual Networks designed by He et al. remain the gold-standard architecture in numerous scientific publications. They typically serve as the default architecture in studies, or as baselines when new architectures are proposed. Yet there has been significant progress on best practices for training neural networks since the inception of the ResNet architecture in 2015. Novel optimization & data-augmentation have increased the effectiveness of the training recipes. In this paper, we re-evaluate the performance of the vanilla ResNet-50 when trained with a procedure that integrates such advances. We share competitive training settings and pre-trained models in the timm open-source library, with the hope that they will serve as better baselines for future work. For instance, with our more demanding training setting, a vanilla ResNet-50 reaches 80.4% top-1 accuracy at resolution 224x224 on ImageNet-val without extra data or distillation. We also report the performance achieved with popular models with our training procedure.

Subjects:Computer Vision and Pattern Recognition (cs.CV); Machine Learning (cs.LG)

Cite as:arXiv:2110.00476 [cs.CV]

 (or arXiv:2110.00476v1 [cs.CV] for this version)

在PiT论文中,也有对ResNet的比较:

He等人设计的具有影响力的残差网络仍然是众多科学出版物中的金标准结构。它们通常作为研究中的默认架构,或者在提出新架构时作为基线。然而,自2015年ResNet架构诞生以来,在训练神经网络的最佳实践方面取得了重大进展。新颖的优化和数据增强提高了训练方案的有效性。在本文中,我们重新评估了vanilla ResNet-50的性能,当采用集成这些进步的程序进行训练时。我们在timm开源库中共享有竞争力的训练设置和预训练的模型,希望它们能为未来的工作提供更好的基线。例如,通过我们更严格的训练设置,vanilla ResNet-50在ImageNet val上以224x224分辨率达到80.4%的顶级精度,无需额外数据或蒸馏。我们还通过我们的训练程序报告了流行模型的性能。

1引言

在过去的十年中,我们见证了图像分类方面的重大进步,这反映在诸如ILSVRC的2012挑战[36]或其他图像分类基准的改进上,这些基准可以在流行网站上看到1。从图表上看,性能的提高反映了社区对形式问题的最大化

其中A是架构设计,T是训练设置及其超参数,N是测量噪声,其中我们还包括过拟合,通常在选择大量超参数或方法的最大值时发生过拟合。有几种很好的做法可以减少N,比如使用不同的种子测量标准偏差,使用单独的评估数据集[34],或者评估转移任务的模型。撇开N不谈,衡量A或T的进展是一个挑战,因为A和T都会随着时间的推移而进展。在(A,T)上进行联合优化时,不能保证给定架构A1的最佳选择T1对于另一个模型设计A2仍然是最佳的。因此,即使在同一个训练过程下比较模型,也可能隐含地倾向于一个模型而非另一个模型。将训练程序产生的改进与架构的改进分开的一个良好实践是确保基线包含文献中的新“成分”,并在调整超参数方面投入合理的精力。理想情况下,即在没有资源和时间限制的情况下,对于每个架构,最好采用尽可能最佳的训练程序

但实际上这是不可能的。在比较架构时,大多数论文将其结果与旧出版物中报告的其他结果进行比较,但针对哪些架构进行了潜在较弱的训练。在最好的情况下,使用相同或类似的过程来比较两种架构。

我们不知道有哪项工作专门针对通过广泛的成分选择和超参数搜索来改进ResNet-50训练程序。在文献中,ImageNet-1k-val上报告的该架构的性能范围为75.2%到79.5%,具体取决于论文。目前尚不清楚是否已投入足够的努力进一步推动基准。我们希望填补这一空白:在本文中,我们重点关注He等人[13]描述的vanilla ResNet-50架构2,并优化训练,以最大限度地提高该模型在224×224原始测试分辨率下的性能。我们只考虑训练配方。因此,我们排除了ResNet-50的所有变体,如SE-ResNet-50[20]或ResNet-50-D[14],它们通常在相同的训练程序下提高准确性。总之,在本文中,

•我们提出了三个训练程序,旨在成为推理分辨率224×224时使用的vanilla ResNet-50的强基线。这三种变体对应不同的epoch数(100、300和600),并调整超参数和成分。

•我们的程序包括文献的最新进展以及新建议。值得注意的是,我们偏离了通常的交叉熵损失。相反,当使用Mixup和CutMix时,我们的训练解决了一个多分类问题:假设合成图像中存在所有混合概念,我们将这些增强选择的每个概念的二进制交叉熵最小化。

•我们使用不同的种子测量了大量运行的精度稳定性,并通过联合比较ImageNet val与ImageNet-V2中获得的性能来讨论过拟合问题[34]。

•我们训练流行的架构并重新评估其性能。我们还讨论了联合优化架构和训练过程的必要性:我们展示了拥有相同的训练过程不足以比较不同架构的优点。我们在第5节中提供了烧蚀。我们的补充材料可能会引起社区的兴趣:附录A详细介绍了timm库引入的增强变体。附录B涵盖了训练ResNet-50的替代程序,这些程序在成分上与我们的三个重点训练程序存在显著差异。它们在不同的架构和任务中实现了值得注意的性能和可能更好的结果。

2相关工作

图像分类是计算机视觉的核心问题。它通常被用作衡量计算机视觉进展的基准任务。用于图像分类的预训练模型,特别是在ImageNet[9]上训练的模型,用于检测或分割等多种下游任务。图像分类的进展通常转化为这些任务的进展。

timm库[50]最近在科学界获得了巨大的发展势头,因为它为许多流行的图像分类模型以及训练方法提供了实现。许多型号都包含经过预训练的权重,这些权重可以是根据原始权重改编的,也可以是采用较新程序在timm中训练的。虽然模型架构是timm的重点,但它还包括许多数据增强、正则化技术、优化器和学习率调度器的实现,这些在本文描述的训练过程中都得到了利用。在许多情况下,这些实现所包含的功能超出了它们所基于的原始实现或文件。我们在附录A中描述了这些补充。

ResNet[13]是最流行的图像分类架构之一。它在引入时是一个值得注意的改进,并继续作为一些分析的参考架构[8,55,56],或作为介绍新架构的论文的基线[32,35,51,57]。

一些工作使ResNet训练程序现代化,并比原始模型(如Dollar等人[10])有所改进。这使得在考虑涉及比最初使用的更复杂训练程序的新模型或方法时,可以进行更直接的比较。然而,改善ResNet-50基线[6,10,14,47,48,54]并不是这些工作的主要目标。因此,正如我们将看到的那样,迄今为止报告的ResNet-50的最佳性能仍远未达到使用此架构可以达到的最大性能(峰值或平均值)。在本文中,我们的目标是根据现有的成分和实践,为ResNet-50提供最佳的训练程序。我们希望这将成为后续工作的有力基线。注意,一些论文也关注ResNet-50训练[2,27,49],但他们要么修改了架构,要么改变了分辨率,这不允许与分辨率为224×224的原始ResNet-50进行直接比较。例如,Lee等人[27]将ResNetD[14]与SE注意力一起使用[20]。Bello等人[2]也在不改变架构的情况下优化了ResNet,但他们没有报告ResNet-50在224×224时的竞争结果。

自AlexNet成立以来,图像分类的训练成分和配方有了显著的发展[26]。随着时间的推移,一些趋势发生了变化。常见的修改包括用更长、更进步的时间表取代瀑布式时间表(每30个epoch学习率的传统划分为10分)[5、10、11、41、45、52]。在使用混合精度的同时,联合增加epoch数[10、11、14、41、45]和批量大小,可以更好地利用强大的GPU。现代程序利用更强的数据增强[7,8,55,56,58],更强的正则化[12,21,37],加权平均[22,31],并通过区分训练与测试分辨率[5,11],纠正训练测试分辨率差异[48]。[4,23]也对不同的损失进行了实验,即使交叉熵仍然是标准。对于优化,带有Nesterov momentum[38]的SGD是CNN的常见默认值。RMSProp还用于特定的CNN架构系列,如Inception[39]、NASNet[59]、AmoebaNet[33]、MobileNet[19]、EfficientNet[41]。基于小波变换的图像分类器训练方法

3训练程序

我们提供三种不同的训练程序,具有不同的成本和性能,以涵盖不同的用例,资源使用情况和相应的精度见表1。当以224×224的分辨率进行测试时,我们的程序以ResNet-50的最佳性能为目标。我们已经探索了使用不同优化器的多种变化、正则化的选择以及超参数的合理网格搜索量。我们请读者参考第4.2节,了解关于量化过度拟合量的控制实验。具体成分列表和参数化见附录第4.1节。我们关注三个不同的操作点:

程序A1旨在为ResNet-50提供最佳性能。因此,从epoch(600次)和训练时间(4个V100 32GB GPU的一个节点上4.6天)来看,它是最长的。

程序A2是一个300个epoch的时间表,与DeiT等几个现代程序相当,除了2048的更大批量和我们所有配方引入的其他选择。

程序A3旨在超越原始的ResNet-50程序,具有100个epoch的短时间表和2048个批量次。它可以在15小时内在4个V100 16GB GPU上进行训练,是探索性研究或研究的良好环境。

注意,B节给出了在考虑其他模型时可能作为有趣选择的替代训练程序。在本节的其余部分中,我们将重点介绍A1-A3中包含的成分。

损失:多标签分类目标。

Mixup和CutMix增强从大多数情况下具有不同标签的多个图像合成图像。通过使用交叉熵,输出隐式地被视为每个混合概念存在的概率。在我们的训练中,我们假设这些概念都存在,并将分类视为多标签分类问题(1-vs-all)。为此,我们采用二元交叉熵(BCE)损失代替典型的交叉熵(CE)。这种损失与Mixup和CutMix数据的增加是一致的:目标是为每个类定义为1(或1)− ε(带平滑)如果类是通过混合或剪切混合选择的,则与其他类无关。在我们探索过的最佳设置中,BCE在各自的最佳配置中略优于交叉熵。我们指出,Beyer等人[4]以前采用BCE的动机是生产多个非排他性标签,并用它获得了优异的结果。但就我们所知,他们并没有像我们建议的那样将其用于CutMix或Mixup。

在我们的实验中,即使使用BCE,将所有混合概念的目标设置为1(或1)− ε) 比考虑概念的分布总和为1更有效。从概念上讲,我们认为它更符合Mixup和CutMix的实际用途:人类很可能能够识别两个混合概念中的每一个。

数据增强。

我们采用了以下数据增强组合:在标准随机调整裁剪大小(RRC)和水平翻转(自GoogleNet[40]以来常用)的基础上,我们应用了RANDAUMMENT[8]、Mixup[56]和CutMix[55]的timm[50]变体。例如,在DeiT[45]中使用了这种组合。timm中的许多模型权重也使用RandAugment和Mixup进行训练,但使用随机擦除[58]和增加正则化而不是CutMix。有关timm中提供的变体的更多详细信息,请参阅附录A。

正则化。

在我们的三个训练程序中,正则化差别最大。除了调整权重衰减,我们还使用标签平滑、重复强化[3,17](RA)和随机深度[21]。我们使用更多的正则化来延长训练计划。例如,我们仅对A1采用标签平滑。RA和随机深度都倾向于改善收敛时的结果,但正如Berman等人[3]关于RA的报告所述,它们会减缓早期阶段的训练。因此,对于较短的时间表,它们的效果较差,甚至有害,这就是为什么我们只采用A1和A2。请注意,对于其他架构或更大的resnet,添加额外的正则化是有益的,因此必须为此类架构调整相应的超参数。例如,对于ResNet-152,通过在A2配方的基础上添加更多的随机增强、混合和随机深度正则化,Imagenet val的性能从81.8%提高到82.4%。在256×256分辨率下,该模型获得82.7%,高于Bello等人[2]报告的ResNet-200在架构更改前的准确度(82.2%)(他们论文中的表1)。

优化。

自AlexNet以来,训练ConvNet最常用的优化器是SGD。相比之下,Transformer[11,46]和MLP[43,44]使用AdamW[28]或LAMB优化器。Dosovitskiy等人[11]报告了AdamW[28]和SGD对于ResNet-50的类似性能。这与我们对中间批量(例如512)的观察结果一致。我们使用较大的批量次,例如2048。当与重复增强和二元交叉熵损失相结合时,我们发现LAMB[53]更容易获得一致的好结果。当同时使用SGD和BCE时,我们发现很难实现收敛。因此,我们将重点放在LAMB上,使用余弦计划作为训练我们的ResNet-50的默认优化器。可在附录B中找到使用不同优化器、损失、增强和正则化组合的替代训练程序。

我们的成分详情以及与现有训练程序的比较。在表2中,我们比较了用于训练vanilla ResNet-50和我们的不同配方。我们只考虑与未修改的RESNET-50架构的结果。我们选择了范围广泛的训练程序,试图尽可能具有代表性,但显然,它不可能详尽无遗。我们不考虑使用先进的训练设置,如蒸馏,或模型预训练的自监督或伪标签的方法。

4个实验

在本节中,我们首先将我们的训练过程与现有的训练过程进行比较,并使用不同的架构对其进行评估。重要的是,我们通过旨在(1)量化性能对随机因素的敏感性的实验来讨论我们结果的重要性;(2) 通过在不同测试集上测量来评估过盈。

4.1 ResNet-50训练程序的比较

表1总结了我们训练程序的主要特点。据我们所知,我们的程序A1在分辨率为224×224的普通ResNet-50架构上超过了ImageNet上的当前技术水平。我们的其他程序A2和A3使用较少的资源实现较低但仍然较高的性能。

与其他架构的性能比较。

在表3中,我们报告了使用我们的训练程序训练不同架构时获得的性能。这使我们能够看到它们对其他模型的推广效果如何。与文献中报告的结果相比,Or程序提高了多个模型的性能,尤其是较旧模型和/或在架构和尺寸方面与ResNet-50最相似的模型。在某些情况下,如ViT-B,我们观察到A2优于A1,这表明超参数不适合更长的时间表(通常需要更多的正则化)。例如,A2训练配方在训练ResNet-152时达到81.8%的top-1精度,但通过增加一点正则化,我们在分辨率224×224时将其提高到82.4%,在分辨率256×256时,其转化为82.7%。

在表3中,我们比较了使用3种训练方法训练其他架构时的性能和相关资源。我们用表4补充了这些结果,其中我们还包括ImageNet-1k、ImageNet-V2和ImageNet Real在不同架构上的性能和效率,这些架构使用我们性能最佳的A1训练配方进行了训练。

4.2测量的意义:种子试验

对于一组固定的选择和超参数,由于在几个阶段中存在随机因素,性能存在一些固有的变化。这是权重初始化的情况,也是优化过程本身的情况。例如,图像通过批量传送到网络的顺序取决于随机生成器。这种可变性提出了精度测量的重要性问题。为此,我们在更改随机生成器选项时测量性能分布。这可以通过改变种子来实现,正如Picard[30]之前所做的那样,他得出的结论是存在显著优于或低于训练程序平均结果的异常值。在图1中,我们报告了在考虑100个不同种子(从1到100,请注意,我们在所有其他实验中使用了seed=0)时A2训练过程的性能统计数据。在这些实验中,我们将重点放在训练结束时达到的性能上:我们没有选择在上一个时期通过中间检查点获得的最大值。这将产生与种子选择类似的效果,但这些措施不会是IID,也不会与训练时间本身分离。

ImageNet val的标准偏差通常在0.1左右,见图1。这与ResNet和其他Convnet文献中报告的统计数据一致[32]。ImageNet-V2(std=0.23)的方差更高,它由验证集中不存在的较小图像集(10000对50000,对于-val)组成。平均值79.72%表明我们的主要权重(种子0)高估了平均性能约+0.13%。

过拟合的峰值性能和控制

为了防止过度估计验证的准确性,在我们的探索过程中,我们只选择了最终检查点,并使用相对粗糙的网格进行超参数搜索,以防止引入额外的种子效应。然而,对大量选择进行优化通常会导致过度拟合。在图1中,我们观察到A2训练程序的最大(或峰值性能)接近80.0%。注意,图2以直方图的形式提供了精度分布;

一个问题是,这个模型是否本质上比平均模型好,或者在这个特定的测量集上是否幸运。为了尝试回答这个问题,我们测量性能如何转移到另一个测量数据集:我们计算所有耦合的种子(ImageNet val top-1 acc.,ImageNet-V2 top-1 acc.),并将它们绘制为图1中的点云。我们观察到ImageNet val和-V2上的性能之间的相关性是有限的。很明显,两个数据集上的同一种子并不能获得最佳性能。这一观察结果表明存在一些显著的测量噪声,它提倡系统地报告不同数据集的性能,尤其是明确区分验证和测试的性能。关于敏感性分析的更多信息:不同时期的差异。图3显示了性能可变性是如何随epoch发展的。

4.3迁移学习

在表5中,我们提供了七个细粒度数据集上的迁移学习性能,以及不同的预训练过程,并与默认的PyTorch预训练进行了比较。对于每个预训练,我们都使用与DeiT中使用的微调程序完全相同的微调程序[45]。对于每个数据集,我们采用微调超参数。

我们观察到,微调倾向于平滑某些数据集的性能差异,如CIFAR或斯坦福汽车。总体而言,我们的A1程序在下游任务上的性能最好,但Pytorch default和A2的性能趋于相似,而在Imagenet val和-v2 A2上的性能明显更好。A3在下游任务上明显较差,这可能与160×160时较低的训练分辨率有关。

4.4比较架构和训练程序:一个矛盾结论的案例

在本段中,我们将举例说明即使在相同的训练过程下,比较两个架构是多么困难,或者相反,比较不同的过程与单个架构是多么困难。我们选择ResNet-50和DeiT-S。后者[45]本质上是一个ViT参数化,因此其参数数量与ResNet-50大致相同。对于每种架构,我们都投入了大量精力来优化过程,以最大限度地提高Imagenet val的性能,同时使用相同的300个epoch的训练计划和相同的批量处理大小。在这种限制下,我们为ResNet-50设计的最佳训练程序是A2。我们用T2表示DeiT-S的相应训练程序。注意,该训练程序在Imagenet val上的性能明显优于最初为DeiT-S提出的训练程序(80.4%对79.8%)。

可以看出,通过选择针对这两种架构中的任何一种进行优化的程序,可以得出这样的结论:基于ImageNet val精度,这种架构更好:对于A2训练,ResNet50优于DeiT-S,对于T2训练,DeiT-S优于ResNet50。ImageNet-v2上的测量结果会得出不同的结论,因为DeiT-S对这两种程序都更好。但即使在这种情况下,通过关注A2,也可以得出结论,在进行A2训练的情况下,ResNet-50和DeiT-S之间的差异在统计学上并不显著:分别为67.9%和68.1%。相反,如果目标是比较A2和T2,那么如果考虑单个架构,我们可以对ImageNet val得出不同的结论。

5次烧蚀

在本节中,我们提供了一些超参数的烧蚀或成分的选择。一些修改很难单独烧蚀,因为它们需要重新调整其他几个参数才能正常工作。优化器尤其如此,它与其他选择和超参数强烈交互。在附录B中,我们提供了为其他优化器开发的替代训练程序:RMSProp、SGD和AdamP。

主要成分和超参数。

在表6中,我们提供了主要成分的消融。我们关注中间A2训练过程,因为它是计算成本和准确性之间的一个很好的折衷。我们提出以下意见:

•学习率和权重衰减。学习率对性能有重要影响。较高的值为5.10−此表中的3将导致最佳性能。然而,增加它会进一步增加分歧的风险。我们通常将权重衰减设置在[0.02,0.03]范围内,这是我们在初步勘探中确定的。该参数有点敏感,可以与其他形式的正则化相互作用。在某些情况下,我们观察到0.02和0.03之间存在显著差异。

•损失:二元交叉熵与交叉熵。在这种消融中,从我们如何使用BCE返回到vanilla CE损耗显著降低了性能。正如我们在主要论文中所讨论的,我们利用BCE的灵活性将混合/剪切混合视为激活了本文中所讨论的多类1-vs-all分类问题,而不是选择强制概率总和为1。如果我们像交叉熵那样强制概率总和为1,我们得到的精确度会稍低,如表8所示。就其本身而言,即在相同的目标下,我们并不认为BCE必然优于CE。但正是由于这一损失,我们才以最高的整体精度实现了配置。

•重复增强在消融过程中起到了很小的促进作用。这种增强与其他超参数有一些复杂的相互作用,在我们看来还没有很好地理解。在某些情况下,我们观察到它是中性的或有害的,例如,对于最短的时间表(A3程序),或在表8中具有较高的混合参数值。总的来说,最好将该成分纳入我们最准确的程序A1和A2中。

随机深度和平滑。

我们在A1和A2训练程序中包括了随机深度。在表7中,我们观察到,与将下降率设置为0(即,无随机深度)相比,它为A2提供了改进,而不是A3。标签平滑在其他超参数和成分固定的情况下在300个epoch无效。这就是为什么我们只在A1中更长的600epoch计划中使用它,我们的探索得出结论,它具有积极的影响。

增强。

表8证明了当我们修改一些参数(混搭和随机扩增)时,扩增的作用:我们所做的每一次修改都会对测量的分数产生一些影响。虽然要确保我们所有的选择都具有统计意义是不现实的(也不是生态的),但我们可以观察到,该表中的所有修改都会使前1名的准确度低于我们在图1中报告的100多个种子的平均性能(79.72%–std 0.1)

收成比。

我们评估了推断时使用的裁剪比例的影响。文献中最常用的是0.875。最近,研究人员考虑了该参数的更大值,特别是在timm库的作者报告了这些模型的显著增益后,视觉Transformer的值更大。表9提供了作为该参数函数的分析。

其他决议的评价。

虽然我们主要关注在分辨率为224×224的情况下进行推断时的性能,但在以更高分辨率馈送图像时,我们也会评估我们的模型。我们在图4中报告了这些结果,在图4中,我们看到使用A1和A2训练的模型在使用更高分辨率时具有更好的性能。

6结论

在本文中,我们为vanilla ResNet-50提出了新的训练程序。我们整合了新的成分,并在探索不同资源限制下的不同程序方面做出了重大努力。因此,我们为训练这一金本位模式建立了新的技术水平。我们还有另外两个程序可以用更少的计算能力来训练强大的ResNet-50。然而,我们并不声称我们的程序是通用的,恰恰相反:架构和训练应该联合优化。我们的程序并不适合于训练其他模型:虽然在某些模型上,我们的训练方法比文献中报道的方法有更好的效果,但在其他模型上,它们表现出次优的性能,特别是对于需要更多正则化的更深层次的架构。

确认和反馈

Ross Wightman感谢NVIDIA捐赠了一个V100 DGX站和谷歌的TPU研究云(TRC),用于本研究中使用的云TPU。所有作者感谢Mike Rabbat和Jakob Verbeek的反馈。我们欢迎通过timm GitHub讨论4就这些或其他值得注意的程序提供反馈。

补充材料

本补充材料提供了主要文件中提到的补充结果,明显地介绍了timm中的增强和正则化特异性以及一些替代训练程序。

timm[50]中的增广与正则化

timm库包括各种图像增强、正则化技术、优化器和学习速率调度器,可用于产生ImageNet分类和其他2D图像任务的领先结果。许多timm训练组件对原始实现或描述它们的论文进行了修改和改进。如果使用这些更改,应该注意这些更改。

timm中的数据增强包括RandAugment[8]、AutoAugment[7]、AugMix[15]、随机擦除[58]的实现,以及Mixup[56]和CutMix[55]的集成实现。所有增强的基础通常是带有水平翻转的随机调整大小的裁剪。

RandAugment是timm中使用最多的AA(AutoAugment)变体,它还包含来自原始文件和基于Tensorflow的实现的最重要的补充,因此我们将重点关注该实现。原始RandAugment规范有两个超参数M和N;其中M是畸变幅度,N是每幅图像均匀采样和应用的畸变数量。RandAugment的目标是M和N都是人类可解释的。然而,M的情况并非如此。几个增强的规模是向后的,或者不是在整个范围内单调增加的,因此增加M不会增加所有增强的强度。

这对于图像增强混合操作(颜色、对比度、亮度、清晰度)最为明显,其中参数值定义了如下行为:

0.选择退化图像

0.-1.0在退化图像和原始图像之间插值

1.0返回原始图像

>1.0从退化图像外推原始图像

以锐度为例,在原始实现中映射M0、M5和M10的大小,以分别产生强模糊(0.1)、无变化(1.0)或强锐化(1.9)。

timm中的实现试图通过添加一个“增加”模式(本文中的配方始终启用)来改善这种情况,在该模式中,所有增强强度都会随着幅度的增加而增加;日晒和日晒随M增加(而不是减少),混合操作的插值与外推是随机选择的,强度随M的增加而增加。这使得增加M更直观,并允许额外的超参数正常工作:timm添加了一个MSTD参数,该参数将具有指定标准偏差的高斯噪声添加到每个失真的M值应用此外,如果MSTD设置为'-inf',则针对每个失真从0-M均匀采样M。如果不校正比例,人们通常会得到M范围内的完全空白或严重反转的图像,这些图像的强度应该很低。

timm的RandAugment非常小心,以减少对图像平均值的影响,规范化参数可以作为参数传递,以便所有可能引入边界像素的增强都可以使用指定的平均值,而不是像其他实现中那样默认为0或硬编码元组。最后,默认情况下不包括剪切,以便单独使用timm的随机擦除实现,这对增强图像的平均值和标准偏差影响较小。

随机擦除是另一种常用的timm增强,并对原始文件进行了修改。timm中的实现遵循原始图像,但允许使用每像素高斯噪声(平均值0,std 1.0)来“擦除”图像区域,而不是每个区域的均匀随机或恒定颜色(黑色或图像平均值)。当应用于增强管道中推荐位置的图像时–在图像已标准化(标准化)后–这将保持图像统计信息,并通过增强应用获得更好的结果。一个计数参数也被添加到timm的随机擦除中,这样每个图像可以擦除多个区域。

Mixup和CutMix以其他实现中不常见的方式干净地集成到timm中。可通过多种不同的混合策略同时启用:

分批量

CutMix vs Mixup selection、每批量执行的lambda和CutMix区域采样

成对混合、lambda和区域采样在批量次内每个混合样本对执行

按批量次内每个样品进行元素混合、λ和区域取样

与elementwise的一半相同,但每个混合对中的一个被丢弃,以便每个epoch看到一次每个样本

默认情况下,如果启用了CutMix或Mixup,则每批量使用的概率为0.5,本文中提到的所有训练程序都是如此。

timm中的正则化是标准的。它允许对许多包含的模型使用类似的正则化。权重衰减可通过本机PyTorch或timm优化器获得。所有模型架构中都包含启用预分类器退出的功能。随机深度作为一种选项添加到许多最流行的模型架构中(通过一个名为DropPath的层)。标签平滑是通过交叉熵损失函数实现的,可以与CutMix和Mixup的标签操作结合使用。

B替代训练程序

本文中的主要训练配方使用LAMB优化器。针对vanilla ResNet-50架构,介绍了几组具有不同训练成本的超参数变化,并给出了主要结果。在这里,我们介绍了替代的训练方法,这些方法也能产生与现有最佳ResNet-50相匹配或超过最佳ResNet-50的结果。读者可能会发现它们更适合用于或适应其特定的模型架构、数据集或任务。替代配方包括:

程序B–具有EMA权重平均和阶跃LR衰减的RMSProp;

程序C–带有Nesterov动量的SGD、自适应梯度剪裁和

余弦学习率衰减。我们有两种变体(C1和C2),这取决于我们是否使用重复增广;

程序D–具有余弦学习率衰减和二进制交叉熵的AdamP。

上述过程已用于为timm库中的许多预训练模型(包括许多非ResNet架构)生成出色的结果。表10总结了它们面向ResNet-50的最佳设置。

训练程序B详细信息(RMSProp)

本程序受RandAugment[8]配方的启发,该配方用于训练高效的网络架构,但利用了timm实现RandAugment和随机擦除的功能。阶跃衰减已调整为每个epoch的衰减(与EfficientNet不同,EfficientNet的权重衰减比EfficientNet的默认值略微减少,学习率略高。额外的增强是以每像素噪声随机擦除和混音的形式添加的。应该注意的是,使用的RMSProp优化器是timm中的RMSProp tf实现,非常小心y匹配Tensorflow(2.0版之前)实现的行为。本机PyTorch RMSProp实现将不会产生相同的结果,即使调整epsilon位置。

对于EMA权重平均值的长衰减常数,在训练的后期阶段(通常是训练结束前的40-50%),使用噪声干扰学习速率(目前每个epoch一次)是有益的。在迄今为止的探索中,学习率

噪声似乎增加了训练结果对随机种子的敏感性,但通常在(到目前为止,有限的)具有相同超参数的扫描中产生最佳结果。进一步分析学习速率值、进度和噪声、EMA衰减常数和随机种子之间的相互作用是改进此训练配方的未来目标。

该训练策略的有效性随批量大小而有所不同。本文在1024-2048范围内使用较大批量进行的运行实验通常略低于(0.1到0.3 top-1)之前的训练运行,在256-768范围内使用较小批量进行大量timm预训练权重。目前还不清楚是否可以通过进一步的超参数调整和不同的学习率缩放(默认情况下使用线性)来解决这一问题。

有关该程序的摘要,请参见表11,其中包括用于搜索不同分类任务和架构组合的建议值范围。对于较大的模型架构,建议将重点放在建议范围内更强的增强和正则化值上。查看表3,timm特异性效率ETV2-S[42]变体和ECA-ResNet269-D的原始结果是使用该程序进行训练的,但其增强和正则化程度高于ResNet-50。

训练程序C详细信息(新加坡元与内斯特罗夫动量和AGC)

该配方基于已发布的NFNET训练程序[5]:使用带有Nesterov动量的SGD、自适应梯度剪裁[5](AGC)以及重增强和正则化。AGC允许以更高的学习率进行稳定的大批量训练。更强的默认增强和正则化弥补了与NFNET配对时批量处理规范化正则化效果的损失,但与使用批量处理规范化的其他架构一起使用时,强度可以放松。经过一些调整,该程序已成为timm中有用的训练架构,如ECA NFNet、ResNet和EfficientNet变体,达到了令人印象深刻的性能水平。表3中timm EfficientNetV2-M[42]变体的原始结果采用C.1配方进行训练,但其增强和正则化程度明显高于ResNet-50。

表10所示的本程序的C.1和C.2版本在重复扩增的应用方面差异最大。值得注意的是,在这两种情况下,缩短600个epoch的训练时间也非常有效,同一种子的训练时间预计会减少约0.15-0.2个top-1。表12包含了用于探索不同任务和架构的各种成分。

训练程序D详细信息(AdamP)

在本报告的后期,使用AdamP[16]的训练试验显示了希望。到目前为止,基于AdamP的配方在ImageNet-1k上获得了79.8的top-1。进一步的试验是必要的,到目前为止,试验是在相对较小的批量下进行的,但有希望的结果值得探索。请注意,与RMSProp或SGD(但与Adam和LAMB类似)不同,在调整不同批量的配方学习率时,建议使用平方根缩放。

表13包含该配方成分的推荐范围。这些范围还没有像过程B和C那样在不同的模型架构中被广泛探索。

其他食谱

毫无疑问,其他具有不同优化器、学习率计划、增强和正则化组合的训练方法可以与本报告中详述的程序的性能相匹配或超过。撇开配料不谈,关键是花时间和精力根据目标架构调整配方。作者已经有了一个AdamW配方,看起来很有希望。

你可能感兴趣的:(ResNet的反击)