目标检测论文阅读:GHM(anchor based)

目标检测论文阅读:GHM(anchor based)

论文链接:https://arxiv.org/abs/1811.05181
代码链接:https://github.com/libuyu/GHM_Detection
今天介绍一篇AAAI 2019的文章,Gradient Harmonized Single-stage Detector。文章的motivation和focal loss有一点相似,都是致力于不平衡问题。

1. Background

首先,关于目标检测的类别不平衡问题就不再赘述了。有疑问可以去看focal loss了解。这里有一个问题,为什么focal loss调整权重就可以改善不平衡?作者认为这一问题本质上是各个样本产生的梯度不平衡问题,而改变了权重不同样本对总共梯度的贡献也就不同了。
作者这里萌生了一个想法,我们都知道传统图像处理中有直方图均衡化的概念,可以把图像各个高度不一的亮度分布拉成一条直线,那如果我统计一下梯度的分布,然后也拉成一条直线,是不是能更好地解决类别不平衡问题呢?而且这样有一个好处,那就是不用像focal loss一样设置两个超参数,对各个数据集自适应能力也比较强。

2. Method

GHM-C

直方图均衡化统计的是图像灰度,那如果梯度也要做一个分布图统计的是什么?作者这里根据求导公式给出了定义:
目标检测论文阅读:GHM(anchor based)_第1张图片
通过将梯度量化到0~1,可以得到类似这样的梯度分布图:
目标检测论文阅读:GHM(anchor based)_第2张图片
可以看到,0点附近的g非常小的easy样本其实是占大多数的。而在1附近的样本很多都属于outliers。我们这里直接说下作者最终简化的均衡化方法:

  1. 将0~1划分成M个区间
  2. 统计落在各个区间的g的数量
  3. 最后,计算分类损失的权重
    目标检测论文阅读:GHM(anchor based)_第3张图片
    其中,Rind(g)是指落g落在的区间内,一共有多少样本落在这个区间;如果只有一个区间,那么GD(g)等于样本数,GHM-C损失函数等同于交叉熵损失函数。
    这里的样本指的是每个min-batch里面的样本数量,也就是说,每进来一个Min-batch,都会算一下所有样本落在各个区间的数量,计算权重,为了减少极端min-batch影响,作者这里用了滑动系数方法更新落在各个区间的样本数量:
    目标检测论文阅读:GHM(anchor based)_第4张图片

GHM-R

首先,为了方便表示和统计回归问题的梯度,作者重新定义了回归问题的损失函数:
在这里插入图片描述
在这里插入图片描述
显然,ASL1和SL1都是类似的(outliers点梯度约为1,接近零点附近梯度比较小),而且ASL1导数连续,并且在0~1范围内,很容易定义g并得到分布:
在这里插入图片描述
目标检测论文阅读:GHM(anchor based)_第5张图片
注意到由于回归损失只统计正样本,和分类损失分布差异还是挺大的。统计g的分布,得到新的GHM函数,剩下的就和GHM-C一样了:
目标检测论文阅读:GHM(anchor based)_第6张图片
最后可以看一下拉伸后的梯度分布:
目标检测论文阅读:GHM(anchor based)_第7张图片
目标检测论文阅读:GHM(anchor based)_第8张图片

3. 实验结果

作为单阶段检测算法,这篇文章在COCO上取得的结果也还是不错的,有兴趣的可以看看。
目标检测论文阅读:GHM(anchor based)_第9张图片

你可能感兴趣的:(目标检测(Anchor,Based))