AAAI 2019
Gradient Harmonized Single-stage Detector
本篇论文用于解决检测中正负样本不均衡的问题,其实这里可以拓展到很多类似的问题中。论文提出了 gradient harmonizing mechanism(GHM) 的思想,这种思想既可以用于分类,也可以用于检测框的回归。
之前的Focal loss使得梯度集中于分类概率小的难样本,所以梯度分布就有两个峰值,一个是大量的简单样本累加部分,一个是难样本。
但是有一些难样本可能是异常样本,比如长得像A的B,首先这一部分的梯度会很大,引起模型的注意力,其次,即使模型学到了这个样本也可能会造成干扰。
所以我们干脆以梯度密度来对loss做reweight,对于简单样本,梯度密度大,但是模型已经对这些学习的比较好,对于困难样本,让模型适当忽略掉。
GHM
梯度密度基于一个Batch,以CE loss为例
对于第K个样本,样本梯度为
g
k
g_k
gk,GD 表示梯度落在区域内
[
g
−
ϵ
/
2
,
g
+
ϵ
/
2
)
[g-\epsilon/2,g+\epsilon/2)
[g−ϵ/2,g+ϵ/2)的样本数量
故样本密度的参数为
密度大的样本权重降低,密度小的样本权重增高,以上是GHM的思想。
GHM-C
用于分类:
GHM-C loss对模型梯度的修正效果如下图二所示,横轴表示原始的梯度loss,纵轴表示修正后的。
复杂度分析:计算所有算例梯度密度值的朴素算法时间复杂度为O(N2),由式4和式8可以很容易地得到。即使并行计算,每个计算单元的计算量仍然是N,最好的算法是先用复杂度为O(N log N)的梯度范数对样本进行排序,然后用队列扫描样本,用O(N)得到样本的密度。这种基于排序的方法不能从并行计算中获得太多的好处。为了降低时间复杂度,提出了两个新的方法,性能损失也比较微小。
Unit Region Approximation(RU)
X轴的梯度分为M个区域,每个区域长度即为
ϵ
\epsilon
ϵ ,第j个区域范围即为
r
j
r_j
rj ,用
R
j
R_j
Rj 表示落在第j个区域内的样本数量。定义
i
n
d
(
g
)
ind(g)
ind(g)表示梯度为g的样本所落区域的序号,那么即可得出新的参数
β
i
\beta_i
βi和新的GHM-C loss函数。新的计算方法的时间复杂度为
O
(
M
N
)
O(MN)
O(MN) 。
M
=
1
/
ϵ
M=1/ \epsilon
M=1/ϵ
EMA
由于样本的梯度密度是训练时根据batch计算出来的,通常情况下batch较小,直接计算出来的梯度密度可能不稳定,所以采用滑动平均的方式处理梯度计算。
GHM_R
对于检测框回归,loss为Smooth L1,但是对于部分值来说,梯度恒为1,这样就不满足GHM的思想,为了让损失函数适用,提出了新的损失函数。
d
=
t
i
−
t
i
∗
d=t_i-t_i^*
d=ti−ti∗
A
S
L
i
ASL_i
ASLi与
S
L
1
SL_1
SL1的性质很相似,当d较大时都近似为L1 loss,d较小是都近似为L2 loss,而且
A
S
L
1
ASL_1
ASL1的范围在[0,1),适合采用RU方法,在实际使用中,采用μ=0.02。
对于分类任务而言,简单样本是不重要的,但是对于bbox回归任务而言,并不这样,他的衡量标准是AP,任何简单样本都可以再提升AP值,所以为了提升回归AP,可以把AP的阈值设高一点。
Experiment
M对于AP的影响
作者解释了为啥M越大,反而效果不好,因为Batch比较小,分的M越多时,异常值对于小区间的影响越大。
不同trick的影响
速度