专栏首页GiantPandaCV目标检测算法之AAAI2019 Oral论文GHM Loss

目标检测算法之AAAI2019 Oral论文GHM Loss

前言

这篇论文仍然是瞄准了One-Stage目标检测算法中的正负样本不均衡问题,上周我们介绍He Kaiming等人提出的Focal Loss,推文地址如下:https://mp.weixin.qq.com/s/2VZ_RC0iDvL-UcToEi93og 来解决样本不均衡的问题。但这篇论文提出,Focal Loss实际上是有问题的,论文论述了该问题并提出了GHM Loss更好的解决One-Stage目标检测算法中的正负样本不均衡问题。论文地址为:https://arxiv.org/pdf/1811.05181.pdf。github开源地址为:https://github.com/libuyu/GHM_Detection

梯度均衡机制(GHM)

首先论文引入了一个统计对象:梯度模长(gradient norm)。考虑一个简单的二元交叉熵函数(binar cross entropy loss):

其中是模型预测的样本的类别概率,而是标签信息,这样可以球处于其对的梯度:

所以,论文定义了一个梯度模长为:

直观来看,表示了样本的真实值和预测值的距离。看下论文的Figure2,表示的是一个One-satge模型收敛后画出的梯度模长分布图。Figure2如下:

上图横坐标表示gradient norm,纵坐标表示数据分布的比例,做了对数尺度缩放,显然非常靠近y轴表示的是easy examples,非常靠近轴的表示very hard examples,中间部分的表示hard example。重新标注下上图即:

注意到途中绿框部分即为very hard example,论文认为这部分样本对模型的提升作用是没有帮助的,但这部分样本同样也有着较大的比例。根据Focal Loss的观点,我们班应该关注的是介于红框和绿框之间的样本,而Focal Loss缺不能解决这一点,而是把very hard examples也考虑在内了。这些very hard examples也被称为离群点,也就是说如果一个模型强行拟合了离群点,模型的泛化能力会变差,所以这篇论文提出了GHM Loss抑制离群点,取得了比Focal Loss更好的效果。

基于上面的分析,论文提出了梯度均衡机制(GHM),即根据样本梯度模长分布的比例,进行一个相应的标准化(normalization),使得各种类型的样本对模型参数的更新有更加均衡的贡献,进行让模型训练更高效可靠。由于梯度均衡本质上是对不同样本产生的梯度进行一个加权,进而改变它们的贡献量,而这个权重加在损失函数上也可以达到同样的效果,此研究中,梯度均衡机制便是通过重构损失函数来实现的。为了更加清楚的描述新的损失函数,论文定义了梯度密度(gradient density)这一概念。仿照物理上对于密度的定义(单位体积内的质量),论文把梯度密度定义为单位取值区域内分布的样本数量。首先定义梯度密度函数(Gradient density function)

其中表示第个样本的梯度,而且:

所以梯度密度函数就表示梯度落在区域,的样本数量。再定义度密度协调参数:

其中代表样本数量,是为了保证均匀分布或只划分一个单位区域时,该权值为 1,即 loss 不变。综上,我们可以看出梯度密度大的样本的权重会被降低,密度小的样本的权重会增加。于是把GHM的思想应用于分别应用于分类和回归上就形成了GHM-C和GHM-R。

用于分类的GHM Loss

把GHM应用于分类的loss上即为GHM-C,定义如下所示:

根据GHM-C的计算公式可以看出,候选样本的中的简单负样本和非常困难的异常样本(离群点)的权重都会被降低,即loss会被降低,对于模型训练的影响也会被大大减少,正常困难样本的权重得到提升,这样模型就会更加专注于那些更有效的正常困难样本,以提升模型的性能。GHM-C loss对模型梯度的修正效果如下图所示,横轴表示原始的梯度loss,纵轴表示修正后的。由于样本的极度不均衡,论文中所有的图纵坐标都是取对数画的图。注意这是Loss曲线,和上面的梯度模长曲线要加以区别。

从上图可以看出,GHM-C和Focal Loss(FL)都对easy example做了很好的抑制,而GHM-C和Focal Loss在对very hard examples上有更好的抑制效果。同时因为原始定义的梯度密度函数计算计算太复杂,所以论文给出了一个梯度密度函数简化版本

其中,。然后再结合密度协调函数:

得到为:

用于回归的GHM Loss

GHM的思想同样适用于Anchor的坐标回归。坐标回归的loss常用Smooth L1 Loss,如下图:

