Li B , Liu Y , Wang X . Gradient Harmonized Single-stage Detector[J]. 2018.
https://github.com/libuyu/GHM_Detection
本文认为影响单阶段检测器的训练的本质问题不是不同类别的样本数的差异,而是不同难度样本的分布不均衡。在训练过程中,每个样本产生一个梯度来更新模型的参数,不同样本对参数更新的贡献不同。在训练过程中,模型已经有很好的判别的简单样本的数量非常大,在模型更新中很有可能占据主导作用,那么这样的参数更新并不会改善模型的判断能力,反而使整个训练变得非常低效。为了解决这个问题,作者设计了梯度均衡机制(Gradient Harmonizing mechanism)。
Gradient Harmonizing Mechanism
我们定义每个样本的对 loss 求得的梯度的模值为
g
g
g,定义 gradient density 为
G
D
(
g
)
=
1
l
ϵ
(
g
)
∑
k
=
1
N
δ
ϵ
(
g
k
,
g
)
GD(g)=\frac{1}{l_{\epsilon}(g)}\sum_{k=1}^{N}\delta_{\epsilon}(g_k,g)
GD(g)=lϵ(g)1k=1∑Nδϵ(gk,g)
δ ϵ ( x , y ) = { 1 , i f y − ϵ 2 ≤ x ≤ y + ϵ 2 0 , e l s e \delta_{\epsilon}(x,y)=\left\{\begin{array}{l}1, if~y-\frac{\epsilon}{2} \leq x \leq y+\frac{\epsilon}{2}\\{0, else} \end{array} \right. δϵ(x,y)={1,if y−2ϵ≤x≤y+2ϵ0,else
l ϵ ( g ) = m i n ( g + ϵ 2 , 1 ) − m a x ( g − ϵ 2 , 0 ) l_{\epsilon}(g) = min(g+\frac{\epsilon}{2}, 1) − max(g−\frac{\epsilon}{2}, 0) lϵ(g)=min(g+2ϵ,1)−max(g−2ϵ,0)
定义 gradient density harmonizing parameter:
β
i
=
N
G
D
(
g
i
)
\beta_i=\frac{N}{GD(g_i)}
βi=GD(gi)N
根据归一化系数得到 GHM-C Loss:
L
o
s
s
G
H
M
−
C
=
1
N
∑
i
=
0
N
β
i
∗
l
o
s
s
i
=
∑
i
=
0
N
l
o
s
s
i
G
D
(
g
i
)
Loss_{GHM-C}=\frac{1}{N}\sum_{i=0}^{N}\beta_i*loss_i\\=\sum_{i=0}^{N}\frac{loss_i}{GD(g_i)}
LossGHM−C=N1i=0∑Nβi∗lossi=i=0∑NGD(gi)lossi
我的理解是模型很容易就被训练到容易识别简单样本的情形,利用 GHM-C Loss 将简单样本和 outlier 的梯度贡献减少,提高训练效率,减小 outlier 的影响。
AP 确实有所上升