论文阅读:Gradient Harmonized Single-stage Detector

本文深入探讨了一篇针对one-stage目标检测器不平衡问题的论文,提出Gradient Harmonizing Mechanism。该方法结合Focal Loss的思想,不仅减少简单样本的影响,还对过于困难的样本(大梯度范数)进行抑制。通过gradient density概念,实现不同难度样本对模型训练影响的均衡。实验表明,这种方法在提高检测精度的同时,减少了训练时间,优于Focal Loss。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gradient Harmonizing Mechanism (AAAI 2019)

文章
  Focal Loss之后又一篇针对one-stage detector中的imbalance问题发起挑战的论文。文章中方法与Focal Loss相同的地方在于会减小简单样本对于模型的梯度影响,但也有两个地方与Focal Loss不一样:1.针对过于困难的样本(即本文所说的gradient norm过大),该方法认为其实是outlier,也要减小梯度对模型的影响;2.不局限与对cross entropy的改进,还扩展到了regression部分的loss。



  从上图可以看到,当模型converged时,很多样本的梯度是接近0(简单)的,也有挺多的样本梯度还比较大(困难),由于CE不对简单样本的梯度做抑制,所以由于简单样本的数量巨大,导致最后简单样本的grad norm之和会很大,主导了模型的训练,但这对模型其实并没有太大意义。Focal Loss则主动减小了简单样本的梯度,从而使模型更注重其它样本的训练,从而提升了性能。而本文的方法就是,希望每种难度的样本影响都能比较均衡,具体方法如下。
  对于分类交叉熵损失,文章首先定义了loss关于输出x的gradient norm:



文章认为g代表了某个样本对于模型训练的影响,g越大,该样本对模型的训练影响也就越大。接下来就是本文的核心概念,gradient density:






其中N是本轮样本总数目,其实GD就代表了某个梯度g的一个邻域内的样本数目,那么接下来其实大家都能想到怎么做了,如果某块儿梯度的样本比较多,那么就应该减小这一部分梯度的大小,以减小它们共同带来的影响,所以得到一个harmonizing parameter



于是原本的CE损失就变成了:



但有一个问题是如果对每个样本都要单独求一个grad density的话,计算量是在太大了,因为对于one-stage detector来说,每轮的训练样本是非常多的(一个anchor就对应一个训练样本),因此文章采用了一种近似的方法:先将grad norm的取值区间(0,1)划分成几等份,然后grad norm位于相同range的样本梯度使用相同参数进行条件,而这个参数又由该range内的grad density决定,因此现在只需要进行一次排序和几个除法的时间复杂度就ok了,具体如下:






  然后一个要注意的是,在统计每个range内的样本数目的时候,文章使用了exponential moving average方法来使得gradient density更加stable:






  接着是将这个动态调节样本梯度的方法引入了regression,首先文章认为一般采用的smooth L1损失对于loss大一些的样本无法进行难度的区分,因为他们的grad norm都是1了,因此作者新设计了一个authentic smooth L1损失



和SL1相比如下图



其实还是比较像,但是在error较大时,样本之间仍然有区分性,然后继续像分类一样进行调节系数的计算就行了。

  最后是一些实验结果



  上表说明了本文的方法在精度上带来了提升,同时使用了近似方法之后可以不增加太多训练的时间。然后是下表和Focal Loss的比较,也是有一定提升的



其它的一些实验结果,有兴趣的朋友可以参考原论文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值