其中,表示模型的预测坐标偏移值,表示anchor相当于Ground Truth的实际坐标偏移量,表示函数的分界点,常取。定义,则的梯度为:

其中表示符号函数,当时,所有样本梯度绝对值都为1,这使我们无法通过梯度来区分样本,同时d理论上可以到无穷大,这也使我们无法根据梯度来估计一些example输出贡献度。基于此观察,论文对Smooth L1损失函数做了修正得到:

在论文中,。 和Smooh L1损失有相似的性质,并且梯度为:

论文把定义为梯度模长(gradient norm),则的梯度模长和样本部分的关系如下图所示:

由于坐标回归都是正样本,所以简单样本的数量相对并不是很多。而且不同于简单负样本的分类对模型起反作用,简单正样本的回归梯度对模型十分重要。但是同样也可以看出来,存在相当数量的异常样本的回归梯度值很大。(图上最靠右的部分)。所以使用GHM的思想来修正loss函数,可以得到:

以达到对离群点的抑制作用。GHM-R Loss对于回归梯度的修正效果如下图所示:

可以看到,GHM-R loss加大了简单样本和正常困难样本的权重,大大降低了异常样本的权重,使模型的训练更加合理。

实验结论

因为GHM-C和GHM-R是定义的损失函数,因此可以非常方便的嵌入到很多目标检测方法中,作者以focal loss(大概是以RetinaNet作为baseline),对交叉熵,focal loss和GHM-C做了对比,发现GHM-C在focal loss 的基础上在AP上提升了0.2个百分点。如表4所示。

如果再用GHM-R代替双阶段检测器中的Smooth L1损失,那么AP值又会有提示。如表7所示。

如果同时把GHM-R Loss和GHM-C Loss用到目标检测器中,AP值有1-2个点提升。

后记

论文的大概思想就是这样,对于样本有不均衡的场景,我认为这个Loss是比较值得尝试的。

参考文章

https://blog.csdn.net/watermelon1123/article/details/89362220 https://zhuanlan.zhihu.com/p/80594704


本文分享自微信公众号 - GiantPandaCV(BBuf233),作者:BBuf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-07

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【损失函数合集】Yann Lecun的Contrastive Loss 和 Google的Triplet Loss

    昨天在介绍Center Loss的时候提到了这两个损失函数,今天就来介绍一下。Contrastive Loss是来自Yann LeCun的论文Dimension...

    BBuf
  • 【损失函数合集】超详细的语义分割中Loss盘点

    前两天介绍了一下Contrastive Loss,Triplet Loss以及Center Loss。今天正好是周六,时间充分一点我就来大概盘点一下语义分割的常...

    BBuf
  • 目标检测算法之RetinaNet(引入Focal Loss)

    今天来介绍一下目标检测算法中RetinaNet,这篇论文是CVPR2018的作品,Kaiming He大神也是作者之一,同时这篇论文提出的Focal Loss也...

    BBuf
  • 【损失函数合集】超详细的语义分割中Loss盘点

    前两天介绍了一下Contrastive Loss,Triplet Loss以及Center Loss。今天正好是周六,时间充分一点我就来大概盘点一下语义分割的常...

    BBuf
  • 刘浩(iSlide):收藏这些常用版式+100套精品,再难的PPT都不在话下

    做PPT就是信息的视觉化表达,可是问题在于,视觉化表达对于非设计出身的人来说有很大的难度。

    寒树Office与RPA
  • JS逆向之新榜登录

    此时的断点位置,一般是一个 XMLHttpRequest 的请求操作。所以我们顺着调用栈往回追。

    Python编程与实战
  • WPF 获取本地IP地址

    /// <summary> /// 获取本地IP地址信息 /// </summary> void GetAd...

    hbbliyong
  • 拍个自拍,让Python告诉你,军训过后你黑了几度?

    在六月中旬高考结束之后,万千学子迎来了他们人生中最长也是最无忧无虑的假期,到了八月底九月初,他们将踏上人生的一段重要旅程——大学。

    大数据文摘
  • 网站后端_Python-网站开发.Pyt

    1. 由于Python具有快速开发,多人协作,库丰富,社区成熟等优点,国内豆瓣/知乎/搜狐/果壳/饿了吗,国外YouTube/Reddit/Instagram/...

    py3study
  • 小知识:Linux如何删除大量小文件

    环境:RHEL 6.5 + Oracle 11.2.0.4 需求:使用df -i巡检发现Inodes使用率过高,需要清理删除文件来解决。如果Inodes满,该...

    Alfred Zhao

扫码关注云+社区

领取腾讯云代金券