卷积神经网络长尾数据集识别的技巧包

编译:ronghuaiyang
来源:AI公园


导读

对长尾数据集的tricks进行了分析和探索,并结合一种新的数据增强方法和两阶段的训练策略,取得了非常好的效果。

Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks


摘要:目前,在长尾分布的数据集上,在数据极端不均衡的情况下,使用复杂的模式(元学习)的方法取得了很大的进展。除了这些复杂的方法,在训练时的简单的调整也有一些贡献。这些调整,也就是tricks,很小但是很有效,比如调整数据分布或者损失函数。但是,tricks之间也会有冲突。如果使用的不恰当,会适得其反。然而,如何使用这些tricks并没有给出科学的引导。本文中,我们首先收集了这些已有的tricks,并做了很多的实验,给出了很细节的实验指导,并得到了这些tricks的组合效果。我们还基于类别激活图提出了一种新的数据增强方法,可以很友好的和重采样方法组合使用,并取得了很好的效果。通过将这些tricks科学的组合在一起,我们的效果超过了当前的SOTA。

代码:https://github.com/zhangyongshun/BagofTricks-LT

1. 介绍

最近,长尾识别持续引起关注,产生了很多不同的方法,这些方法属于不同的范式,度量学习,元学习和知识迁移。尽管这些方法在长尾数据集上取得了稳定的精度的提升,但是要么对于超参数非常的敏感,要么训练过程非常的复杂,而且,在现实场景中很难用起来。除去这些方法,长尾数据集的识别中还有一些tricks,这些tricks非常简单,只是对原始的方法做很小的修改,比如修改一下损失函数,修改一些采样策略,但是会对结果产生很大的影响。但是,这些tricks在使用的时候容易相互影响。比如说,重采样和重加权是两个常用的tricks,重采样的目的是生成均衡的数据集,重加权的目的是针对类别的概率对类别进行反向的加权。但是两者一起使用的时候,可能会反而效果变得更差。

因此,在使用这些tricks的时候,我们需要知道,哪些是可以组合在一起使用的,哪些可能会相互影响。本文中,我们关注哪些常用的,容易部署的,超参数不敏感的tricks。这些tricks分为4大类,重加权,重采样,mixup训练,2阶段训练。特别是我们将mixup训练加到了长尾识别的tricks中,因为我们发现mixup训练和重采样组合起来可以得到更好的效果。在每种tricks大类中,我们都介绍一些tricks,并在长尾数据集中进行了结果的对比。更进一步,为了克服已有的重采样方法的缺乏可区分信息的缺点,我们基于类激活图(CAM)提出了一种新的数据增强方法,这是一种两阶段的训练方法,通过变换前景但是保持背景不变来生成具有可区分特征的图像。这个方法可以很方便的和已有的重采样方法组合,并取得非常好的效果,我们称之为“CAM-based sampling”。我们还探索了不同的大类的tricks之间的的冲突,并找到了tricks的最佳组合。在这三个数据集上的最优结果见表1。


我们这个工作的主要贡献如下:

  • 我们综合探索了已有的简单的,参数不敏感的,长尾相关的tricks,并为以后的研究提供了一个实用的指南。
  • 我们提出了一个新的CAM-based采样方法,为2阶段训练方法定制,很简单但是很有效。
  • 我们进行了很丰富的实验,找到了最佳的tricks的组合。我们的方法在4个长尾数据集上都取得了SOTA的效果。

2. 数据集和基础设置

数据集

长尾 CIFAR 这是长尾分布版本的CIFAR-10和CIFAR-100。和原始的CIFAR数据集具有相同的类别,但是,每个类别的训练样本的数量是指数递减的,n = nt x μt,其中 t是类别的索引,nt 是训练图像的原始数量,μ ∈(0,1) 。测试集保持不变。长尾CIFAR数据集的不均衡因子定义为最多样本数量类别的样本数除以最小样本数量类别的样本数。在文章中,常用的不均衡因子为50和100,图像总数为12000张左右。

iNaturalist 2018 这个数据集是一个大规模的真实世界的数据集,类别极度不均衡,包含437513张图像,8142个类别,除了不均衡的问题,还有细粒度的问题。

长尾ImageNet 这个数据集是由原始的ImageNet2012经过采样得到的,最多的类别1280张图,最少的5张图。

基线设置

主干 我们使用了残差网络作为主干。具体来说,我们在长尾CIFAR和iNaturalist上分别使用了ResNet-32和ResNet-50,在ImageNet-LT上使用了ResNet-10。

