基于深度卷积神经网络的长尾视觉识别技巧包
近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂的方法外,对训练程序的简单改进也有一定的贡献。
这些改进(也称为技巧)虽小但很有效,例如调整数据分布或丢失函数。然而,不同的技巧可能会相互冲突。如果用户使用这些与长尾相关的技巧不当,可能会导致识别准确度比预期的更差。不幸的是,在文献中还没有关于这些技巧的科学指导。
本文首先收集了已有的长尾视觉识别技巧,然后进行了广泛系统的实验,给出了详细的实验指导,并获得了这些技巧的有效组合。
此外,我们还提出了一种基于类激活映射的长尾识别数据增强方法,该方法与重采样方法友好结合,取得了良好的结果。
通过科学地组合这些技巧,我们可以在四个长尾基准数据集上超越最先进的方法,包括ImageNet-LT和iNaturalist 2018。我们的代码是开源的,可以在https://github.com/zhangyongshun/BagofTricks-LT上找到。
随着在平衡分布式数据集上训练卷积神经网络(cnn)的发展,计算机视觉已经取得了巨大的进步(Deng et al. 2009;Krizhevsky和Hinton 2009;Wah等人,2011)。但在现实场景中,大规模数据集(Zhou et al. 2017;V an Horn等人2018年;Lin等人2014年**;Wang et al. 2020)自然呈现出不平衡和长尾分布,少数类别(多数类别)占据了大部分数据,而大多数类别(少数类别)的代表性不足。在这些长尾数据集上训练的cnn识别精度很差,特别是对于代表性不足的少数群体**。
处理这种长尾分布在现实世界的应用中是必不可少的,例如对象检测(Lin et al. 2017;欧阳等人2016;Wang, Wang, and Wang 2020),实例分割(Wang et al. 2019;Gupta, Dollar和Girshick 2019),视觉识别(Zhang et al. 2017;Zhong et al. 2019;Cao et al. 2019;Cui et al. 2019)等。本文主要研究基本的长尾视觉识别问题。
近年来,长尾视觉识别受到越来越多的关注。属于不同范式的各种方法,如度量学习(Wang et al. 2018;Liu et al. 2019a;曹等人2019年),元学习(Liu等人2019b;彭等人2019;Jamal et al. 2020)和知识迁移(Wang, Ramanan, and Hebert 2017)已经成功地探索了长尾识别。
尽管这些方法在长尾数据集上带来了稳定的精度提高趋势,但它们往往对超参数具有很高的敏感性(Cao et al. 2019;Yan et al. 2019)或训练过程的高度复杂性(Wang, Ramanan, and Hebert 2017;Liu et al. 2019b;向、丁、汉2020)。此外,这些方法在现实世界的各种场景中难以有效应用。
除了这些方法外,现有的长尾视觉识别训练技巧也发挥了重要作用,只是对普通的训练过程进行了简单的改进,如损失函数或数据采样策略的调整。这些技巧很简单,但在识别准确性上却有很大的不同。然而,不同的技巧在训练过程中,如果使用不当,可能会互相伤害。例如,重新取样(Buda, Maki和Mazurowski 2018;Japkowicz和Stephen, 2002)和重新加权(Mikolov等人,2013年;Cui et al. 2019)是缓解长尾分布不平衡的两种常用方法。重采样试图获得平衡的数据集,而重权则将权重分配给由类频率反转确定的类别。由于重新抽样和重新加权都试图扩大少数人类别的影响,同时应用重新加权和重新抽样将获得类似甚至比单独使用它们更差的准确性。
与重新加权和重新抽样类似,当我们应用两个或多个长尾效应相关的技巧时,最好能知道哪些技巧可以协同组合,哪些技巧可能与其他技巧相冲突。然而,文献中没有任何指导原则。虽然有几个关于类不平衡学习的良好调查(More 2016; Buda, Maki, and Mazurowski 2018; Japkowicz and Stephen 2002),但它们可以进一步组成深度学习时代的有效技巧。更重要的是,它们缺乏对一组长尾相关技巧进行定量组合和评估的综合实证研究。
在本文中,我们重点探讨了长尾视觉识别中常用的、容易装备的、对超参数不敏感的技巧。同时,我们进行了大量的实验,为未来的研究提供了有价值的实践指南。
这些与长尾相关的技巧被分成四个系列,即重新加权、重新采样、混合训练和两阶段训练。
特别是,我们将混杂训练(Zhang等人,2018;V erma等人,2019)加入到长尾相关技巧中,因为我们发现混杂训练在长尾视觉识别中能带来良好的效果,特别是与重采样结合时。
在每个技巧系列中,我们介绍了常用的技巧,并比较了长尾基准数据集的结果。此外,为了克服现有重采样方法中缺乏鉴别性信息的问题,我们提出了一种基于类激活图(CAM)的新型数据增强方法(Zhou等人,2016),它为两阶段训练量身定做,通过转移前景而保持背景不变来生成鉴别性图像。它可以与现有的重采样方法友好结合,并表现出优异的效果,被称为 “基于CAM的采样”。此外,我们还探讨了不同系列的技巧之间的冲突,以找到最佳的技巧组合,命名为技巧袋。表1显示了长尾CIFAR和两个大型数据集(如ImageNet-LT和iNaturalist 2018)的Top-1错误率,这表明与最先进的方法相比,我们的Bag有明显的准确性提高。
我们工作的主要贡献可以总结一下:
我们全面探讨了现有的简单的、对超参数不敏感的、与长尾有关的技巧,并为今后的研究提供了宝贵的实践指南。-
我们提出了一种为两阶段训练量身定做的基于CAM的新型采样方法,这种方法对于长尾视觉识别来说简单而有效。
我们进行了广泛的实验并找到了最佳的技巧组合。与最先进的方法相比,我们的技巧包在四个长尾基准数据集上取得了优于其他方法的识别结果,而没有引入额外的FLOPs。
数据集和基线设置
在本节中,我们描述了实验中使用的长尾数据集以及基线训练设置,如骨干网络、数据增强等。为了公平比较,我们的实验设置与以前的工作保持一致(Cao等人,2019;Cui等人,2019;Zhou等人,2020)。
Long-tailed CIFAR
CIFAR10和CIFAR-100数据集的长尾版本(CIFAR-10-LT和CIFAR-100LT)(Cui et al. 2019)是长尾识别的基准数据集。与原始的CIFAR数据集(Krizhevsky和Hinton 2009)一样,长尾版本包含相同的类别。然而,它们是通过根据指数函数n = nt × µt减少每个类别的训练样本数量而创建的,其中t是类别索引(0-索引),nt是原始训练图像的数量,µ∈(0,1)。测试集保持不变。长尾CIFAR数据集的不平衡系数被定义为最大类的训练样本数除以最小类的训练样本数,其范围为10到200。在文献中,50和100的不平衡系数被广泛使用,每个不平衡系数下有大约12000张训练图像。
iNaturalist 2018
iNaturalist物种分类数据集(Van Horn等人,2018)是大规模的真实世界数据集,存在着极其不平衡的标签分布。iNaturalist最具挑战性的数据集是2018年版本,其中包含8142个类别的437,513张图片。除了极度不平衡,iNaturalist数据集还面临着细粒度的问题(Wei, Wu, and Cui 2019)。我们在实验中遵循iNaturalist 2018的官方训练和验证分割。
Long-tailed ImageNet
长尾的ImageNet(ImageNet-LT)来自于原始的ImageNet2012(Deng等人,2009),通过从1000个类别中按照帕累托分布进行抽样,每个类别最多有1280张图像,每个类别最少有5张。测试集是按照(Liu et al. 2019b)进行平衡的。
Backbones
我们采用深度残差网络(He等人,2016)作为骨干。具体来说,我们遵循(Cui et al. 2019),对长尾的CIFAR和iNaturalist数据集分别采用32层的残差网络(ResNet-32)和50层的残差网络(ResNet-50)。对于ImageNet-LT,根据(Liu et al. 2019b),我们采用具有10层的ResNets(ResNet-10)来进行公平的比较。
Data augmentation
对于长尾的CIFAR数据集,我们遵循(He et al. 2016)中的数据扩增。
在训练过程中,每张图片每边填充4个像素,并随机裁剪出一个32乘32的区域。裁剪出来的区域以0.5的概率进行水平翻转,然后在训练前以每个颜色的平均值和标准差进行归一化。在验证过程中,对于每张图片,我们将其较短的边缘调整为36像素,同时保持其长宽比。随后,我们裁剪出中心的32乘32的区域,并将RGB通道归一化,与训练程序类似。对于iNaturalist 2018和ImageNet-LT,我们遵循(Goyal等人,2017)中的数据扩充。在训练过程中,我们使用比例和长宽比数据增强(Szegedy等人,2015),并从增强的图像或其水平翻转中得到一个224×224的随机裁剪区域。这些区域在训练前被每个颜色的平均值和标准差归一化。在验证过程中,对于每张图像,我们将其较短的边缘调整为256像素,同时保持其长宽比,然后在验证前将224乘224的区域裁剪出来并进行归一化。
Training details
所有的骨架都是从头开始训练的。我们采用(He等人,2015)的初始化方法。所有层的偏差都被初始化为0。我们通过随机梯度下降法(SGD)在长尾的CIFAR数据集上训练ResNet-32,动量为0.9,权重衰减为2×10-4。训练周期数为200,批次大小为128。学习率初始化为0.1,并在第160次和180次历时中分别除以100。我们在前五个epochs使用warmup(Goyal等人,2017)。对于iNaturalist 2018和ImageNet-LT,我们遵循与Goyal等人(2017)相同的训练策略。骨干的训练批次大小为512。训练历时数为90,学习率初始化为0.2,并在第30、60和80次历时时除以10,不做预热。采用SGD,动量为0.9,权重衰减为1×10-4。基线训练的Top-1错误率见表2,我们的结果与参考文献(Cui等人,2019;Liu等人,2019b)基本一致。对于稍微不一致的,如iNaturalist 2018和ImageNet-LT,可能是由运行环境(如CUDA和深度学习框架的版本)造成的,因为我们保持训练和验证设置与参考文献一致。
我们将长尾相关的技巧分为四个系列:
重新加权、
重新采样、
混合训练、
两阶段训练
我们将混合训练作为长尾相关的技巧,因为我们发现混合训练(Zhang等人,2018;Verma等人,2019)在长尾视觉识别中提供了良好的识别精度,特别是与重采样结合时。在每个技巧系列中,我们介绍了常用的技巧并比较了它们的准确性。
此外,我们提出了一种简单而有效的数据增强方法,为两阶段训练量身定做。所提出的方法是基于类激活图(CAM)(Zhou等人,2016),它可以与重采样友好地结合,并被称为 “基于CAM的采样”。
成本敏感的重新加权方法是长尾文献中普遍采用的方法。这些方法通过给不同的类别分配不同的权重,引导网络对少数类别给予更多关注。
形式上,对于每个带有标签c∈{1,2, . . , C},我们将预测输出设为z = [z1, z2, … , zC]T,其中C为类的总数。我们将nc定义为c类中训练图像的数量,nmin定义为最小类中训练图像的数量。采用Softmax交叉熵损失(CE)作为基线,其定义为
Existing re-weighting methods
我们回顾了常用的重新加权方法,包括成本敏感的softmax交叉熵损失(Japkowicz和Stephen 2002),焦点损失(Lin等人2017),以及最近提出的类平衡损失(Cui等人2019)。
Cost-sensitive softmax cross-entropy loss 成本敏感的softmax交叉熵损失(CS CE)(Japkowicz and Stephen 2002)定义为
Focal loss(Lin等人,2017)在sigmoid交叉熵损失的基础上增加了一个调整因子,以集中训练困难的样本。我们表示pi =sigmoid(zi) = 1 1+exp(-zi),定义pti为
其中γ是控制不同样本重要性的超参数。
CBLOSS类平衡损失(Cui等人,2019)考虑了不同类别的真实体积,命名为有效数字,而不是数据集提供的图像的名义数字。有了有效数字的理论,类平衡的焦点损失(CB Focal)和类平衡的softmax交叉熵损失(CB CE)被定义为
其中γ和β是两个超参数。我们根据(Cui et al. 2019)在不同的长尾数据集上设置γ和β。
Experimental results
我们评估了长尾CIFAR数据集的重新加权方法。如表3所示,我们发现,在CIFAR10-LT上,重新加权的错误率较低,但在CIFAR-100-LT上,与vanilla ResNet-32相比,得到的结果较差。这说明在训练过程中直接使用重定权重并不是一个合适的选择,特别是当分类的数量增加,数据变得更加不平衡的时候。
在“两阶段训练程序”的后一节中,我们将描述长尾视觉识别的两阶段训练策略,它证明了一种应用重权的有效策略。
表3:重权方法的Top-1错误率。它表明直接应用重新加权是不合适的,特别是当类的数量增加时。
重抽样通常用于处理长尾问题,这种问题试图对数据进行抽样,以获得均匀分布的数据集。
Existing re-sampling methods
我们对现有的简单和常用的再抽样方法作如下综述。
随机过采样(Buda, Maki, and Mazurowski 2018)是有代表性的重采样方法之一,它复制随机采样的少数类训练图像。随机过度采样是有效的,但可能导致过拟合(Sarafianos, Xu,和Kakadiaris 2018)。
•Random undersampling (More 2016)随机删除大多数类的训练图像,直到所有类变得平衡。Drummond和Holte(2003)表明,在某些情况下,欠采样比过采样更可取。
•类别均衡抽样(Kang et al. 2020)使每个类别被选中的概率相等。当q = 0时,每个类j的概率pCBj由(7)式给出。具体来说,类平衡抽样首先对一个类进行均匀抽样,然后对所选类中的一个实例进行均匀抽样:
其中j为当前类,ni为类I中q∈[0,1]的样本个数。C是总类数。
•平方根抽样(Kang et al. 2020)在式(7)中将q设置为1 2,目的是返回一个更轻的不平衡数据集。
•渐进式平衡抽样(Kang et al. 2020)将班级的抽样概率从普通的不平衡抽样逐步改变为班级平衡抽样。对于当前历元t,第j类对应的采样概率pj可由式(8)计算:
其中T为总历元。
此外,还有其他采样方法,可以创建人工样本或基于梯度和特征的样本(Y an et al. 2019;Chawla等人2002年;沈、林、黄2018;2005;Perez-Ortiz等人2019年;yu and Lam 2019)。然而,这些方法通常是复杂的,并可能引入噪声数据(Y u和Lam 2019)。因此,我们在本文中没有考虑这些针对简单技巧的方法。
表4给出了长尾CIFAR数据集上不同重采样方法的错误率。可以观察到,直接将重采样应用到训练过程中得到了轻微的改进。
此外,我们将在“两阶段训练程序”一节中展示,将重采样方法与两阶段训练相结合,可以获得显著的改进。
表4:重采样方法的Top-1错误率。它演示了直接应用重采样方法带来的微小改进。
混淆训练可以被看作是一种数据增强技巧,其目的是正则化cnn。我们发现混合训练在长尾视觉识别中具有良好的准确性,特别是与重采样相结合时。
Existing mixup methods
我们在本节介绍两种混合方法:输入混合(Zhang et al. 2018)和流形混合(V erma et al. 2019)。
λ从Beta分布中随机取样。我们只在输入混淆的情况下使用(bx, by)
Fine-tuning after mixup training
He et al. (2019b)表明,如果我们在过去的几个epoch中去除混淆,通过mixup训练的模型的结果可以进一步提高。在我们的实验中,我们首先使用了混合训练,然后对经过混合训练的模型进行几个epoch的微调以获得进一步的改进,这被称为“混合训练后的微调”。
混合方法实验结果如表5所示。特别是,对于Beta分布,我们没有尝试所有超参数α的可能值,这不是我们工作的主要目的。从表5可以发现1)输入混合和廖混合物提供更好的结果在基线,和2)当α1和混合位置设置为池层,输入混合和多方面的混合物达到类似的结果,需要进行更多的实验与其他技巧。混合训练后的微调结果如表6所示。我们可以发现,输入混合训练后的微调可以得到进一步的改善,但流形混合后的微调效果较差。
训练分为不平衡训练和平衡微调两阶段。在本节中,我们将重点探讨平衡微调的不同方法。我们首先描述了现有的微调方法,然后提出了基于cam的采样方法。
Balanced fine-tuning after imbalanced training不平衡训练后的平衡微调
在不平衡数据集上训练的cnn,没有任何重新加权或重新采样的方法,可以学习到良好的特征表示,但在未充分表示的尾部类别上,识别精度很差。
这些微调方法(Cao et al. 2019)可分为两部分:通过重采样(DRS)和通过重加权(DRW)延迟再平衡。
•DRS首先使用普通训练计划,然后应用重采样均衡微调。为了得到一个平衡的微调子集,我们将使用“重采样方法”一节中介绍的重采样方法。在此基础上,提出了一种基于cam的采样方法。
•DRW在第一阶段采用香草训练计划,然后在第二阶段采用重加权方法。第二阶段将采用“调整方法”一节中介绍的调整方法。
The proposed CAM-based sampling for DRS
DRS中使用的现有重采样方法仅从原始数据集中复制或删除随机选择的样本以生成平衡子集,这在平衡微调过程中提供了有限的改进。为了生成判别信息,受类激活映射(class activation maps, CAM)的启发(Zhou et al. 2016),我们提出了基于CAM的采样方法,与现有方法相比,该方法在增加边际成本的情况下,精度有了显著提高。
如图1所示,我们首先使用重采样来获得均衡的采样图像。对于每一幅采样的图像,我们使用第一训练阶段训练的参数化模型,根据其ground truth标签和对应的全连通层权值来生成CAM。前景和背景是根据其CAM的平均值分开的,其中前景包含大于平均值的像素,背景包含其余的像素。最后,我们在保持背景不变的情况下对前景应用转换。变换包括水平翻转、平移、旋转和缩放,我们为每个图像随机选择一个变换。
图1:我们提出的基于cam的采样概述。为每个图像重采样,采样凸轮首先生成基于特征图和FC地面真值的权重标签c。我们区分前景和背景基于CAM的平均价值,前景,同时保持背景不变,随后我们变换生成的信息采样数据集。
具体来说,我们将CAM与随机过采样、随机欠采样、类均衡采样、平方根采样和渐进均衡采样相结合,分别命名为“基于CAM的过采样”、“基于CAM的欠采样”、“基于CAM的平衡采样”、“基于CAM的平方采样”和“基于CAM的渐进采样”。
Experimental results
DRS中重采样方法的结果如表7所示。我们增加了一种名为图像传输平衡采样(ImageTrans balance-sampling)的采样方法来证明基于cam的平衡采样的有效性。它的流水线与基于CAM的平衡采样相同,但没有使用CAM来分离前景和背景。
从表7的结果可以看出:1)与表4中直接重采样相比,DRS中采用重采样的效果更好。2)我们提出的基于cam的采样获得了相当大的增益。3)在基于cam的采样中,基于cam的平衡采样效果最好。4) ImageTrans平衡采样的结果证明了CAM在平衡采样中的有效性。
表8显示了DRW中不同重权方法的结果。从结果中我们可以看出:1)与表3中直接调整权重相比,调整权重与DRW结合效果更好,2)DRW与CS CE结合效果最好。
表7 DRS中不同重采样方法的Top-1错误率。所提出的基于cam的采样可以获得更好的结果。其中,基于cam的平衡采样得到了最好的结果。与表4中直接重采样相比,DRS提供了一种有效的方法来应用重采样方法。
表8:DRW中不同重权方法的Top-1错误率。CS CE在DRW训练计划中取得了最好的成绩。与表3中直接使用再加权相比,在第二个训练阶段使用再加权更有效。
在这一节中,我们首先回顾了每个技巧族中的冲突技巧,得到了比较的结果。我们将这些冲突的技巧与其他最好的技巧结合在一起,以找到最好的技巧组合。此外,我们逐步应用最佳技巧组合,以显示这些技巧之间的冲突可以忽略不计。
Removing conflictual tricks in each trick family
“两阶段训练过程”部分的实验表明,两阶段训练的最佳训练方案是基于cam的DRS和基于CS CE的DRW,但DRS和DRW都是两阶段训练技巧,我们需要更多的实验来探索应用它们的最佳策略。此外,在混炼训练中,输入混炼和流形混炼的结果可比较,如表5所示。因此,我们进行了更多的实验来比较它们与其他技巧相结合的结果。
表5:混合方法的Top-1错误率。α是贝塔分布的超参数。“FC”表示“fullyconnected”。我们可以看到输入混合和流形混合是可以比较的。但是在“移除每个技巧家族中有争议的技巧”一节中,我们将展示输入混淆带来更好的结果。
表9的结果表明,采用两阶段训练的最佳策略是基于cam的平衡采样的DRS。我们还可以发现,将CS CE与基于cam的平衡采样结合在一起并不能进一步提高精度,因为两者都试图扩大尾类的影响,而两者联合使用会由于过拟合问题导致精度下降。此外,从表10中,我们观察到,当与其他最佳技巧相结合时,输入混合比流形混合获得更大的增益。
通过对各个戏法族和戏法组合的实验,我们发现最优的戏法组合是输入混合、基于cam平衡采样的DRS和混合训练后的微调,我们称之为戏法包。
Applying the best tricks incrementally
为了演示我们的技巧包的性能和可忽略的冲突,我们将这些技巧逐步应用于长尾数据集,包括大规模的真实世界数据集iNaturalist 2018和ImageNet-LT。考虑到在存在输入混叠的DRS中我们使用了基于cam的平衡采样,在混叠训练后的微调中,我们也采用了类平衡采样来保持学习特征。结果如表11所示。结果表明:
1)通过叠加输入混合、基于cam平衡采样的DRS、混合训练后的微调,结果得到了稳定的改善。
2) iNaturalist 2018和ImageNet-LT的结果清楚地证明了我们的技巧包在真实世界的大规模数据集上的有效性。
3)使用我们的所有技巧,我们在所有长尾数据集上减少了约10%的错误率,这表明与现有的最先进的方法相比,有了显著的改进。
表11:使用增量技巧降低top-1错误率。我们的戏法袋显示了一个稳定的准确性提高的趋势,这证明了我们的戏法在小型和大型真实世界的数据集上的有效性。“iNat 18”代表“iNaturalist 2018”,“IM”代表“输入混乱”。在输入混淆中α是1。
本文系统地探索了现有的简单有效的长尾识别方法,为长尾视觉识别提供了科学的实验指导。此外,我们发现现有的简单抽样方法缺乏判别信息。基于此,我们提出了一种基于类激活映射的数据增强方法,并将其与现有的重采样方法相结合。通过大量的实验,我们得到了最优的技巧组合,包括输入混合、基于cam的均衡采样的DRS和混合训练后的微调。最佳的技巧组合,即技巧包,包含可以忽略的冲突,并在不引入额外失败的情况下在长尾基准测试中获得最佳结果。我们还将源代码作为一个科学实用的工具箱发布,为长尾视觉识别的未来研究提供了有益的参考。在未来,我们将尝试在其他具有挑战性的长尾任务中探索各种技巧,例如检测和分割。