【论文阅读】Equalization Loss for Long-Tailed Object Recognition 长尾目标识别的均衡损失
长尾目标识别的均衡损失
作者介绍:https://www.zhihu.com/question/372070853/answer/1082980270
知乎解读:https://zhuanlan.zhihu.com/p/127791648
他人翻译:https://zhuanlan.zhihu.com/p/133471680 (自己翻译完了才看到这篇..)
代码链接:https: //github.com/tztztztztz/eql.detectron2
卷积神经网络(CNN)的目标识别技术取得了巨大的成功。然而,最先进的目标检测方法在大词汇表和长尾数据集(如LVIS)上仍然表现不佳。在本研究中,我们从一个新的角度来分析这个问题:一个类别的每个正样本都可以被看作是其他类别的负样本,使得尾部类别得到更多令人沮丧的梯度。在此基础上,我们提出了一种简单而有效的损失,即均衡损失,通过忽略稀有类的梯度来解决长尾稀有类的问题。在网络参数更新过程中,均衡损失保护了稀有类别的学习不受影响。因此,该模型能够更好地学习稀有类对象的鉴别特征。与Mask R-CNN基线相比,在具有挑战性的LVIS基准测试中,我们的方法对罕见和常见类别的AP分别提高了4.1%和4.8%。在2019年LVIS挑战赛中,我们利用了有效的均势损失,最终获得了第一名。
介绍
最近,由于深度学习和卷积神经网络(CNNs)的出现,计算机视觉界见证了物体识别的巨大成功。目标识别是计算机视觉中的一项基本任务,在重新识别、人体姿态估计和目标跟踪等相关任务中起着核心作用。
如今,大多数用于通用对象识别的数据集,如Pascal VOC[10]和COCO[28],主要收集常见的类别,每个类都有大量的注释。然而,当涉及到更实际的场景时,不可避免地会出现类别频率长尾分布的大型词汇表数据集(例如LVIS[15])。类别的长尾分布问题对目标检测模型的学习是一个很大的挑战,特别是对于样本很少的类别。注意,对于一个类别,其他类别包括背景的所有样本都被视为负样本。因此,在训练过程中,少数类别容易被大多数类别(样本数量大的类别)所压倒,并倾向于被预测为否定的类别。因此,在这样一个极不平衡的数据集上训练的传统的物体探测器会大大下降。
以往的研究大多将长尾类别分布问题的影响考虑为训练过程中的批采样不平衡,主要通过设计专门的采样策略来处理该问题[2,16,32,38]。其他著作介绍了专门的损耗配方来解决样品正-负失衡的问题[27,25]。但它们主要关注的是前景和背景样本之间的不平衡,因此不同前景类别之间的严重不平衡仍然是一个具有挑战性的问题。
在这项工作中,我们关注的问题之间的极端不平衡的前景类别,并提出了一个新的视角来分析它的影响。如图1所示,绿色曲线和橙色曲线分别代表正样本和负样本贡献的梯度的平均范数。我们可以看到,对于频繁类别,正梯度的影响平均大于负梯度,而对于罕见类别,情况正好相反。进一步说,在分类任务中常用的损失函数,如softmax交叉熵和sigmoid交叉熵,对非基真类有抑制作用。当利用某类的样本进行训练时,其他类的预测参数会出现令人沮丧的梯度,导致预测的概率较低。由于稀有类的对象很少出现,因此在网络参数更新过程中,这些类的预测器会被令人沮丧的梯度淹没。
Related Works
我们首先回顾常见的目标检测和实例分割。然后介绍了重采样、代价敏感重加权和特征操作方法,这些方法被广泛用于缓解长尾数据集中的类不平衡问题。
对象检测和实例分割。目前主流的目标检测框架有两种:单级检测器[29,36,27]和两级检测器[13,12,37,26,31]。当单级探测器达到更高的速度,大多数最先进的探测器遵循两级制度更好的性能。流行的Mask R-CNN[17]在典型的两级检测器中扩展了一个Mask head,在许多实例分割基准测试中提供了很好的结果。面具评分R-CNN[21]引入了一个额外的面具评分头,以调整面具的分数和质量。级联掩模R-CNN[1]和HTC[3]通过级联预测掩模进一步提高了性能。
重采样方法。重采样中常用的方法之一是过采样[2,16,32],它从少数类中随机抽取更多的训练数据,以解决类分布不平衡的问题。[38],又称类平衡采样,是一种典型的过采样技术,它首先对一个类别进行采样,然后均匀地对包含被采样类别的图像进行采样。虽然过采样方法对代表性不足的类有显著的改善,但它们也带来了过高的潜在过拟合风险。与过采样相反,[9]欠采样的主要思想是从频繁的类中去除一些可用的数据,使数据分布更加均衡。但是,由于头类和尾类的不平衡比例非常大,在极端长尾数据集中,欠采样是不可行的。最近[22]提出了一种解耦训练方案,该方案首先学习表示和分类器,然后利用类平衡抽样重新训练分类器,得到一个平衡分类器。我们的方法可以帮助模型更好地学习尾类的表示,因此可以作为解耦训练模式的补充。
权重的方法。重新加权方法的基本思想是为不同的训练样本分配权重。在不平衡数据集中,直观的策略是基于类频率的逆来确定样本的权重[41,20],或者使用平滑的版本,类频率[33]的平方根的逆。除了上述在班级层面调整权重的方法外,还有针对样本层面调整权重的研究。通过增加硬样本的权值,减少易样本的权值,使神经网络具有代价敏感性[27,25],可以看作是硬样本挖掘技术[39]的在线版本。最近,meta权重网[40]学习了一个显式的样本重权重映射。与上面的作品不同,我们关注的是不同前景类别之间的不平衡问题。我们提出了一个新的观点,即频繁类别的大量负梯度严重抑制了训练过程中稀有类别的学习。针对这一问题,我们提出了一个新的损失函数,并将其同时应用于样本层和类层。
功能操作。还有一些工作直接对特征表示进行操作。射程损失[44]增加了类间距离,同时减少了类内的变化。[43]通过转移具有足够训练样本的常规类的特征方差来增大尾部类的特征空间。[30]采用了一个存储模块,将语义特征表示从头类转移到尾类。然而,设计这些模块或方法并不是一项简单的任务,而且会使模型更难训练。相比之下,我们的方法更简单,而且不直接访问表示。
平衡损失
均衡损失的中心目标是缓解长尾类分布中每个类的数量分配不平衡问题。我们首先回顾传统的损失函数进行分类,即softmax交叉熵和sigmoid交叉熵。
3.1 回顾交叉熵损失
Softmax Cross-Entropy从网络输出z推导出每个类别的多项分布p,然后计算估计分布p与groundtruth分布y之间的交叉熵,Softmax Cross-Entropy损失\(L_{SCE}\)可以表示为:
C是类别的数量。这里,p由Softmax(z)计算。注意,C类包含了一个额外的背景类。在实践中,y使用独热编码,我们有j=1 yj =1。形式上,对于样本的ground truth类别c,
Sigmoid Cross-Entropy估计每个类别的概率独立使用C个sigmoid loss functions。ground truth label y j只表示类别j的一个二进制分布,通常不包含额外的背景类别。相反,当proposal属于背景时,将为所有类别设置y j = 0。所以sigmoid cross-entropy损失可以表示为:
其中
式中,pj用\(\sigma\left(z_{j}\right)\)计算。L_BCE和L_SCE在sigmoid cross-entropy中对网络输出z的导数有相同的公式:
在softmax cross-entropy和sigmoid cross-entropy中,我们注意到前景的样本类别c,它可以作为其他类别j的负样本。所以类别j将收到一个discouraging gradient p使模型更新,这将导致网络预测低概率类别j。如果j是一种罕见的类别,令人沮丧的梯度比鼓励梯度期间会发生更频繁的迭代优化。累积的梯度将对这一类别产生不可忽视的影响。最后,即使是类别j的正样本,从网络得到的概率也相对较低。
3.2 均衡损失公式
当类别的数量分布相当不平衡时,例如在长尾数据集中,来自频繁类别的discouraging gradients会对标注稀少的类别产生显著影响。利用常用的交叉熵损失,可以很容易地抑制对稀有类别的学习。为了解决这一问题,我们提出了均衡损失算法,该算法忽略了频繁类别样本对稀有类别的梯度。这个损失函数是为了使网络训练对每个类都更加公平,我们称之为均衡损失(equalization loss)。
形式上,我们在原sigmoid cross-entropy损失函数中引入权项w,均衡化损失可表示为:
对于一个 region proposal r,我们设置w,规定如下:
其中,E(r)在r为前景区域 proposal 时输出1,在属于背景时输出0。f j是数据集中j类出现的频率,它是通过类j的图像数除以整个数据集的图像数来计算的。其中,\(T_{\lambda}(x)\)为阈值函数,x <λ时输出1,否则输出0。利用λ来区分不同类别的尾部,并以尾部比率(TR)作为其取值的标准。形式上,我们用以下公式定义TR:
其中N j为类别j的图像个数。
综上所述,均衡损失函数有两种特殊设计:
1)对于数量频率低于阈值的稀有类别,我们忽略负样本的discouraging gradients。
2)我们不忽略背景样本的梯度。如果将少数类别的负样本全部忽略,那么在训练过程中就不会出现负样本,学习的模型就会预测出大量的假阳性。
3.3 扩展到图像分类
由于softmax损失函数在图像分类中被广泛采用,我们也设计了一种softmax均衡损失的形式遵循我们的主要思想。Softmax均衡损失(SEQL)可表示为:
需要注意的是,图像分类和目标检测分类是不同的:每一幅图像都属于一个特定的类别,因此不存在背景类别。因此,权重参数\(\tilde{w}_{k}\)没有方程7中的E(r)部分。因此,我们引入了随机保持负样本梯度的方法。在第6节中,我们研究了γ的影响。
LVIS上的实验
我们对均衡损失进行了广泛的实验。在本节中,我们首先在4.2节和4.3节介绍LVIS数据集[15]的实现细节和主要结果。然后我们在第4.4节进行烧蚀研究来分析均衡损失的不同组成部分。在4.5节中,我们将均衡损失与其他方法进行比较。2019年LVIS挑战的详情将在第4.6节介绍。
LVIS数据集
LVIS是一个用于实例分割的大型词汇表数据集,在当前版本v0.5中包含1230个类别。在LVIS中,根据包含这些类别的图像数量,将类别分为三类:罕见(1-10幅)、常见(11-100幅)和常见(>100幅)。我们在57k的训练图像上训练我们的模型,并在5k的val集上评估它。我们也报告了我们在20k的测试图像上的结果。所有类别的评价指标均跨越IoU阈值从0.5到0.95。与COCO的评估过程不同,由于LVIS是一个稀疏注释的数据集,所以对于图像级别标签中没有列出的类别的检测结果不会进行评估。
实现细节
我们采用标准mask R-CNN[17],并配备FPN[26]作为我们的基线模型。训练图像将被调整大小,使其较短的边缘为800像素,而较长的边缘不超过1333像素。除了水平翻转外,没有使用其他增强。第一阶段,RPN以1:1的比例抽取256个锚点,第二阶段以1:3的比例抽取每幅图像的512个方案。我们使用16个gpu,total batch size为32个用于训练。我们的模型采用随机梯度下降(SGD)进行优化,25 epoch的动量为0.9,权重衰减为0.0001,初始学习率为0.04,16 epoch和22 epoch分别衰减为0.004和0.0004。虽然class-specific mask预测的性能较好,但由于大规模类别的存储和计算代价较大,因此我们采用了class-agnostic regime。在[15]之后,预测得分的阈值由0.05降低到0.0,保持前300个边界框作为预测结果。在LVIS上应用EQL时,我们做了一个小修改。因为每个图像LVIS提供额外的image-level标注哪些类别的图像(正类别集)和哪些类别(负类别集),如果EQL中的类别属于该图像的正类别集或负类别集,则它们不会被忽略,即公式7中的权重项对于那些类别将为1,即使它们是罕见的类别。
均衡损耗的有效性
表1展示了均衡损失函数在不同backbones和框架上的有效性。除了mask R-CNN,我们还在Cascade Mask R-CNN[1]上应用了均衡损失。我们的方法在所有这些模型上取得了一致的改进。从表中可以看出,改进主要来自于稀有类和常见类,说明了我们的方法对长尾分布类的有效性。
消融实验
表2:不同λ的消融研究。\(λ_r\)约为1.76×10−4,囊括了所有稀有类别。其中,λ c约为1.76×10−3,包括了所有稀有和常见的种类。当λ为0时,均衡损失退化为sigmoid cross-entropy
与其他方法的比较
表5给出了与其他广泛采用的解决类不平衡问题的方法的比较。从表中可以看出,重抽样方法在牺牲AP f的情况下提高了AP r和AP c,而重加权方法在所有类别上带来了一致的收益,但总体上的改善微不足道。均衡损耗显著提高了AP r和AP c,但对AP f的影响很小,优于其他方法。
表5:在LVIS v0.5 val set上与其他方法的比较。所有实验都是基于ResNet-50 Mask R-CNN进行的。
图像分类实验
验证了均衡损耗在transfer到其他任务时的泛化能力。我们还在两个长尾图像分类数据集CIFAR-100-LT和ImageNet-LT上评估了我们的方法。
数据集。[5]采用完全相同的设置,生成失衡因子为2001的CIFAR-100-LT。CIFAR-100-LT在train set中包含9502张图像,其中500张为最常见的类别,2张为最罕见的类别。CIFAR-100- lt与原始CIFAR-100使用相同的10k图像测试集。我们报告top1和top5 accuray。ImageNet-LT[30]是由ImageNet-2012[7]生成的。ImageNet-2012[7]包含1000个类别,每个类别的图像数量从1280到5张不等。训练图像116k,测试图像50k。与cifar - 100lt不同的是,我们还提供了许多射击,中等射击和少数射击的精度来衡量尾部等级的改进。
实现细节。对于CIFAR-100-LT,我们使用动量0.9和重量衰减0.0001的Nesterov SGD进行训练。我们使用的总小批大小为256,每个GPU有128个图像。对ResNet-32模型进行12.8K迭代训练,学习率为0.2,然后在6.4K和9.6K迭代时,学习率衰减为0.1。在前400次迭代中,学习率从0.1逐渐提高到0.2。对于数据增加,我们首先遵循与[24,18]相同的设置,然后使用autoAugment[4]和Cutout[8]。在测试中,我们简单地使用原始的32×32图像。对于ImageNet-LT,我们使用16个gpu的1024个小批处理。我们像[30]一样使用ResNet-10作为主干。模型训练12K次,学习率为0.4,学习速率为3.4K, 6.8K, 10.2K次。采用[14]逐步预热策略,在前500次迭代中将学习率从0.1提高到0.4。我们使用随机大小裁剪、颜色抖动和水平翻转来增加数据。训练输入大小为224×224。在测试中,我们将图像大小调整为256×256,然后在中心裁剪单个视图224×224。CIFAR-100-LT和ImageNet-LT检测结果。由于这些增强技术,我们在CIFAR-100-LT上建立了一个更强的基线。如表7所示,我们的EQL仍然将强基线提高了2%。这些改进来自于训练样本较少的课程。关于ImageNet-LT,我们也在表9中进行了消融研究。在softmanx损失基线的基础上,广泛的给定值给出了一致的改进。如表8和表10所示,我们的均衡损耗显著超过了之前的先进方法,这表明我们的方法可以有效地推广到不同的任务和数据集。
Conclusion
在本研究中,我们分析了长尾数据集中严重的inter-class competition问题。我们提出了一个新的均衡损失函数,以减轻过度 discouraging 梯度对尾部类别的影响。我们的方法简单而有效,对具有挑战性的长尾目标检测和图像分类数据集的不同框架和网络架构带来了显著的改进。