目录
论文:Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
时间:2020
1. Motivation
1.1 存在的问题
目前,有些检测器为了评估检测框的质量,会在detection head添加一个与分类分支和回归分支并行的新分支,比如FCOS/ATSS中的centerness分支、IoU-Net中的IoU score分支。通常这些表示预测框质量的分支的输出值是0~1内的连续值。
-
FCOS:
-
IoU-Net:
尽管新添加的预测框质量评估分支可以提高检测器的性能,但也存在以下2个主要问题:
-
classification score和IoU/centerness score训练测试不一致
1) 用法不一致。训练时,分类分支和质量估计分支是各自独立训练的,但测试时,却又是乘在一起作为NMS score排序的依据,这个操作显然没有end-to-end,必然存在一定的gap。
2) 对象不一致。借助Focal Loss的力量,分类分支能够使得少量的正样本和大量的负样本一起成功训练,但是质量估计通常就只针对正样本训练。那么,对于one-stage的检测器而言,在做NMS score排序的时候,所有的样本都会将分类score和质量预测score相乘用于排序,那么必然会存在一部分分数较低的“负样本”的质量预测是没有在训练过程中有监督信号的,有就是说对于大量可能的负样本,他们的质量预测是一个未定义行为。这就很有可能引发这么一个情况:一个分类score相对低的真正的负样本,由于预测了一个不可信的极高的质量score,而导致它可能排到一个真正的正样本(分类score不够高且质量score相对低)的前面,如图所示:
-
bbox regression采用的表示不够灵活,没有办法建模复杂场景下的不确定性
在复杂场景中,边界框的表示具有很强的不确定性,而现有的框回归本质都是建模了非常单一的狄拉克分布,非常不灵活。我们希望用一种更一般的分布去建模边界框的表示。如图所示(比如被水模糊掉的滑板,以及严重遮挡的大象):
1.2 本文的解决方法
-
对于第一个问题,为了保证训练和测试时的一致性,同时保证分类score和质量预测score都能够训练到所有的正负样本,将两者的表示进行联合,此时将分类分支和质量评估分支合在一起,得到的输出不再表示单一的类别score或质量预测score,而是两者的联合表示。
-
对于第二个问题,选择直接回归一个任意分布来建模框的表示。当然,在连续域上回归是不可能的,所以可以用离散化的方式,通过softmax来实现即可。这里面涉及到如何从狄拉克分布的积分形式推导到一般分布的积分形式来表示框。
2. Generalized Focal Loss(GFL)
2.1 Quality Focal Loss (QFL)
- 传统方法中,分类分支输出 W × H × K W\times H\times K W×H×K的类别预测概率,其中, K K K是类别总数,而第 k k k个通道上某个位置的值表示该边界框属于第 k k k类的概率。在构建训练标签时,每个通道上特征图的每个位置的标签是离散的,即 y ∈ { 0 , 1 } y\in\{0,1\} y∈{0,1},其中, y = 1 y=1 y=1表示边界框属于对应类别。
- 显然,特征图的每个位置的坐标已经编码了类别信息,当与质量预测(如IoU score)进行联合时,可令每个位置上的值表示该边界框与GT框的IoU,这样,特征图的每个位置的训练标签从离散变成了连续,即 y ∈ [ 0 , 1 ] y\in[0,1] y∈[0,1],此时,实现了对hard label { 0 , 1 } \{0,1\} {0,1}进行平滑化,得到soft label [ 0 , 1 ] [0,1] [0,1],相比于hard label,soft label包含了更多信息。
- Focal Loss是为one-stage检测器的分类分支服务的,它支持0或1这样的离散类别label。然而,对于分类-质量联合表示,label却变成了0~1之间的连续值。我们既要保证Focal Loss此前的平衡正负、难易样本的特性,又需要让其支持连续数值的监督学习,因此,需要对Focal Loss在连续域进行拓展,拓展结果为本文的Quality Focal Loss (QFL)。
- Focal loss的形式为
F L ( p t ) = − ( 1 − p t ) γ l o g ( p t ) , γ ≥ 0 FL(p_t)=-(1-p_t)^{\gamma}log(p_t), \ \ \gamma \geq0 FL(pt)=−(1−pt)γlog(pt), γ≥0 p t = { p , i f y = 1 1 − p , o t h e r w i s e p_t= \left\{ \begin{aligned} p,\ \ \ \ \ if\ y=1 \\ 1-p,\ otherwise\\ \end{aligned} \right. pt={p, if y=11−p, otherwise - 如何在连续域进行拓展?还记得CornerNet中使用高斯函数对分类标签进行平滑化后构造相应的损失函数吗?其思想和Quality Focal Loss (QFL)如出一辙,即基本的分类损失仍然使用hard label的二元交叉熵损失
C E ( p , y ) = − y l o g ( p ) − ( 1 − y ) l o g ( 1 − p ) CE(p,y)=-ylog(p)-(1-y)log(1-p) CE(p,y)=−ylog(p)−(1−y)log(1−p)而soft label则体现在对基本二元交叉熵损失添加一个权重,目的是减少某些样本的权重。实际上,Quality Focal Loss (QFL)就具有这样的形式
Q F L ( p ) = − ∣ y − p ∣ β [ y l o g ( p ) + ( 1 − y ) l o g ( 1 − p ) ] QFL(p)=-|y-p|^\beta[ylog(p)+(1-y)log(1-p)] QFL(p)=−∣y−p∣β[ylog(p)+(1−y)log(1−p)]当预测值 p p p与其标签 y y y接近时,表示预测得比较好,视为easy example,权重 ∣ y − p ∣ β |y-p|^\beta ∣y−p∣β用来减小easy example产生的损失,当预测值 p p p与其标签 y y y较远时,表示预测得较差,视为hard example,权重 ∣ y − p ∣ β |y-p|^\beta ∣y−p∣β较大,令模型更加关注hard example的学习。下图表示当 y = 0.5 y=0.5 y=0.5时,不同 β \beta β下,不同预测概率 p p p对应的Quality Focal Loss (QFL)。论文表示, β = 2 \beta=2 β=2时效果最好。
2.2 Distribution Focal Loss (DFL)
-
传统的方法如FCOS、ATSS等anchor-free检测器将边界框建模成狄拉克函数,这种建模方法得到的是"硬边界",无法对噪声引入的不确定性进行建模;KL loss和Gaussian yolov3将边界框建模成高斯分布,实现对不确定性的建模;本文则将边界框建模成一般分布,更好地对歧义性和不确定性进行建模。
-
假设真实回归标签 y y y表示边界框内某点到某边界的距离,预测值为 x x x,则狄拉克函数 δ ( x − y ) \delta(x-y) δ(x−y)满足
∫ − ∞ + ∞ δ ( x − y ) d x = 1 \int_{-\infty}^{+\infty}\delta(x-y)dx=1 ∫−∞+∞δ(x−y)dx=1所以
y = ∫ − ∞ + ∞ δ ( x − y ) x d x y=\int_{-\infty}^{+\infty}\delta(x-y)xdx y=∫−∞+∞δ(x−y)xdx本文将边界框建模成一般分布 P ( x ) P(x) P(x),则当 y 0 ≤ y ≤ y n y_0\le y\le y_n y0≤y≤yn, n ∈ N + n\in N_+ n∈N+时,最终的边界框预测值 y ′ y' y′同样应满足 y 0 ≤ y ′ ≤ y n y_0\le y'\le y_n y0≤y′≤yn,且
y ′ = ∫ − ∞ + ∞ P ( x ) x d x = ∫ y 0 y n P ( x ) x d x y'=\int_{-\infty}^{+\infty}P(x)xdx=\int_{y_0}^{y_n}P(x)xdx y′=∫−∞+∞P(x)xdx=∫y0ynP(x)xdx显然,不管是狄拉克分布还是本文的一般分布,都是以建模所得分布的均值作为最终的边界框预测值 y ′ y' y′。相比于狄拉克函数,一般分布 P ( x ) P(x) P(x)在获得最终边界框预测值 y ′ y' y′时,考虑了多个位置的输出,实现了对模型不确定性的建模。 -
由于在得到最终边界框预测值 y ′ y' y′时采用的是连续积分,所以实际计算时,采用的是无限逼近的思想,即,将范围 [ y 0 , y n ] [y_0,y_n] [y0,yn]等间隔地分成 n n n份(论文中令间隔 Δ \Delta Δ=1),得到 n + 1 n+1 n+1个点 { y 0 , . . . , y i , y i + 1 , . . . , y n } \{y_0,...,y_i,y_{i_+1},...,y_n\} {y0,...,yi,yi+1,...,yn}后按下式近似求得连续积分结果:
y ′ = ∑ i = 0 n P ( y i ) y i y'=\sum_{i=0}^nP(y_i)y_i y′=i=0∑nP(yi)yi上式中, { y 0 , . . . , y i , y i + 1 , . . . , y n } \{y_0,...,y_i,y_{i_+1},...,y_n\} {y0,...,yi,yi+1,...,yn}是离散型随机变量 x x x的取值范围。为保证上式是离散型随机变量的数学期望,须保证
∑ i = 0 n P ( y i ) = 1 \sum_{i=0}^nP(y_i)=1 i=0∑nP(yi)=1所以,在得到网络的在某个值 y i y_i yi的"概率"后,需要将这 n + 1 n+1 n+1个点对应的输出通过softmax函数才得到概率 P ( y i ) P(y_i) P(yi)(简记为 S i S_i Si)。 -
上述做法实际上是,通过将可能的回归范围均匀分成 n n n个bin,然后对每个bin进行分类(得出概率),最终计算期望以实现边界框预测,即,把回归问题转换成分类问题来求解。CVPR 2020的一篇文章:Offset Bin Classification Network就是这一类方法。对此,回归分支(此时最好称其为边界框定位分支)输出的特征大小为 W × H × 4 ( n + 1 ) W\times H\times 4(n+1) W×H×4(n+1)。论文中,对于ATSS,取 n = 16 n=16 n=16;对于FCOS,取 n = 8 n=8 n=8。
-
在构建训练标签时,首先粗略划分了一些离散的取值 { y 0 , . . . , y i , y i + 1 , . . . , y n } \{y_0,...,y_i,y_{i_+1},...,y_n\} {y0,...,yi,yi+1,...,yn},然后分别根据正样本到其对应GT框4条边的距离判断出与真实距离 y y y最近的两个点(一左一右) y i y_i yi和 y i + 1 y_{i+1} yi+1,并采用Distribution Focal Loss (DFL)计算分类损失
D F L ( S i , S i + 1 ) = − ( y i + 1 − y ) l o g ( S i ) − ( y − y i ) l o g ( S i + 1 ) DFL(S_i,S_{i+1})=-(y_{i+1}-y)log(S_i)-(y-y_i)log(S_{i+1}) DFL(Si,Si+1)=−(yi+1−y)log(Si)−(y−yi)log(Si+1)DFL也是Focal loss的推广,目的是让模型更加关注离 y y y更近的点的预测。 -
为什么只求出与 y y y最近的两个点的损失,而不是所有点?令所有点都参与计算损失,会大大增加负样本数量。并且有很多的分布的均值是一样的(对应同一个target),这样网络的学习效率变低,所以只取与真实距离 y y y最近的两个点,这样做还可以简化输出值标签,即,直接令概率尽可能接近1。
2.3 Generalized Focal Loss (GFL)
- FL、QFL和DFL具有统一的形式,称其为Generalized Focal Loss (GFL)
- 假设模型具有二值标签
y
l
y_l
yl,
y
r
y_r
yr(
y
l
<
y
r
y_l<y_r
yl<yr),网络对这两个标签的预测值为
p
y
l
p_{y_l}
pyl,
p
y
r
p_{y_r}
pyr(
p
y
l
≥
0
p_{y_l}\ge0
pyl≥0,
p
y
r
≥
0
p_{y_r}\ge0
pyr≥0,
p
y
l
+
p
y
r
=
1
p_{y_l}+p_{y_r}=1
pyl+pyr=1),最终的预测值是
p
=
y
l
p
y
l
+
y
r
p
y
r
p=y_lp_{y_l}+y_rp_{y_r}
p=ylpyl+yrpyr,其对应的真实标签为
y
y
y,(
y
l
≤
y
,
p
≤
y
r
y_l\le y,\ p\le y_r
yl≤y, p≤yr),则Generalized Focal Loss为:
G F L ( p y l , p y r ) = − ∣ y − ( y l p y l + y r p y r ) ∣ β [ ( y r − y ) l o g ( p y l ) + ( y − p y r ) l o g ( p y r ) ] GFL(p_{y_l},p_{y_r})=-|y-(y_lp_{y_l}+y_rp_{y_r})|^\beta[(y_r-y)log(p_{y_l})+(y-p_{y_r})log(p_{y_r})] GFL(pyl,pyr)=−∣y−(ylpyl+yrpyr)∣β[(yr−y)log(pyl)+(y−pyr)log(pyr)]
2.4 total loss
3. 实验