数据增强 对于CIFAR数据集,训练时,每张图每边填充4个像素,然后随机裁剪出一个32x32的区域。裁剪出的区域用0.5的概率水平翻转,然后进行图像的归一化。验证时,每张图保持长宽比将短边缩放到36像素。然后,从中心裁剪出32x32的区域做归一化后进行训练。

对于iNaturalist和ImageNet-LT,在训练时我们使用缩放和长宽比的数据扩充,然后得到一个 224x224 的随机裁剪的区域,并随机水平翻转。验证的时候,我们将保持比例将短边缩放为256,然后裁剪224x224的中心区域。

训练细节 所有的主干都是从头进行训练。对于CIFAR数据集,我们使用sgd,动量0.9,权值衰减 2 x 10-4,训练轮数200轮,batch size为128。初始学习率为0.1,在160轮和180轮除以100。前5轮使用warmup。

对于iNaturalist和ImageNet-LT,我们的batch size为512,训练轮数为90,初始学习率为0.2,分别在30轮,60轮,80轮除以10,不使用warmup,使用sgd优化器,动量0.9,权值衰减为 1 x 10-4

基线的训练结果见表2,


3. Trick总结

我们将所有的tricks分为4大类:重加权,重采样,mixup训练和两阶段训练。我们认为mixup训练是一种长尾分布相关的trick,因为我们发现mixup训练在长尾识别上能得到很好的效果,特别是和重采样组合起来的的时候。对于每个大类的trick,我们介绍了最常使用的tirck并比较了准确率。

另外,我们还提出了一种简单有效的数据增强方法,为两阶段训练定制。我们提出的方法基于类激活图(CAM),可以非常方便的集成到重采样方法中成为“CAM-based sampling”。

重加权方法

cost-sensitive重加权方法是处理长尾问题的常见方法。这些方法引导网络将更多的注意力放在少数类别中,通过对不同的类别设置不同的权重来实现。

我们一般作为基线使用的Softmax交叉熵损失定义如下:


已有的重加权方法

我们回顾了常用的重加权方法,包括cost-sensitive交叉熵损失,focal loss以及class-balanced loss方法。

  • cost-sensitive交叉熵损失定义:


  • Focal loss在sigmoid中增加了一个调制药引子,着重训练困难样本:


  • Class-balanced loss考虑了不同类别的真实数量,称为有效数量,而不是数据集里的名义上的数量。使用有效数量的理论,类别均衡的focal loss和类别均衡的softmax交叉熵loss定义为:


这里,γ和β都是超参数。

实验结果

我们在长尾CIFAR数据集上评估了重加权方法,见表3,我们发现重加权在CIFAR-10-LT上能得到更小测错误率,但是在CIFAR-100-LT上变差了。这表明直接用重加权并不是理想的选择,特别是类别数增加不平衡度增加的时候。


后面我们会介绍一种两阶段的训练长尾识别的方法,应用重加权能取得很好的效果。

重采样方法

重采样是用来处理长尾问题的常见方法,试图通过采样数据来达到类别的均衡分布。

已有的重采样方法

  • 随机过采样,从少样本类中随机重复训练样本,该方法很有效,但是容易导致过拟合。
  • 随机欠采样,从多数类中随机去掉训练样本,直到所有类别均衡,在某些场景上比随机过采样效果更好。
  • 类别均衡采样,使得每个类别有相同的采样概率。每类采样概率如下:


  • 平方根采样,在式(7)中,q=1/2,即为平方根采样,这样得到的是略微不均衡的数据集。
  • 渐进均衡采样,逐渐的改变采样概率,逼近均衡采样。采样概率的计算如下,t为当前epochs,T为总epochs数:


实验结果 表4显示了不同的采样方法的结果,可以看到,直接使用重采样的方法,提升很少。


Mixup 训练

Mixup 训练可以看成是一种数据增强的trick,用来对CNN做正则化。我们发现,Mixup训练在长尾数据集识别中和重采样结合可以取得很好的效果。

已有的mixup方法 我们介绍了2种mixup的方法:input mixup和manifold mixup。

  • input mixup是一种减缓对抗扰动的有效方法。具体来说,新的样本由2个随机采样的样本线性加权组合而成。其中,λ是从beta分布中采样得到。


  • manifold mixup让神经网络对于隐表示的插值的预测不那么确定,使用语义插值作为额外的训练信号:


