目标检测 | 比 Focal Loss 更强的:Gradient Harmonized Mechanism

作者:Tenacious https://zhuanlan.zhihu.com/p/60349450 已授权转载

arXiv:https://arxiv.org/abs/1811.05181

检测框架主要分为 one-stage 和 two-stage 两大派别,他们都备受正负样本数目不平衡问题影响。思考下,对于一张图像,所含的目标是有限的(上限为20左右吧...),这些目标所“产生”的正样本 anchors 亦是远小于负样本 anchors。在coco_val_2017 上的统计数据大约是:1006:1(感兴趣的读者可以自行统计check下~)

对于以上的不平衡,two-stage 的措施是:1) 在 first-stage 进行了batch sampling(如 RPN 结构中普遍使用的 pos: neg = 1: 1)。即每张图像只随机取 256 个 anchors 训练,且控制 pos anchor :neg anchor 比例为1。(去看代码可以发现并没有做到严格1:1,它的采样机制是 pos 不够,neg 来凑...) 2)在 second-stage,控制 pos :neg = 1:3

one-stage 算法的话,拿 SSD 来说,使用 OHEM 机制,选择最难的一部分负样本训练,让网络不做一些无用功(训那些 easy neg samples)。

直到 ICCV2017 凯明大神提出 Focal Loss,取代以上的 sampling 机制。

fg1 Focal Loss

添加(1 - pt)r 项,实现对 well-classified samples 的 loss 压制,αt 用于平衡 pos、neg。这个简单的 loss 变形非常的 work,使得我们可以不进行任何 sampling 操作,直接训所有的 anchors 也能得到很好的 ap。但是,但是,α、r 这俩超参还是蛮难调的~

所以更进一步的,AAAI2019 提出了Gradient Harmonized Mechanism(GHM)策略,提出了 Gradient Density 这一概念。来看它是怎么一步步推理出来的:

首先看 CE 的求导:

fg 2 cross entropy

所以定义梯度模长概念:g = |p - p*| . 很自然的可以得到:g 越大,样本越难。

然后是 Gradient Density,

fg3 gradient density

这个概念蛮抽象的其实,直观来说是由一定梯度模长和除以这一范围内的样本数量。再看下图:

fg4

可以看到,对于不那么难的 g <= 0.2部分和很难的 g>= 0.8部分,样本数目都是比较多的... 前者可以认为是 Focal Loss 中提到的 well-classified samples,后者则是本文命明的 outlier.

有了 Gradient Density,就可以得出 loss 的 scale 系数了:

fg 5 GHM

更细节的数学推理啥的我就不写啦(水平有限鹅...?‍♂️),感兴趣的读者移步原文好好推敲哈~~~最后附上 GHM 的表现:

fg 6

原文发布于微信公众号 - CVer(CVerNews)

原文发表时间:2019-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券