1. 解决了什么问题?
单阶段目标检测器通过密集预测的方式进行分类、定位。分类一般使用 Focal Loss,而边框回归则通过 Dirac delta 分布来学习。近年来的改进方向是引入一个单独的分支,预测定位的质量,然后用该质量分数去辅助分类得分,提升检测的表现。但质量预测存在两个问题:
- 训练和推理时,定位质量和类别预测是不一致的。它们各自单独训练,但推理的时候是耦合在一起用的。此外,学习定位质量的监督信号只分配给了正样本,负样本就不受限制了,有可能得到更高的质量得分。如下图所示,负样本得到的质量得分是随机的,NMS 时有可能排到质量得分低的正样本前面。
- 边框表征不够灵活:当复杂场景中出现模糊和不确定的情况时,定位用的 Dirac delta 分布不够灵活。如上图,因为遮挡、阴影、模糊等,目标边界不够清晰,ground-truth 标签有时不够可信,Dirac delta 分布就不够灵活了。本文方法所学到的表征能反映出目标的形状,扁平的分布表示边界模糊,而尖锐的分布则表示边界清晰。
下图(a) 是一些背景区域,但它们的定位质量得分很高。图(b) 的蓝点说明预测的类别得分和质量得分之间的关系较弱,红圈包含了大量的负样本,但它们的预测定位质量得分都很高。
下图 (a) 展示了现有方法,有一个单独的质量预测分支(IoU 或 center-ness 得分),图 (b) 是本文方法,将类别得分和定位质量得分融合到一起使用。
2. 提出了什么方法?
对于定位质量表征,将质量预测融入类别预测的向量,得到定位质量和分类的联合表征,使用统一的向量表示边框定位的任意分布。在类别向量中,ground-truth 索引位置的值是其相应的定位质量得分(通常是预测框和 gt 框的 IoU)。这样,改进后的表征在训练和推理时就一致了,而且能准确描述真实数据的分布情况,但 IoU ( 0 ∼ 1 ) (0\sim 1) (0∼1)标签是连续的,Focal Loss 只能解决 { 0 , 1 } \lbrace0,1\rbrace {0,1}二值标签,于是提出了 Generalized Focal Loss,从离散形式扩展到连续形式。GFL 可以具化为 Quality Focal Loss 和 Distribution Focal Loss。QFL 关注于一组稀疏的难例样本,输出它们相应的类别在 0 ∼ 1 0\sim 1 0∼1之间的质量预测得分。DFL 让网络快速聚焦于学习目标框连续坐标的概率。
对于边框表征,在连续空间内学习离散的概率分布,表示边框坐标的任意分布。
2.1 Focal Loss
原来的 Focal Loss 用于解决单阶段目标检测,前景和背景类别不均衡的问题。形式如下:
F
L
(
p
)
=
−
(
1
−
p
t
)
γ
log
(
p
t
)
,
p
t
=
{
p
,
y
=
1
1
−
p
,
y
=
0
\mathbf{FL}(p)=-(1-p_t)^{\gamma}\log(p_t),\quad p_t=\left\{ \begin{array}{ll} \quad p \quad,y=1 \\ 1-p\quad, y=0 \end{array} \right.
FL(p)=−(1−pt)γlog(pt),pt={p,y=11−p,y=0
y
∈
{
0
,
1
}
y\in \lbrace0,1\rbrace
y∈{0,1}是 gt 框的类别,
p
∈
[
0
,
1
]
p\in \left[0,1\right]
p∈[0,1]是对于类别标签
y
=
1
y=1
y=1预测的置信度。
γ
\gamma
γ是控制系数。FL 包含了一个标准的交叉熵
−
log
(
p
t
)
-\log(p_t)
−log(pt),和一个动态缩放乘数
(
1
−
p
t
)
γ
(1-p_t)^{\gamma}
(1−pt)γ,自动降低容易样本的损失贡献,快速聚焦于困难样本。
2.2 QFL
将定位质量得分和类别得分联合起来表示,降低 one-hot 类别标签的约束,对应类别上的目标值是一个浮点数 y ∈ [ 0 , 1 ] y\in \left[0,1\right] y∈[0,1]。 y = 0 y=0 y=0表示负样本,定位质量得分是 0 0 0。 0 < y ≤ 1 0<y\leq 1 0<y≤1表示正样本, y y y是 IoU 得分。虽然有了联合表征,但是类别不均衡的问题依然存在,于是作者借鉴 Focal Loss,扩展 Focal Loss 的两个部分:
- 交叉熵部分 − log ( p t ) -\log(p_t) −log(pt)扩展为完全形式 − [ ( 1 − y ) log ( 1 − σ ) + y log ( σ ) ] -\left[(1-y)\log(1-\sigma) + y\log(\sigma)\right] −[(1−y)log(1−σ)+ylog(σ)];
- 缩放乘数 ( 1 − p t ) γ (1-p_t)^{\gamma} (1−pt)γ归纳为预测得分 σ \sigma σ和浮点数标签 y y y的绝对值距离 ∣ y − σ ∣ β , ( β ≥ 0 ) |y-\sigma|^{\beta},(\beta\geq 0) ∣y−σ∣β,(β≥0)。
所以,QFL 的表达式为:
Q
F
L
(
σ
)
=
−
∣
y
−
σ
∣
β
[
(
1
−
y
)
log
(
1
−
σ
)
+
y
log
(
σ
)
]
\mathbf{QFL}(\sigma)=-|y-\sigma|^{\beta}\left[(1-y)\log(1-\sigma) + y\log(\sigma)\right]
QFL(σ)=−∣y−σ∣β[(1−y)log(1−σ)+ylog(σ)]
当
σ
=
y
\sigma=y
σ=y时,QFL 全局最小。
∣
y
−
σ
∣
β
|y-\sigma|^{\beta}
∣y−σ∣β是调节系数,当某样本的质量预测
σ
\sigma
σ不够准确、偏离标签
y
y
y,调节系数就会增大,从而更关注于困难样本。当质量预测得准确时
σ
→
y
\sigma\rightarrow y
σ→y,该系数趋近于
0
0
0,损失就会降低。
β
\beta
β控制着权重的降低(QFL 实验时
β
=
2
\beta=2
β=2)。
上图比较了传统方法和本文方法。GFL 包括了 QFL 和 DFL。QFL 学习类别得分和定位质量得分的联合表征,DFL 将边框的位置建模为 general distribution,驱使网络快速聚焦于目标位置相邻点的概率。
2.3 DFL
本文将坐标点距离目标框四条边的相对偏移量作为回归目标。传统的边框回归方法是将回归标签
y
y
y建模为 Dirac Delta 分布
δ
(
x
−
y
)
\delta(x-y)
δ(x−y),满足
∫
−
∞
+
∞
δ
(
x
−
y
)
d
x
=
1
\int_{-\infty}^{+\infty}\delta(x-y)\mathop{dx}=1
∫−∞+∞δ(x−y)dx=1,通常用全连接层实现。Dirac Delta 分布可以认为在一个点的概率密度为无穷大,而其它点的概率密度都为 0。其还原
y
y
y的积分形式就是:
y
=
∫
−
∞
+
∞
δ
(
x
−
y
)
x
d
x
y=\int_{-\infty}^{+\infty}\delta(x-y)x \mathop{dx}
y=∫−∞+∞δ(x−y)xdx
然而在真实场景,目标边界并非是十分清楚的,因此如下图(b) 学习一个宽范围的分布更加合理。给定标签
y
y
y
(
y
0
≤
y
≤
y
n
,
n
∈
N
+
)
(y_0\leq y\leq y_n,n\in \mathbb{N}^+)
(y0≤y≤yn,n∈N+),模型预测的值
y
^
\hat{y}
y^就是(
y
0
≤
y
^
≤
y
n
y_0 \leq\hat{y} \leq y_n
y0≤y^≤yn):
y
^
=
∫
−
∞
+
∞
P
(
x
)
x
d
x
=
∫
y
0
y
n
P
(
x
)
x
d
x
\hat{y}=\int_{-\infty}^{+\infty} P(x)x \mathop{dx}=\int_{y_0}^{y_n} P(x)x \mathop{dx}
y^=∫−∞+∞P(x)xdx=∫y0ynP(x)xdx
但 CNN 用的是离散表征,作者将值域
[
y
0
,
y
n
]
\left[y_0,y_n\right]
[y0,yn]离散为集合
{
y
0
,
y
1
,
.
.
.
,
y
i
,
y
i
+
1
,
.
.
.
,
y
n
−
1
,
y
n
}
\lbrace y_0,y_1,...,y_i,y_{i+1},...,y_{n-1},y_n\rbrace
{y0,y1,...,yi,yi+1,...,yn−1,yn},间隔是
Δ
\Delta
Δ,即从
y
y
y可能存在的区间
[
y
0
,
y
n
]
\left[y_0, y_n\right]
[y0,yn]中均匀采样,这样就从一个回归问题变成了多分类问题。给定离散分布性质
∑
i
=
1
n
P
(
y
i
)
=
1
\sum_{i=1}^n P(y_i)=1
∑i=1nP(yi)=1,预测的回归值
y
^
\hat{y}
y^表示为:
y
^
=
∑
i
=
0
n
P
(
y
i
)
⋅
y
i
\hat{y}=\sum_{i=0}^n P(y_i)\cdot y_i
y^=i=0∑nP(yi)⋅yi
作者使用 Softmax 函数可以很容易地实现离散形式的任意分布。
P
(
x
)
P(x)
P(x)用 softmax
S
(
⋅
)
\mathcal{S}(\cdot)
S(⋅)实现,
P
(
y
i
)
P(y_i)
P(yi)记做
S
i
\mathcal{S}_i
Si。
y
^
\hat{y}
y^可以用 SmoothL1、IoU 损失和 GIoU 损失训练。但是如下图(b)所示,
P
(
x
)
P(x)
P(x)的值可能有无数种组合来让最终的积分结果为
y
y
y,这会降低学习的效率。与 (1) (2) 相比,(3) 更加紧凑、更加确信边框定位的准确性。如果存在最适合的位置,它一定不会离目标标签很远。因此作者提出了 DFL,通过增大
y
i
y_i
yi和
y
i
+
1
y_{i+1}
yi+1的概率(
y
i
y_i
yi和
y
i
+
1
y_{i+1}
yi+1是最接近
y
y
y的两个点,
y
i
≤
y
≤
y
i
+
1
y_i\leq y\leq y_{i+1}
yi≤y≤yi+1),让网络快速关注到标签
y
y
y附近的点。边框的学习只需关注正样本,不用担心正负类别
不均衡问题,于是 DFL 形式为:
D
F
L
(
S
i
,
S
i
+
1
)
=
−
[
(
y
i
+
1
−
y
)
log
(
S
i
)
+
(
y
−
y
i
)
log
(
S
i
+
1
)
]
\mathbf{DFL}(\mathcal{S}_i,\mathcal{S}_{i+1})=-\left[(y_{i+1}-y)\log(\mathcal{S}_i) + (y-y_i)\log(\mathcal{S}_{i+1})\right]
DFL(Si,Si+1)=−[(yi+1−y)log(Si)+(y−yi)log(Si+1)]
DFL 通过学习增大
y
y
y左右两个点的概率(
S
i
\mathcal{S}_i
Si和
S
i
+
1
\mathcal{S}_{i+1}
Si+1),使网络分布聚焦到标签点的附近。当 DFL 达到全局最小点(即
S
i
=
y
i
+
1
−
y
y
i
+
1
−
y
i
\mathcal{S}_i=\frac{y_{i+1}-y}{y_{i+1}-y_i}
Si=yi+1−yiyi+1−y,
S
i
+
1
=
y
−
y
i
y
i
+
1
−
y
i
\mathcal{S}_{i+1}=\frac{y-y_{i}}{y_{i+1}-y_i}
Si+1=yi+1−yiy−yi),可以保证预测值
y
^
\hat{y}
y^无限地接近对应的标签
y
y
y,即
y
^
=
∑
j
=
0
n
P
(
y
j
)
y
j
=
S
i
y
i
+
S
i
+
1
y
i
+
1
=
y
i
+
1
−
y
y
i
+
1
−
y
i
y
i
+
y
−
y
i
y
i
+
1
−
y
i
y
i
+
1
=
y
\hat{y}=\sum_{j=0}^n P(y_j)y_j = \mathcal{S}_iy_i + \mathcal{S}_{i+1}y_{i+1}=\frac{y_{i+1}-y}{y_{i+1}-y_i}y_i+\frac{y-y_{i}}{y_{i+1}-y_i}y_{i+1}=y
y^=∑j=0nP(yj)yj=Siyi+Si+1yi+1=yi+1−yiyi+1−yyi+yi+1−yiy−yiyi+1=y。
2.4 GFL
QFL 和 DFL 可以整合为一个通用形式。假设一个模型预测两个变量
y
l
,
y
r
(
y
l
<
y
r
)
y_l,y_r(y_l<y_r)
yl,yr(yl<yr)的概率分别是
p
y
l
,
p
y
r
,
(
p
y
l
≥
0
,
p
y
r
≥
0
,
p
y
l
+
p
y
r
=
1
)
p_{y_l},p_{y_r}, (p_{y_l}\geq 0, p_{y_r}\geq 0, p_{y_l}+p_{y_r}=1)
pyl,pyr,(pyl≥0,pyr≥0,pyl+pyr=1)。它们线性组合的预测是
y
^
=
y
l
p
y
l
+
y
r
p
y
r
,
(
y
l
≤
y
^
≤
y
r
)
\hat{y}=y_l p_{y_l}+y_r p_{y_r}, (y_l\leq \hat{y}\leq y_r)
y^=ylpyl+yrpyr,(yl≤y^≤yr)。预测
y
^
\hat{y}
y^的对应的连续标签
y
y
y需满足
y
l
≤
y
≤
y
r
y_l \leq y \leq y_r
yl≤y≤yr。将绝对距离
∣
y
−
y
^
∣
β
(
β
≥
0
)
|y-\hat{y}|^{\beta}(\beta\geq 0)
∣y−y^∣β(β≥0)作为调节系数,GFL 可以写作:
G
F
L
(
p
y
l
,
p
y
r
)
=
−
∣
y
−
(
y
l
p
y
l
+
y
r
p
y
r
)
∣
β
(
(
y
r
−
y
)
log
(
p
y
l
)
+
(
y
−
y
l
)
log
(
p
y
r
)
)
\mathbf{GFL}(p_{y_l},p_{y_r})=-|y-(y_l p_{y_l}+y_r p_{y_r})|^{\beta} ((y_r-y)\log(p_{y_l}) +(y-y_l)\log(p_{y_r}))
GFL(pyl,pyr)=−∣y−(ylpyl+yrpyr)∣β((yr−y)log(pyl)+(y−yl)log(pyr))
2.5 GFL 性质
当 p y l ∗ = y r − y y r − y l p_{y_l}^*=\frac{y_r-y}{y_r-y_l} pyl∗=yr−ylyr−y, p y r ∗ = y − y l y r − y l p_{y_r}^*=\frac{y-y_l}{y_r-y_l} pyr∗=yr−yly−yl时, G F L ( p y l , p y r ) \mathbf{GFL}(p_{y_l},p_{y_r}) GFL(pyl,pyr)达到全局最小,也就是说 y ^ \hat{y} y^完美地匹配上了连续标签 y y y,即 y ^ = y l p y l ∗ + y r p y r ∗ = y \hat{y}=y_lp_{y_l}^*+y_rp_{y_r}^*=y y^=ylpyl∗+yrpyr∗=y。QFL、DFL 和原版 FL 都是 GFL 的特殊形式。GFL 可以用到任意的单阶段目标检测器上。推理时,直接将分类得分(质量预测的联合表征)作为 NMS 分数,而无需乘上质量预测得分。预测边框每个位置的回归分支的最后一层现在有 n + 1 n+1 n+1个输出,而不只是 1 1 1个输出。
2.6 GFL 训练密集检测器
L = 1 N p o s ∑ z L Q + 1 N p o s ∑ z I { c z ∗ > 0 } ( λ 0 L B + λ 1 L D ) \mathcal{L}=\frac{1}{N_{pos}}\sum_z \mathcal{L_Q}+\frac{1}{N_{pos}}\sum_z \mathbb{I}_{\lbrace c_z^*>0\rbrace}(\lambda_0\mathcal{L_B}+\lambda_1 \mathcal{L_D}) L=Npos1z∑LQ+Npos1z∑I{cz∗>0}(λ0LB+λ1LD)
L Q \mathcal{L_Q} LQ是 QFL, L D \mathcal{L_D} LD是 DFL。 L B \mathcal{L_B} LB是 GIoU 损失。 N p o s N_{pos} Npos是正样本个数。 λ 0 = 2 \lambda_0=2 λ0=2和 λ 1 = 1 4 \lambda_1=\frac{1}{4} λ1=41平衡 QFL 和 DFL。对特征金字塔上所有的位置 z z z计算求和。 I { c z ∗ > 0 } \mathbb{I}_{\lbrace c_z^*>0\rbrace} I{cz∗>0}是指标函数。