论文: https://arxiv.org/pdf/2006.04388.pdf
代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/gfl
出处:NIPS2020
核心点:
- 提出了对边界框位置的 generalize 分布的建模(越清晰的边界学习会越好,分布会比较尖锐,越模糊的边界学习会较差,分布平缓)
一、背景
One-stage 目标检测器基本上是将目标检测建模成了一个密集分类和定位的任务。
分类任务一般使用 Focal Loss 来进行优化,定位任务一般是学习 Dirac delta 分布。
如 FCOS 中就提出了一个估计定位质量的量:IoU score 或 centerness score,然后 NMS 排序的时候,将分类得分和框质量得分相乘。
当前的 One-stage 目标检测器一般都是引入一个单独的预测分支来量化定位效果,定位的预测效果有助于分类,从而提高检测性能。
本文提出了三个基础元素:
- 检测框的质量估计(如 IoU score 或 FCOS 的 centerness score)
- 分类
- 定位
目前的实现中有两个主要的问题:
1、分类得分和框质量估计在训练和测试时候不一致
-
用法不一致:分类和质量估计,在训练过程是分开的,但在测试过程是乘在一起,作为 NMS score 排序的依据,存在一定的 gap
-
对象不一致:借助 Focal Loss 的力量,分类分支能够使得少量的正样本和大量的负样本一起训练,但框的质量估计其实是只针对正样本训练的。
以 FCOS 为例,Centerness 是给所有判定为正样本的样本点来计算的,判定为负样本的样本点是不会被计算 Centerness 的,可以看做是对所有的正样本,按其距离 gt 中心点的距离来设置权重,距离越近,则质量越高,权重越大,越有可能被 NMS 排序的时候排到前面。如果一个样本是真正的负样本,且分类得分很小,但预测为正且 Centerness 得分较高的话,则会排序的时候排到前面,导致被预测为正。
对于 one-stage 检测器,做 NMS 排序的时候,所有的样本都会将分类得分和框质量得分相乘,来用于排序,所以必然会存在一部分分数较低的负样本的质量预测在训练过程中没有监督信号,也就是对大量的负样本的质量没有衡量。这就会导致一个分类得分很低的负样本,由于预测了一个极高的框质量得分,导致被预测为一个正样本。
2、bbox regression 的表示不够灵活(Dirac delta 分布不灵活),没有办法建模复杂场景下的 uncertainty
- 在复杂场景中,边界框的表示具有很强的不确定性,而现有的框回归本质都是建模了非常单一的狄拉克分布,非常不灵活。所以作者希望用一种 general 的分布去建模边界框的表示。问题如图 3 所示(比如被水模糊掉的滑板,以及严重遮挡的大象):
二、方法
在详细介绍方法之前,首先概述一下,让大家有一个整体把握,General Focal loss 其实是 Focal loss 的广义形式,下面的 QFL 和 DFL 也都是 GFL 的特殊形式:
- 提出了 QFL (Quality Focal Loss),用于分类分支的监督:针对训练和测试不一致的问题,GFL 中提出了 QFL 来学习分类得分和位置得分的联合表达,QFL 其实是将 FL 扩展到连续变量的学习问题上,学习的目标是 IoU (0~1 间的值),而非分类得分(当预测类别是真实类别时,联合表示特征 J=IoU,否则为 0)
- 提出了 DFL (Distribution Focal Loss),和 GIoU 等回归 loss 通过加权共同使用:将框的四个边的位置分别建模成一个 general distribution(而非其他方法中的狄拉克分布),让网络快速的聚焦于和目标位置距离近的位置的分布
针对现存的两个问题:
① 训练和测试不一致
② 框位置分布建模不够通用
作者提出了下面的解决方案。
解决问题一:建立一个 classification-IoU joint representation
对于第一个训练和测试不一致的问题,为了保证训练和测试一致,同时还能兼顾分类和框质量预测都能训练到所有的正负样本,作者提出将框的表达和分类得分结合起来使用。
方法:
当预测的类别为 ground-truth 类别的时候,使用位置质量的 score 作为置信度,本文的位置质量得分就是使用 IoU 得分来衡量。
解决问题二:直接回归一个任意分布来建模框的表示
方法:使用 softmax 来实现,涉及到从狄拉克分布的积分形式推导到一般分布的积分形式来表示框
这样一来,就消除了训练和测试的不一致性,而且建立了如图 2b 的分类和定位的强相关性。
此外,负样本可以使用 0 quality scores 来监督。
Generalized Focal Loss 的类型:
- QFL:Quality Focal Loss,学习分类得分和位置得分的联合表达
- DFL:Distribution Focal Loss,将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布
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 不再适用。
- y=0 时,也就是负样本,quality score 为 0
- 0<y<=1 时,表示正样本,且位置得分的 label y 是使用 IoU score 表示的,处于 0~1 之间
为了保证 QFL 有 Focal Loss 的平衡难易样本、正负样本的能力,又能支持连续值的监督,需要对 FL 进行一些扩展。
- 交叉熵 − l o g ( p t ) -log(p_t) −log(pt) 的扩展: − ( ( 1 − y ) l o g ( 1 − σ ) + y l o g ( σ ) ) -((1-y)log(1-\sigma) + ylog(\sigma)) −((1−y)log(1−σ)+ylog(σ))
- 调制因子 ( 1 − p t ) γ (1-p_t)^\gamma (1−pt)γ 的扩展: ∣ y − σ ∣ β ( β > = 0 ) |y-\sigma|^\beta (\beta >=0) ∣y−σ∣β(β>=0)
Quality Focal Loss(QFL)最终为:
- σ = y \sigma = y σ=y 是 QFL 的全局最小化解
- 图 5a 展示了不同 β \beta β 的效果(y=0.5)
- ∥ y − σ ∥ β \|y-\sigma\|^\beta ∥y−σ∥β 是一个调制因子,当一个样本的 quality 估计不准确时,该调制因子会很大,让网络更关注于该难样本,当quality 的估计趋于准确时,即 σ \sigma σ → y y y 时,该调制因子会趋于 0,该样本对 loss 的影响权重会降低。 β \beta β 控制着减低的过程,本文 β = 2 \beta=2 β=2 最优。
② 提出 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,通常使用全连接层来实现。
但本文考虑到真实分布的多样性,选择使用更加通用的分布来表示位置分布。
由于标注的时候无法标注不确定性,故目前大家训练都是把 gt bbox 当做单一的狄拉克分布,也就是对应 gt bbox 值位置为 1,其余都是 0,很明显这无法反应自遮挡和物体间遮挡现象。故作者的做法是将回归问题转化为分类问题,例如待回归值是4.6,那么我假设分布长度是8,那么我可以设置分类 label=(0.0733,0,0,0.0067,0.02,0.9,0,0,0),这个 label 要满足分布特性即 sum(label)=1, 并且 0 × l a b e l [ 0 ] + 1 × l a b e l [ 1 ] + 2 × l a b e l [ 2 ] + . . . = 4.6 0 \times label[ 0 ]+1 \times label[ 1 ]+2 \times label[ 2 ]+...=4.6 0×label[0]+1×label[1]+2×label[2]+...=4.6。 可想而知,这种 Label 分布是无穷无尽的,无法提前给定的。如图 5b 所示。
虽然人工标注可能会有一些误差,但人工标注边界的分布通常不会距离真正的边界位置太远,所以又在回归 loss(如 IoU、GIoU)的基础上额外增加了一个 DF Loss,一起来监督回归的效果,让网络快速的聚焦于标注位置附近。
- y i y_i yi 和 y i + 1 y_{i+1} yi+1 是浮点值 y 的左右整数值,S 是输出分布,长度为17
- DFL 能够让网络更快地聚焦于目标 y y y 附近的值,增大它们的概率
- 含义是以交叉熵的形式去优化与标签y最接近的一左一右两个位置的概率,从而让网络更快的聚焦到目标位置的邻近区域的分布
DFL 的全局最优解:
也就是说学出来的分布理论上是在真实浮点坐标的附近,并且以线性插值的模式得到距离左右整数坐标的权重
QFL 和 DFL 可以统一表示为 GFL:
- 变量为 y l y_l yl 和 y r y_r yr
- 预测的上述两个变量的分布分别为: p y l p_{y_l} pyl 和 p y r p_{y_r} pyr, 且 p y l + p y r = 1 p_{y_l} + p_{y_r} = 1 pyl+pyr=1
- 最终的预测为: y ^ = y l p y l + y r p y r \hat{y}=y_lp_{y_l}+y_rp_{y_r} y^=ylpyl+yrpyr,且 y l < = y ^ < = y r y_l <= \hat{y} <= y_r yl<=y^<=yr
训练的 loss 如下:
- L Q L_Q LQ:QFL
- L B L_B LB:GIoU loss
- L D L_D LD:DFL
- λ 0 = 2 \lambda_0 = 2 λ0=2, λ 1 = 1 / 4 \lambda_1 = 1/4 λ1=1/4
三、效果
四、一些彩蛋
为什么 IoU-branch 比 centerness-branch 效果更好?
- IoU 本身就更适合衡量定位效果
- Centerness label 过小导致正样本漏检
centerness 是 FCOS 中提出的用于衡量预测框中心点和 gt 框中心点距离的指标,GFLv1 中 的 预测IoU 是对预测框定位质量的预测,上面的实验的证明了 IoU 效果更好一些,这是为什么呢?
本文作者通过分析后发现,主要原因在于对于极小的物体,centerness 的 label 非常小,难以被优化,如图 11 所示。
为什么 label 小的时候难以被优化,或者说会降低网络的查全率呢,因为如果一些正样本的 centerness label 本来就很小,那么在 NMS 的时候,乘到 classification score 上,会拉低排序的得分,导致这些正样本被排到后面,就会漏检。
此外,图 12 展示了 centerness label 和 IoU label,的分布图,IoU label 的绝大部分都大于 0.4,但 Centerness label 较小,还有一些趋近于 0,过小的 centerness label 会导致 NMS 排序时被排到后面,最后被过滤掉,导致漏检。
中心度标签的小值防止了一组地面真相边界框被召回,因为NMS的最终分数可能很小,因为它们的预测中心度分数已经由这些极小的信号监督。