Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
这个工作核心是围绕“表示”的改进来的,也就是大家所熟知的“representation”这个词。这里的表示具体是指检测器最终的输出,也就是head末端的物理对象,目前比较强力的one-stage anchor-free的检测器(以FCOS,ATSS为代表)基本会包含3个表示:
-
分类表示
-
检测框表示
-
检测框的质量估计(在FCOS/ATSS中,目前采用centerness,当然也有一些其他类似的工作会采用IoU,这些score基本都在0~1之间)
那么要改进表示一定意味着现有的表示或多或少有那么一些问题。事实上,我们具体观察到了下面两个主要的问题:
提出问题
问题1
在训练和推理阶段对定位置信度和类别分数使用的不一致
定位置信度
其一, 用法不一致。如上图1所示,在训练的时候,分类得分和质量评估是自己训练自己的,但是在推理的时候,将分类得分和质量评估相乘然后作为NMS过滤的依据,这个训练和推理的过程显然没有端到端,其中存在一定的gap。
其二, 对象不一致。在回归任务中,定位质量评估(Iou值)是只考虑正样本的情况,也就是在训练的时候,只有当判定与GT的IOU大于某个阈值的时候,才会考虑把这个anchor当作正样本拿去训练,而很多负样本的质量评估在训练过程中是没有监督信号的。就是说对于大量可能的负样本,他们的质量预测是一个未定义行为。
可能会出现:一个分类score相对低的真正的负样本,由于预测了一个不可信的极高的质量score(Iou值),而导致它可能排到一个真正的正样本(分类score不够高且质量score相对低)的前面,会导致经过NMS后反而把正样本进行过滤掉。
如图2(a)所示,以个别情况举例,存在得分较低但质量评估较高的物体A和B,其与得分不够高且质量评估较低的正样本相比,经过NMS之后会把正样本过滤掉,显然不符合真实情况;如图2(b)所示,原始方式分类得分和定位得分关联性弱,红色区域内包含很多负样本,但是定位得分很高,可能会影响最终的性能。(本文提出的联合分类和定位表示使得分类和定位得分保持一致。(绿色点的区域))
这两个因素导致了训练和测试时的不一致,并且可能会降低检测的性能
问题2
由于数据集中的模糊性和不确定性,狄拉克分布针对复杂场景下(模糊和不确定性边界)存在不灵活的问题。
在复杂场景中,边界框的表示具有很强的不确定性,而现有的框回归本质都是建模了非常单一的狄拉克分布,非常不灵活。我们希望用一种general的分布去建模边界框的表示。问题二如图所示(比如被水模糊掉的滑板,以及严重遮挡的大象):
问题分析
边界框质量估计表示
如FCOS采用一个单独的分支来训练质量评估,其会导致训练和推理中存在gap,也有PISA和IoU balance的方法通过质量评估来加权分类的权重,旨在加强分类得分和回归质量的联系,但其实并没有影响到分类loss的优化目标。## 边界框表示
之前的Dirac delta分布和高斯分布都不能建模场景复杂的边界框,本文进一步放宽假设,直接学习更具随意性、灵活性边界框的一般分布。
关于建模目标检测边界框概率分布的内容可以参考https://zhuanlan.zhihu.com/p/151398233。
该文方法
对于回归的质量评估,联合分类得分和IoU score得到一个单一的变量(称之为分类和IOU联合表示),这样可以使得训练和推理end to end。
对于边界框的表示,学习离散化概率分布在其连续空间上,而不引入任何其他更强的先验知识(如高斯分布,其具有对称性)。
那么如何对其进行优化呢?我们通常对于正负样本比例不平衡的问题,分类分支采用focal loss来解决,其是针对离散的{0, 1}标签,本文结合IoU score变为了连续值,将其扩展采用QFL来进行训练,QFL主要产生0~1的值作为相应类别的质量评估,而DFL主要学习任意分布中目标bounding box连续定位的值。
QFL
为了解决上述训练和测试阶段之间的不一致问题,我们提出了定位质量(即IoU分数)和分类分数(简称“分类IoU”)的联合表示,将FL中y = 0 或者1 的标准软化了,具体来说,用预测的边界框与定位标签计算的IOU,不仅用于计算IOU loss,还用来作为分类的标签y,即one-hot分类标签的1改成IOU,再计算分类损失QFL。
交叉熵损失拓展为更充分的表示
比例因子拓展为估计值和真值的绝对距离
其中y代表IoU得分不同的正样本,为0~1的质量标签,σ为预测的sigmoid
当σ = y的时候,总的loss是最小的;相差较大时,被判定为难例,调节因子会加大它在loss中的比重;而两者近似时,当前loss值很小。实验证明β = 2是最合适的。
DFL
本文不直接预测y*,而是预测边界框的分布概率预测。具体的,取区间[0,k](如k=16,可根据数据集改变),将定位标签l,r,t,b除以stride后一般会落到区间[0,k]的某个区间[i,i+1],因此网络输出k+1个sigmoid作为定位落在区间节点的概率。当定位标签落在区间[i,i+1]时,预测的边界框分布概率p(i),p(i+1)理论上应该较大。因此增加了损失函数DFL:
此外,预测的边界框分布概率在区间处积分后可得到y*,由于定义时用的是区间离散点,所以
积分后的y*可以看作边界框的期望,再用于与真实标签计算IOU loss,同时算出来的IOU作为分类的标签。
对于任意分布来建模框的表示,它可以用积分形式嵌入到任意已有的和框回归相关的损失函数上,例如最近比较流行的GIoU Loss。这个实际上也就够了,不过涨点不是很明显,我们又仔细分析了一下,发现如果分布过于任意,网络学习的效率可能会不高,原因是一个积分目标可能对应了无穷多种分布模式。如下图所示:
最后,QFL和DFL其实可以统一地表示为GFL,我们将其称之为Generalized Focal Loss,同时也是为了方便指代,其具体形式如下:
实验对比
https://zhuanlan.zhihu.com/p/147691786
https://zhuanlan.zhihu.com/p/310229973
https://zhuanlan.zhihu.com/p/267123532