Focal损失函数学习笔记

该损失函数提出于柯凯明大神的论文–RetinaNet : Focal Loss for Dense Object Detection

Focal loss 目标

one-stage目标检测网络像SSD/YOLO一般在模型训练时会先大密度地在模型终端的系列feature maps上生成出10,000甚至100,0000个目标候选区域,然后再分别对这些候选区域进行分类与位置回归识别。
然而在这些生成的数万个候选区域中,绝大多数是背景区域,这就存在样本类别不均衡问题。easy negative examples会对loss起主要贡献作用,会主导梯度的更新方向,少量正样本提供的关键信息不能在一般所用的training loss中发挥正常作用,从而无法得出一个能对模型训练提供正确指导的loss。
常用的解决此问题的方法就是负样本挖掘。

Focal loss的提出主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。

Focal loss函数形式

基于二分类交叉熵(BCE)改进而来,首先回顾BCE loss。
二分类交叉生损失函数形式如下:
在这里插入图片描述
令:
在这里插入图片描述
那么可以得到:
在这里插入图片描述
y是预测输出。

该损失函数对于正样本而言,输出概率越大,loss越小,对于负样本而言,输出概率越小,损失越小。如果此时有大量的负样本,那么就有可能损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。

如下图,即使是(负样本)easy examples(Pt >> 0.5),它的loss也很高,如下图蓝线。
即使是easy examples(Pt >> 0.5),它的loss也很高,如下图蓝线。
在这里插入图片描述
那对于BCE而言,怎么降低大量负样本的影响呢?
作者引入了α系数,变为如下形式:
在这里插入图片描述
因子的大小一般为相反类的比重。即负样本越多,我们给它的权重越小。这样就可以降低负样本的影响。

但这只是解决了正负样本的不平衡,并没有解决easy和hard examples之间的不平衡。
因此,针对easy和hard 样本,我们定义Focal loss。
Focal loss形式如下:
在这里插入图片描述
简化改写为:
在这里插入图片描述
对于简单样本,Pt会比较大,所以权重减小,针对hard example,Pt比较小,则权重比较大,让网络倾向于利用这样的样本来进行参数的更新。
结合两个改进,可以得到最终的Focal loss:
在这里插入图片描述
同时解决了正负样本,难易样本不均衡的问题。

参考:
https://blog.csdn.net/LeeWanzhi/article/details/80069592

发布了29 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/c2250645962/article/details/104020771
今日推荐