解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized
正负样本不均衡问题一直是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相关推荐
- 解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized,focal loss
先转一波,后面看 https://blog.csdn.net/watermelon1123/article/details/89362220
- yolo 负样本_目标检测正负样本区分策略和平衡策略总结(二)
0 简介 本文抛弃网络具体结构,仅仅从正负样本区分和正负样本平衡策略进行分析,大体可以分为正负样本定义.正负样本采样和平衡loss设计三个方面,主要是网络预测输出和loss核心设计即仅仅涉及网络的he ...
- 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
训练目标检测模型的一个难点是样本不均衡,特别是正负样本比例严重失衡.目前解决这类问题主要是两种方案(见综述Imbalance Problems in Object Detection: A Revie ...
- 目标检测之样本不平衡问题
样本不平衡问题感觉近期研究的论文相对较多,如:2019 AAAI GHM,2019 CVPR AP-loss, 还有2019 DR loss, 2019 IoU-balanced loss,two-s ...
- 正负样本不均衡的解决办法
转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...
- 解决rotatedRectangleIntersection计算目标检测旋转框IOU不准确问题C++、opencv
问题 语言 :C++ OpenCV版本:3.4.0 在目标检测中,后处理阶段会用到非极大值抑制来过滤目标框,而计算两个框的IOU(交并比)则是其关键的一环,先计算两个框相交的点,再求出这些点构成的多边 ...
- 顶刊TPAMI!目标检测中的不均衡问题综述!
作者 | Joya 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/82371629 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...
- 寻找解决样本不均衡方法之Focal Loss与GHM
寻找解决样本不均衡方法之Focal Loss与GHM 主要参考资料:5分钟理解Focal Loss与GHM--解决样本不平衡利器 - 知乎 (zhihu.com) Focal Loss的引入主要是为了 ...
- 【目标检测】YOLO系列Anchor标签分配、边框回归(坐标预测)方式、LOSS计算方式
1.YOLOv1 标签分配:GT的中心落在哪个grid,那个grid对应的两个bbox中与GT的IOU最大的bbox为正样本,其余为负样本,(由于是回归模型,不是分类模型,其解决类别不平衡的方式为各项 ...
最新文章
- OpenCV中图像显示你不知道的编程技巧
- java哈夫曼编码与译码_哈夫曼编码与译码
- c语言编程取模运算ppt,c语言的取模运算
- 2021年春季学期-信号与系统-第三次作业参考答案-第十道题
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- linux 制作box文件夹,用busybox制作自己简易的根文件系统
- php多表条件查询,php如何实现多表查询
- 编写delegate(明天补充)
- Python_多进程
- Springboot的工作机制:1 Springboot初体验
- 考CFA证书只通过一级有用吗?
- 外卖行业现状分析_2019年中国外卖行业市场现状与发展趋势分析
- 【bzoj1406】【AHOI2007】【密码箱】【数论】
- Win7打开方式还原,怎么还原打开方式?
- Python可视化-WordCloud生成云词图片
- Feign传递请求头信息
- 【ubuntu】使用ubuntu杀死指定端口
- js检查中英文数字的正则表达式,检查特殊字符
- mini2440裸机音乐播放器(非常久曾经的笔记)
- PHPNow升级PHP版本