论文: The Equalization Losses: Gradient-Driven Training for Long-tailed Object Recognition
代码:
- https://github.com/ModelTC/United-Perception
- (已集成到 mmdetection) https://github.com/tztztztztz/eqlv2
解决长尾分布问题直观的做法有两类:设计数据重采样策略,或者对损失重加权(为不同类别或实例分配不同的权重)。大多数现有方法都是基于类别的频率设计的,然而这有个缺陷:这些方法不够鲁棒,因为广泛存在着容易的负样本和冗余的正样本。并且数据重采样还会增加训练时长。而本篇工作使用累积正负梯度比作为指标。它更稳定、更精确,能更好地反映模型的训练状态,对于长尾类别,正负梯度比接近0,而对于非长尾类别,正负梯度比接近1。本文根据当前的累积梯度动态地重新平衡正/负梯度,并以实现平衡梯度比为统一目标。基于此思想,论文得到了BCE loss、CE loss、Focal loss的均衡损失(Equalization loss)版本。
在本篇论文之前,论文作者已经在CVPR2020 《Equalization loss for long-tailed object recognition》和 CVPR2021 《Equalization Loss v2: A New Gradient Balance Approach for Long-tailed Object Detection》发表了部分观点,而本篇论文像是对以往工作的大一统总结和扩展。
1. BCE loss及对应的Sigmoid-EQL
BCE loss项通过下面的公式计算
:
的loss为每个样本的loss求和:
BCE中每个类别的概率是独立估计的,没有交叉归一化。这一特性使得二元交叉熵适用于由一组独立子任务组成的任务,如目标检测和多标签图像分类。
对其增加正梯度(即正样本带来的梯度,反之亦然)的权重,降低负梯度的权重,得到Sigmoid-EQL如下:
其中
2. CE loss及对应的Softmax-EQL
CE loss项通过下面的公式计算:
其中的p不使用sigmoid而是使用softmax:
它对于需要单一输出类别的任务非常有用,例如图像分类和语义分割。尽管CE只计算一个实例的正样本的损失,但由于softmax函数,梯度将回流到负样本的对数。
的影响,具体的计算方式如下:
其中
(在代码库中还有个Softmax-EQL v2版本,两者性能相近,计算方式如下:)
3. Focal Loss以及对应的Equalized Focal Loss
Focal loss主要用于单阶段目标检测中的前景和背景不平衡。Focal loss项通过下面的公式计算:
$$ alpha_t=left{begin{array}{cc} alpha &if y=1 \ 1-alpha, & otherwise end{array}right. $$
一般取2。可以看到Focal loss只区分样本的难易(即一般为前景难,背景容易),而不区分样本的类别。也就是说Focal loss主要解决的是前景-背景不平衡问题,而不是前景-前景不平衡问题。我们把EQL的思想和Focal loss的思想结合起来,我们期望稀有难样本比常见难样本造成更多的损失贡献,即得到Equalized Focal Loss:
其中:
作者在双阶段目标检测 (Sigmoid-EQL)、单阶段目标检测(Equalized Focal Loss)、图像分类(Softmax-EQL)、语义分割四个任务上在多个长尾分布数据集进行了验证,证明了EQL可以显著涨点,特别是对长尾类别效果提升尤为明显。
笔者也在自己的一个长尾分类任务中试了Softmax-EQL,确实可以带来可观的性能提升!