针对长尾分布的Eql损失

2023-10-18 08:52:34 浏览数 (1)

论文: 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项通过下面的公式计算

operatorname{BCE}(p, y)= begin{cases}-log (p) & text { if } y=1 \ -log (1-p) & text { otherwise }end{cases}

:

p_{mathrm{t}}= begin{cases}p & text { if } y=1 \ 1-p & text { otherwise }end{cases}

的loss为每个样本的loss求和:

mathrm{L}(mathcal{P}, mathcal{Y})=sum_{i in mathcal{I}} sum_{j=1}^C operatorname{BCE}left(p_{mathrm{t}}right)

BCE中每个类别的概率是独立估计的,没有交叉归一化。这一特性使得二元交叉熵适用于由一组独立子任务组成的任务,如目标检测和多标签图像分类。

对其增加正梯度(即正样本带来的梯度,反之亦然)的权重,降低负梯度的权重,得到Sigmoid-EQL如下:

mathrm{L}(mathcal{P}, mathcal{Y})=sum_{i in mathcal{I}} sum_{j=1}^Cleft(q_j y_i^j r_jleft(1-y_i^jright)right) mathrm{BCE}left(p_{mathrm{t}}right)

其中

2. CE loss及对应的Softmax-EQL

CE loss项通过下面的公式计算:

CE(p,y)=-ylog(p)

其中的p不使用sigmoid而是使用softmax:

p_i^j = frac{e^{z_i^j}}{sum^C_{k=1}e^{z_i^k}}

它对于需要单一输出类别的任务非常有用,例如图像分类和语义分割。尽管CE只计算一个实例的正样本的损失,但由于softmax函数,梯度将回流到负样本的对数。

的影响,具体的计算方式如下:

p_i^j=frac{left(G_j^{p o s}right)^pi e^{z_i^j}}{sum_{k=1}^Cleft(G_k^{p o s}right)^pi e^{z_i^k}}

其中

(在代码库中还有个Softmax-EQL v2版本,两者性能相近,计算方式如下:)

p_i^j=left(frac{left(G_j^{p o s}right)}{sum_{k=1}^Cleft(G_k^{p o s}right)}right)^{pi} e^{z_i^j}

3. Focal Loss以及对应的Equalized Focal Loss

Focal loss主要用于单阶段目标检测中的前景和背景不平衡。Focal loss项通过下面的公式计算:

FL(p_t)=-alpha_t(1-p_t)^{gamma}log(p_t)

$$ 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:

operatorname{EFL}left(p_{mathrm{t}}right)=-w^jleft(1-p_{mathrm{t}}right)^{gamma^j} log left(p_{mathrm{t}}right)

其中:

w^j=alpha_tfrac{gamma_b gamma_v^j}{gamma_b}

作者在双阶段目标检测 (Sigmoid-EQL)、单阶段目标检测(Equalized Focal Loss)、图像分类(Softmax-EQL)、语义分割四个任务上在多个长尾分布数据集进行了验证,证明了EQL可以显著涨点,特别是对长尾类别效果提升尤为明显。

笔者也在自己的一个长尾分类任务中试了Softmax-EQL,确实可以带来可观的性能提升!

0 人点赞