代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/gfl
出处:NIPS2020
核心点:
One-stage 目标检测器基本上是将目标检测建模成了一个密集分类和定位的任务。
分类任务一般使用 Focal Loss 来进行优化,定位任务一般是学习 Dirac delta 分布。
如 FCOS 中就提出了一个估计定位质量的量:IoU score 或 centerness score,然后 NMS 排序的时候,将分类得分和框质量得分相乘。
当前的 One-stage 目标检测器一般都是引入一个单独的预测分支来量化定位效果,定位的预测效果有助于分类,从而提高检测性能。
本文提出了三个基础元素:
目前的实现中有两个主要的问题:
1、分类得分和框质量估计在训练和测试时候不一致

用法不一致:分类和质量估计,在训练过程是分开的,但在测试过程是乘在一起,作为 NMS score 排序的依据,存在一定的 gap
对象不一致:借助 Focal Loss 的力量,分类分支能够使得少量的正样本和大量的负样本一起训练,但框的质量估计其实是只针对正样本训练的。
对于 one-stage 检测器,做 NMS 排序的时候,所有的样本都会将分类得分和框质量得分相乘,来用于排序,所以必然会存在一部分分数较低的负样本的质量预测在训练过程中没有监督信号,也就是对大量的负样本的质量没有衡量。这就会导致一个分类得分很低的负样本,由于预测了一个极高的框质量得分,导致被预测为一个正样本。

2、bbox regression 的表示不够灵活(Dirac delta 分布不灵活),没有办法建模复杂场景下的 uncertainty

针对现存的两个问题:
① 训练和测试不一致
② 框位置分布建模不够通用
作者提出了下面的解决方案。
解决问题一:建立一个 classification-IoU joint representation
对于第一个训练和测试不一致的问题,为了保证训练和测试一致,同时还能兼顾分类和框质量预测都能训练到所有的正负样本,作者提出将框的表达和分类得分结合起来使用。
方法:
当预测的类别为 ground-truth 类别的时候,使用位置质量的 score 作为置信度,本文的位置质量得分就是使用 IoU 得分来衡量。

解决问题二:直接回归一个任意分布来建模框的表示
方法:使用 softmax 来实现,涉及到从狄拉克分布的积分形式推导到一般分布的积分形式来表示框
这样一来,就消除了训练和测试的不一致性,而且建立了如图 2b 的分类和定位的强相关性。
此外,负样本可以使用 0 quality scores 来监督。

Generalized Focal Loss 的构成:
Generalized Focal Loss 是如何提出的:
① 原始 FL:
现在的密集预测任务,一般都使用 Focal Loss 来进行分类分支的优化,可以解决前景、背景数量不平衡等问题,其公式如下所示,但也只能支持 0/1 这样的离散类别 label。

**① 提出 QFL:Quality Focal Loss **
标准的 one-hot 编码是在对应真实类别处为 1,其他位置为 0。
使用 classification-IoU 特征,能够将标准的 one-hot 编码柔化,使其更 soft,学习的目标 y ∈ [ 0 , 1 ] y\in[0,1] y∈[0,1],而非直接学习目标 “1”。
对于本文提出了联合表示,label 变成了 0~1 的连续值。FL 不再适用。

为了保证 QFL 有 Focal Loss 的平衡难易样本、正负样本的能力,又能支持连续值的监督,需要对 FL 进行一些扩展。
Quality Focal Loss(QFL)最终为:


② 提出 DFL: Distribution Focal Loss
本文的位置学习是以相对偏移为回归目标的,且之前的文章一般都是以狄拉克分布 δ ( x − y ) \delta(x-y) δ(x−y) 为指导,满足 ∫ − ∞ + ∞ δ ( x − y ) d x = 1 \int_{-\infty}^{+\infty} \delta(x-y)dx = 1 ∫−∞+∞δ(x−y)dx=1,通常使用全连接层来实现。
但本文考虑到真实分布的多样性,选择使用更加通用的分布来表示位置分布。
真实分布通常不会距离标注的位置太远,所以又额外增加了一个 Loss

QFL 和 DFL 可以统一表示为 GFL:

训练的 loss 如下:



