General Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
目录
Code && Paper
Background && Motivation
不一致性
-
Localization Quality Estimation (LQE) 是许多one-stage或者anchor-free方法改善效果的途径。LQE的常用方法见下图所示。
-
但是上述的方法会带来一定的不一致性1,它主要包括以下两点
-
训练和测试两个阶段的,如上图所示,训练的时候单独优化classification score和IoU score,测试的时候将其相乘,然后会导致训练和测试的时候不一致。
-
测试的时候,进入NMS的是classification score乘IoU score,就会存在一种情况classification score较低,但是IoU score较高,然后使得负样本没有被过滤。这是因为IoU score并没有对负样本做优化,所有负样本的IoU score并不受控制,如下图所示。
-
-
Contribution1 为了解决上述的问题,作者提出使用Joint的方式来联合优化classification score和IoU score。即就是用同一个prediction值即代表classification score又代表IoU score
不灵活性
-
目前目标检测的标准框有时候会存在标注的不确定性(或噪声),如下图所示。而目前常用的bbox优化方式是优化Dirac分布(具体什么是Dirac分布后续会介绍)。
-
但是Dirac分布过于固定,不能解决uncertain的问题,因此有人提出了Gaussian 分布。
-
但是作者认为Gaussian分布过于理想,不能适应于复杂的现实情况。
-
Contribution2 因此,作者提出了不依赖于任何先验的潜在分布优化(underlying distribution)
实验
- Contribution3 作者在多组实验中证明了上述两个contributions的有效性。上述两个contributions在training和inference阶段均不会增加太多耗时,增加的耗时可以忽略不计。
Method
Quality Focal Loss
-
在上一节,我们介绍了作者使用同一个prediction score来同时表示classification score和IoU score,那么优化该值的时候真值应该是什么呢?作者选择IoU值作为优化的真值,由于IoU是一个[0,1]之间的连续值。而传统的focal loss优化的目标是{0, 1}这样的离散值。因此该loss更加泛化一点(general)
-
Quality Focal Loss就是上述的更加泛化的FocalLoss,其定义如下所示
Q F L ( δ ) = − ∣ y − δ ∣ β ( ( 1 − y ) l o g ( 1 − δ ) + y l o g ( δ ) ) QFL(\delta) = -|y-\delta|^\beta((1-y)log(1-\delta ) + ylog(\delta )) QFL(δ)=−∣y−δ∣β((1−y)log(1−δ)+ylog(δ)) -
上述公式的后部分是展开形式的交叉熵,系数是adaptive的,当预测是和真值接近的时候,系数小,当远的时候系数大。
Distribution Focal Loss
-
在本节我们主要介绍以下何为Distribution,以及我们的Distribution Focal Loss。
-
先看为什么是Distribution?传统的BBox regression即就是直接优化两个值,让pred_w接近真值的w。
-
换个角度看,假设我们预测的值为pred_w, 我们直接优化pred_w接近w,那么我们就相当于让pred_w出现的概率是1.0。这即就是Dirac Distribution,其如下图所示。
-
也就是说我们最终的预测值是对所有y可能出现的值计算积分。也就如下公式所示。
y ^ = ∫ y 0 y n P ( x ) x d x \hat{y} = \int_{y_0}^{y_n}P(x)xdx y^=∫y0ynP(x)xdx
-
-
接下来在看我们的Distribution Focal Loss, 有上式可知,上式是比Dirac更加泛化的形式。因此本文用上式来计算预测的y^。 预测y^之前我们需要先清楚两点
- 连续值的积分是不好实现的,我们可以用离散值的求和来代替
- 我们需要确定预测值的范围。
- 有了上述两个条件,我们可以得到pred^的计算公式如下所示。
y ^ = ∑ y 0 y n P ( x ) x d x \hat{y} = \sum_{y_0}^{y_n}P(x)xdx y^=y0∑ynP(x)xdx
-
得到上述的y的预测值后,我们如何去优化呢?因为我们知道y^是接近y的,因此我们需要让int(y)和int(y)+1的prob最大。因此就可以对应下面的公式。
- 假设我们知道y的取值范围为[Y0, YN],那我们最后预测的纬度是yn-y0+1,而不是1(Dirac distribution)。
总的Loss
- 如下图所示
Experiment
Discussion
- GIoU 是否必须?
- 根据总的Loss定义,我们发现GIoU貌似不是必须,因为通过
distribution focal loss也可以起到bbox优化的目的。因此我们做了对比实验,发现取消GIoU loss会带来小幅度的指标下降。
- 根据总的Loss定义,我们发现GIoU貌似不是必须,因为通过
- 别的应用场景
- 数据分类(带有噪声)。针对每个类,我们将其拆分成N份(0., 0.1, 0.2, …, 1.0),分别预测每一份的概率,然后求和,即为最终该类别的概率。
- distribution的意义
- 分布越陡峭,证明越确定,否则越不确定。