样本贡献不均:Focal Loss和 Gradient Harmonizing Mechanism

2019 年 4 月 25 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击文末“阅读原文”立刻申请入群~


本文主要介绍两个在目标检测中解决正负样本不平衡问题的方法,分别是发表在ICCV 2017上的Focal Loss for Dense Object Detection和AAAI 2019上的Gradient Harmonized Single-stage Detector。这两种方法都是通过调整每个样本的loss来解决不平衡问题。


作者 | BeyondTheData

来源 | https://zhuanlan.zhihu.com/p/55036597

已获作者授权,请勿二次转载


论文地址:http://openaccess.thecvf.com/content_ICCV_2017/papers/Lin_Focal_Loss_for_ICCV_2017_paper.pdf


论文地址:https://arxiv.org/pdf/1811.05181.pdf


这两种方法都是针对目标检测任务提出的,首先简要的介绍下背景。目标检测目前有两种主流方法,分别是two-stage和one-stage。two-stage的方法将目标检测分为两步,首先生成候选集合,该候选集合过滤了绝大多数的负样本,然后用一个分类器进行分类。代表性的工作有R-CNN,Fast R-CNN, Faster R-CNN和Mask R-CNN等等。one-stage的方法直接生成大量的图像区域然后直接进行分类,代表性的工作有OverFeat,SSD和YOLO。two-stage有最好的目标检测结果,但是one-stage速度更快。这两类方法都有类别不平衡的问题,two-stage通过Selective Search,EdgeBoxes,DeepMask和RPN等手段来解决类别不平衡,通常候选区域的个数为1-2k,在分类中可以固定foreground和background的比例或者用online hard example mining来维持样本的均衡。one-stage的方法会有100k个不同尺寸的location,在训练过程中容易被区分的background占了大多数,虽然可以用一些相似的启发式采样方法,但是这会早成训练的低效。为此,第一篇文章提出Focal loss,并且将其应用在one-stage的方法中,通过loss function来解决极端的类别不平衡问题(1:1000)。


Focal loss

首先回顾交叉熵损失函数。对二分类问题,交叉熵损失函数如下



其中  为模型的输出,表示属于正样本的概率,可以用  来表示,



这样交叉熵可以写为  。交叉熵在下图中用蓝色曲线表示,这种损失的一个性质是如果样本是极好分类的( )那么该样本的loss有一个较小的量级,因为存在大量的易分类负样本,这些loss相加后会淹没正样本的loss。



为了解决类别不平衡,一种方法是引入一个权重因子  ,对于正样本 ,对于负样本为  。为了方便描述,和  一样,我们用  来表示系数,那么  CE损失为  。虽然 可以平衡positive/negative的重要性,但是对于easy/hard的样本是无法区分的。Focal loss则通过改变loss function来达到这一目的,如下


其中  。在上图中可以看到不同的取值的loss曲线。由上式可知当样本被误分类时, 很小,前面的系数接近1,loss不会受到影响。如果 趋近于1,那么系数趋近于0,相当于为loss降低了权重。除此之外,  也对系数进行调整,如果  ,那么  的loss会降低100倍,  的loss会降低1000倍。这样反过来增加了误分类样本的权重(如果 的loss最多降低4倍)。在实际应用中,作者也加入了一个平衡因子,这对最终的结果有提高



作者在文中还提到了模型初始化。对于二分类,一般的模型初始化会使得正负样本的概率相等。由于类别不平衡,负样本的loss会占总体loss的很大比例。作者提出在训练初始阶段对正样本的概率估计“prior”的概念,用 来表示,通过设置它来达到正样本的输出概率低的效果,比如为0.01。实际操作中,出了最后一个用于分类的卷积层,其余卷积层的参数初始化为bias  ,而最后一层  ,在实验中  为0.01。具体的实验结果和网络结构大家可以阅读论文,此处不再提及。


Gradient Harmonizing Mechanism(GHM)

Focal Loss虽然有很好的效果,但是loss中的两个超参需要精细的调整,除此之外,它也是一个不会随着数据分布变化的静态loss。在第二篇文章中,作者指出类别不平衡可以总结为“imbalance in difficulty”“imbalance in difficulty”就是gradient norm分布的不平衡。如果一个正样本被分类正确,那么模型从该样本的梯度中受益很小,而一个误分类的样本对模型的影响很大。整体来看,数据巨大的负样本时容易被分类的,hard example通常是正样本。无论是hard/easy还是positive/negtive 不平衡,都可以用gradient norm来表示。如下图



左边是一个收敛模型的gradient norm的分布,中间是通过Focal Loss和GHM之后的梯度修正,右边是不同的gradient norm的梯度贡献。可以看出easy样本的梯度贡献会淹没hard样本。除此之外,作者还发现有非常大的gradient norm(very hard example)的占比比中间的样本要打,作者认为这些是outlier。通过对gradient norm的分析,作者提出Gradient Harmonizing Mechanism来对loss函数进行修正。作者提出针对分类loss的GHM-C和针对box regression的GHM-R,这两个loss均和训练中的梯度密度有关,而梯度密度是不断变化的,所以这两种loss是动态loss,这里我们只关注GHM-C。

