正负样本不均衡问题一直是One-stage目标检测中被大家所诟病的地方,He Keming等人提出了Focal Loss来解决这个问题。而AAAI2019上的一篇论文《Gradient Harmonized Single-stage Detector》则尝试从梯度分部的角度,来解释样本分步不均衡给目one-stage目标检测带来的瓶颈本质,并尝试提出了一种新的损失函数:GHM(Gradient Harmonizing Mechanism)来解决这个问题。

Gradient Norm

Cross Entropy Loss是分类中常用的一种损失,其表达式:

其中为类别的真实标签,如果求导,可以得到下列式子:

可以定义g为:

这里的g被定义为梯度模长gradient norm。直观表示上看,g表明了样本的真实值与当前预测值的距离。观测下图,下图是一个one-stage模型收敛后画出的梯度模长分布图。横坐标为gradient norm,纵坐标可以理解为数据分部的比例(做了log scale)。画红框的部分为easy examples,对应着横坐标有着非常低的gradient norm,可以看到easy examples的梯度模长非常小,表明了这些样本的真实值和预测值非常接近了,但是其数量所占比例非常大,其实这部分easy example对于模型的提升效果非常小。

同时注意画绿框的部分,这部分为样本中的very hard example,文中认为,这部分样本同样对模型的提升效果没有帮助,这部分样本同样也有着非常大的比例。其实我们需要关注的应该是中间部分的样本(既不是easy example也不是very hard example),这些样本对模型的提升更有帮助。

文中有提到过,GHM之所以效果更好,不仅仅因为对easy example做了loss上的抑制,同时对very hard example也起到了一定的忽略作用。文中把这些very hard examples定义为离群点outliers,这些outliers在模型的不断拟合过程中一直为very hard examples,如果模型强行的去拟合这些outliers,反而会起到适得其反的效果,这也就是为什么也要抑制这些very hard examples的原因之一。

Gradient Density

为了解决gradient norm分部不均匀的问题,文章定义了梯度密度gradient density:

其中:

表明了样本1~N中,梯度模长分布在范围内的样本个数。而代表了区间的长度。因此梯度密度gradient density的直观理解就是:单位梯度模长g长度内所分部的样本个数,及gradient norm的密度。

通过定义参数:

如果定性分析一下:对于梯度密度大的样本,即的值很大,则就会相应的变小;反之对于的值很小,则就会相应的变大,而之前的分部图中可以看到,easy example和very hard example的分部都非常的密集,即GD的值很大,因此通过参数刚好能够达到抑制这两部分,同时提高有用样本权重的目的。

分子的N是为了使得当划分的区间长度很大为1的时候

GHM-C Loss

通过将上面定义的引入cross entropy loss中,可以得到GHM-C loss的定义如下:

像上面说过的,GHM-C loss对gradient density较大的样本抑制,看下图为Cross Entropy,Focal Loss和GHM-C的对比:

GHM-C和Focal Loss都对easy example做了很好的抑制,而GHM-C和Focal Loss在对very hard examples上有更好的抑制效果。

同时因为原始定义的gadient density的计算复杂度较高,作者给出了简化版本:

其中

GHM-R Loss

GHM-C loss针对于分类问题,那么对于目标框的回归,作者定义了GHM-R Loss,先考虑回归中常用的smooth L1 loss:

其中,为输出结果和实际结果的差值。如果smooth L1对d求导,得到:

可以看到,当时,可以定量的表示数据结果和真实值之间的距离;而当的时候,损失的梯度均为1,这样我们就无法根据梯度来估计一些example输出贡献度。基于此作者对smooth L1做了修正,得到ASL1:

和smooth L1具有相似的性质,并且其梯度:

是可设定超参数,论文中设定。把定义为gradient norm,则的gradient norm和样本分部的关系如下图:

通过上图可以发现有相当数量的outliers,以及outliers所对用的gradient norm值很大,因此与GHM-C相似的方式,定义GHM-R:

达到对outlier的loss达到抑制的目的。

有个值得注意的地方是在GHM-R中并没有对easy example做抑制,原文中是这样解释的:

作者认为,在目标框的回归阶段,easy examples同样能够对提升框回归的准确性带来帮助。

实验结果

因为GHM-C和GHM-R是定义的损失函数,因此可以非常方便的安插到很多目标检测方法中,作者以focal loss(我猜测应该是以RetinaNet作为baseline),对交叉熵,focal loss和GHM-C做了对比,发现GHM-C在focal loss 的基础上在AP上提升了0.2个百分点:

如果用GHM-R代替two-stage detector中的smooth L1,AP上又会有提升:

如果用上GHM-C和GHM-R,准确率的提升很明显,大概有2个百分点:

解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized相关推荐

  1. 解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized,focal loss

    先转一波,后面看 https://blog.csdn.net/watermelon1123/article/details/89362220

  2. yolo 负样本_目标检测正负样本区分策略和平衡策略总结(二)

    0 简介 本文抛弃网络具体结构,仅仅从正负样本区分和正负样本平衡策略进行分析,大体可以分为正负样本定义.正负样本采样和平衡loss设计三个方面,主要是网络预测输出和loss核心设计即仅仅涉及网络的he ...

  3. 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法

    训练目标检测模型的一个难点是样本不均衡,特别是正负样本比例严重失衡.目前解决这类问题主要是两种方案(见综述Imbalance Problems in Object Detection: A Revie ...

  4. 目标检测之样本不平衡问题

    样本不平衡问题感觉近期研究的论文相对较多,如:2019 AAAI GHM,2019 CVPR AP-loss, 还有2019 DR loss, 2019 IoU-balanced loss,two-s ...

  5. 正负样本不均衡的解决办法

    转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...

  6. 解决rotatedRectangleIntersection计算目标检测旋转框IOU不准确问题C++、opencv

    问题 语言 :C++ OpenCV版本:3.4.0 在目标检测中,后处理阶段会用到非极大值抑制来过滤目标框,而计算两个框的IOU(交并比)则是其关键的一环,先计算两个框相交的点,再求出这些点构成的多边 ...

  7. 顶刊TPAMI!目标检测中的不均衡问题综述!

    作者 | Joya  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/82371629 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...

  8. 寻找解决样本不均衡方法之Focal Loss与GHM

    寻找解决样本不均衡方法之Focal Loss与GHM 主要参考资料:5分钟理解Focal Loss与GHM--解决样本不平衡利器 - 知乎 (zhihu.com) Focal Loss的引入主要是为了 ...

  9. 【目标检测】YOLO系列Anchor标签分配、边框回归(坐标预测)方式、LOSS计算方式

    1.YOLOv1 标签分配:GT的中心落在哪个grid,那个grid对应的两个bbox中与GT的IOU最大的bbox为正样本,其余为负样本,(由于是回归模型,不是分类模型,其解决类别不平衡的方式为各项 ...

最新文章

  1. OpenCV中图像显示你不知道的编程技巧
  2. java哈夫曼编码与译码_哈夫曼编码与译码
  3. c语言编程取模运算ppt,c语言的取模运算
  4. 2021年春季学期-信号与系统-第三次作业参考答案-第十道题
  5. Android ListView异步加载图片乱序问题,原因分析及解决方案
  6. linux 制作box文件夹,用busybox制作自己简易的根文件系统
  7. php多表条件查询,php如何实现多表查询
  8. 编写delegate(明天补充)
  9. Python_多进程
  10. Springboot的工作机制:1 Springboot初体验
  11. 考CFA证书只通过一级有用吗?
  12. 外卖行业现状分析_2019年中国外卖行业市场现状与发展趋势分析
  13. 【bzoj1406】【AHOI2007】【密码箱】【数论】
  14. Win7打开方式还原,怎么还原打开方式?
  15. Python可视化-WordCloud生成云词图片
  16. Feign传递请求头信息
  17. 【ubuntu】使用ubuntu杀死指定端口
  18. js检查中英文数字的正则表达式,检查特殊字符
  19. mini2440裸机音乐播放器(非常久曾经的笔记)
  20. PHPNow升级PHP版本

热门文章

  1. 什么是双亲委派机制?
  2. spark sql 之 collect_set collect_list 后WrappedArray 取值
  3. Python程序设计第三章测验总结
  4. C语言学习1——第一、二、三章学习记录
  5. 博客导航——一站式搜索(所有博客的汇总帖)【微信开发】
  6. ubuntu下使用vscode开发golang程序,从控制台到简单web程序
  7. Web安全学习Week12
  8. selenium webdriver操作chrome options、 启用无痕模式、缓存烦恼
  9. 正则表达式常用语法解析
  10. setup factory打包工具的使用