其中 ( gk(xi) ,yi ) 和 ( gk(xj) , yj ) 是两个随机采样样本的第k层的中间输出,λ是从beta分布中采样得到,在实验中,我们只在一个层上进行mixup。

mixup训练之后的微调 在mixup训练之后,将mixup去除掉,再训练几个epochs可以进一步提升效果。在我们的实验中,我们也是先用mixup训练,再去掉mixup后微调几个epochs。

实验结果 mixup方法的结果如图5,我们并没有尝试所有的超参数α,我们发现
1)input mixup和manifold mixup都能相比baseline得到更好的结果,
2)当α为1的时候并且mixup的位置是池化层的时候,input mixup和manifold mixup的结果相当。


mixup训练后再微调的结果见表6,我们发现input mixup之后的微调可以进一步提升效果,但是manifold mixup之后再微调反而变差了。


二阶段训练过程

2阶段训练包括不均衡训练和均衡微调。这部分,我们聚焦不同方法的均衡微调,我们首先介绍已有的微调方法,然后介绍我们的CAM-based采样方法。

不均衡训练之后的均衡微调 CNN在不均衡数据集上训练,不适用任何的重加权和重采样的方法,能够学到好的特征表示,但是识别准确率很差。对这个网络在均衡的子数据集上进行微调,可以使得学习到的特征迁移到均衡的所有类别上。这些微调方法可以分为2大类:推迟重采样(DRS)和推迟重加权(DRW)。

  • DRS在第一阶段使用原始的训练策略训练,然后在第二阶段使用重采样,再进行微调。为了在微调的时候得到均衡的数据集,需要使用重采样方法,我们提出了一种简单有效的生成式采样方法叫做“CAM-based采样”。
  • DWR在第一阶段使用原始的训练策略训练,然后在第二阶段使用重加权,重加权的方法我们使用之前介绍过的“重加权”方法。

用提出的CAM-based采样方法进行DRS 已有的重采样方法是简单的重复或者丢弃数据集中的一些数据来达到均衡的效果,这种方法提升有限。为了能够生成具有可区分性的特征,受到特征激活图的启发,我们提出了CAM-based采样方法,相对于已有的方法显示了显著的准确率的提升。

如图1所示,我们先使用重采样得到均衡的样本图像,对于每个样本图像,我们使用第一阶段训练出来的模型基于label和全连接层的权重得到CAM,基于这个CAM的均值,前景和背景是分开的。最后,我们保持背景不变,对前景进行变换,这些变换包括水平翻转,平移,旋转,缩放,我们为每个图像随机选取一种变换。


具体来说,我们分别将CAM和随机过采样,随机降采样,类别均衡采样,均方根采样,渐进式采样相结合。

实验结果 重采样的结果见表7,我们发现:
1)相比于直接进行重采样,DRS重采样可以得到更好的效果,
2)CAM-based重采样方法可以得到显著的效果提升,
3)在CAM-based重采样方法中,CAM-based均衡采样取得了最佳结果,
4)ImageTrans均衡采样的结果证明了CAM-based均衡采样的有效性。


表8显示了不同的重加权方法的结果,从中我们可以发现,
1)相比于直接进行重加权,DRW能够取得更好的结果,
2)DRW使用CS_CE能得到更好的结果。


4. Tricks的组合

这里,我们首先回顾了每个tricks大类里面互补的tricks,我们将这些tricks和其他的最佳tricks组合起来,目的是得到最优的tricks的组合。更进一步,我们增量应用这些tricks,显示了互补的效果。

在两阶段训练章节中显示,最佳的两阶段训练是CAM-based过采样DRS和使用CS_CE的DRW,但是,DRS和DRW都是两阶段的tricks,我们需要更多的实验来来探索最佳的策略。在mixup训练中,input mixup和manifold mixup能得到相当的效果,我们需要更多的实验来探索和其他tricks组合在一起的效果。

从实验中,我们发现了最优的组合是input mixup,CAM-based均衡采样DRS,以及mixup训练之后的finetune。

为了证明我们这个tricks组合的有效性,我们在长尾数据集上增量的应用这些tricks,结果见表11,我们发现:
1)把input mixup,使用CAM-based均衡采样的DRS,mixup训练之后的finetune,这些叠加起来,效果稳步提升。
2)在三个数据集上的表现说明了我们这个方法的有效性。
3)使用了我们的方法,在3个数据集上都能降低10点左右的错误率。



论文链接:Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks (nju.edu.cn)
本文转自:AI公园,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章