作者用  表示gradient norm,其值表示样本对整体梯度的贡献。



其中  是模型输出的概率,  是样本标记。作者定义了梯度密度函数

 

 是第k个样本的gradient norm, 

 



 的梯度密度就是落在以  为中心长度为  区域内的样本个数。接下来作者提出梯度密度修正参数,



是样本总数。我们可以将  写为  ,分母表示第i个样本的近邻数所占的比例。有了以上定义,GHM-C loss为



为了计算梯度密度,最简单的算法时间复杂度为  ,如果并行的化,每个计算单元也有N的计算量。对gradient norm进行排序的最好的算法复杂度为  ,然后用一个队列去扫描样本得到梯度密度的时间复杂度为  。基于排序的方法即使并行也不能较快的计算,因为N往往是  甚至  ,仍然是非常耗时的。作者提出一种方法来近似计算梯度密度。将  的空间划分为  个unit region,用  表示第j个unit region,  表示  中的样本数,  表示  所在unit region的下标。近似的梯度密度函数为


近似的修正参数为

 


利用  来计算loss。总体的时间复杂度为 ,并行的话每个计算单元的计算量为M。


因为loss的计算是基于梯度密度函数,而梯度密度函数根据一个batch中的数据得到,一个batch的统计结果是有噪声的。与batch normalization相同,作者用Exponential moving average来解决这个问题,也就是



具体的实验结果和网络结构大家可以阅读论文,此处也不再提及。


总结

Focal Loss和Gradient Harmonizing Mechanism在目标检测中可以很好的处理类别不平衡问题,那么在其他领域是否也会有效果。比如在pairwise的推荐中,肯定也会有easy pair和hard pair,在一些业务场景下这些也是不平衡的,是否可以用这种方法来更好的提升效果,这个也待笔者尝试。




*延伸阅读



点击左下角阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~


觉得有用麻烦给个在看啦~  

登录查看更多
25

相关内容

RetinaNet是2018年Facebook AI团队在目标检测领域新的贡献。它的重要作者名单中Ross Girshick与Kaiming He赫然在列。来自Microsoft的Sun Jian团队与现在Facebook的Ross/Kaiming团队在当前视觉目标分类、检测领域有着北乔峰、南慕容一般的独特地位。这两个实验室的文章多是行业里前进方向的提示牌。 RetinaNet只是原来FPN网络与FCN网络的组合应用,因此在目标网络检测框架上它并无特别亮眼创新。文章中最大的创新来自于Focal loss的提出及在单阶段目标检测网络RetinaNet(实质为Resnet + FPN + FCN)的成功应用。Focal loss是一种改进了的交叉熵(cross-entropy, CE)loss,它通过在原有的CE loss上乘了个使易检测目标对模型训练贡献削弱的指数式,从而使得Focal loss成功地解决了在目标检测时,正负样本区域极不平衡而目标检测loss易被大批量负样本所左右的问题。此问题是单阶段目标检测框架(如SSD/Yolo系列)与双阶段目标检测框架(如Faster-RCNN/R-FCN等)accuracy gap的最大原因。在Focal loss提出之前,已有的目标检测网络都是通过像Boot strapping/Hard example mining等方法来解决此问题的。作者通过后续实验成功表明Focal loss可在单阶段目标检测网络中成功使用,并最终能以更快的速率实现与双阶段目标检测网络近似或更优的效果。
专知会员服务
110+阅读 · 2020年6月26日
2019 DR loss(样本不平衡问题)目标检测论文阅读
极市平台
11+阅读 · 2019年10月28日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
非平衡数据集 focal loss 多类分类
AI研习社
33+阅读 · 2019年4月23日
被忽略的Focal Loss变种
极市平台
29+阅读 · 2019年4月19日
从最优化的角度看待 Softmax 损失函数
极市平台
31+阅读 · 2019年2月21日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
论文 | 用于密集对象检测的 Focal Loss 函数
七月在线实验室
9+阅读 · 2018年1月4日
何恺明大神的「Focal Loss」,如何更好地理解?
PaperWeekly
10+阅读 · 2017年12月28日
Arxiv
5+阅读 · 2019年4月8日
Few-shot Adaptive Faster R-CNN
Arxiv
3+阅读 · 2019年3月22日
Physical Primitive Decomposition
Arxiv
4+阅读 · 2018年9月13日
Arxiv
7+阅读 · 2018年3月19日
VIP会员
相关VIP内容
专知会员服务
110+阅读 · 2020年6月26日
相关资讯
2019 DR loss(样本不平衡问题)目标检测论文阅读
极市平台
11+阅读 · 2019年10月28日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
非平衡数据集 focal loss 多类分类
AI研习社
33+阅读 · 2019年4月23日
被忽略的Focal Loss变种
极市平台
29+阅读 · 2019年4月19日
从最优化的角度看待 Softmax 损失函数
极市平台
31+阅读 · 2019年2月21日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
论文 | 用于密集对象检测的 Focal Loss 函数
七月在线实验室
9+阅读 · 2018年1月4日
何恺明大神的「Focal Loss」,如何更好地理解?
PaperWeekly
10+阅读 · 2017年12月28日
相关论文
Top
微信扫码咨询专知VIP会员