Focal Loss for Dense Object Detection(整理后转载)


参考链接:https://blog.csdn.net/qq_34199326/article/details/83824778
我挑了链接中所需要的的部分记录了下来,并根据作者知乎上的同一文章下的评论,修改了一些内容。

论文目标

Object Detection算法可以分为 two-stage detector 二阶段和 one-stage detector 一阶段两种,前者指类似Faster RCNN, RFCN这样需要 region proposal 的检测算法,这类算法可以达到很高的精确度,但是速度很慢,虽然可以通过减少proposal的数量或降低输入图像的分辨率等方式达到提速,但是速度并没有本质的提高。后者类似YOLO SSD这样不需要 region proposal ,直接回归的检测算法,这类算法速度很快,但是准确率不如前者。作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。

核心思想

focal loss的提出

既然有了出发点,那么就要找one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:**样本的类别不均衡导致的。**我们知道在object detection领域,一张图像可能生成成千上万的candidate locations,但是其中只有很少一部分是包含object的,这就带来了类别不均衡。那么类别不均衡会带来什么后果呢?
负样本数量太大,占总的loss的大部分,而且多是容易分类的,因此使得模型的优化方向并不是我们所希望的那样
其实先前也有一些算法来处理类别不均衡的问题,比如OHEM。OHEM算法虽然增加了错分类样本的权重,但是OHEM算法忽略了容易分类的样本。
因此针对类别不均衡问题,作者提出一种新的损失函数:focal loss,这个损失函数是在标准交叉熵损失基础上修改得到的。这个函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。为了证明focal loss的有效性,作者设计了一个dense detector:RetinaNet,并且在训练时采用focal loss训练。实验证明RetinaNet不仅可以达到one-stage detector的速度,也能有two-stage detector的准确率。

交叉熵损失函数

介绍focal loss,在介绍focal loss之前,先来看看交叉熵损失,这里以二分类为例,原来的分类loss是各个训练样本交叉熵的直接求和,也就是各个样本的权重是一样的。公式如下:
在这里插入图片描述
为了表示简便,我们用Pt表示样本属于true class的概率(注意是true class而不是正样本)。所以(1)式可以写成
在这里插入图片描述
接下来介绍一个最基本的对交叉熵的改进,也将作为本文实验的baseline,既然one-stage detector在训练的时候正负样本的数量差距很大,那么一种常见的做法就是给正负样本加上权重,负样本出现的频次多,那么就降低负样本的权重,正样本数量少,就相对提高正样本的权重。因此可以通过设定 alpha 的值来控制正负样本对总的loss的共享权重。alpha 取比较小的值来降低负样本(多的那类样本)的权重。在这里插入图片描述
显然前面的
公式3虽然可以控制正负样本的权重,但是没法控制容易分类和难分类样本的权重,于是就有了focal loss:

在这里插入图片描述
这里的γ称作focusing parameter,γ>=0。
在这里插入图片描述
称为调制系数(modulating factor)
为什么要加上这个调制系数呢?目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。

focal loss的重要性质

  1. **当一个样本被分错的时候,pt是很小的,那么调制因子(1-Pt)接近1,损失不被影响;当Pt→1,因子(1-Pt)接近0,那么分的比较好的(well-classified)样本的权值就被调低了。**因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。
    2。 当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数的影响也会增加。 专注参数γ平滑地调节了易分样本调低权值的比例。γ增大能增强调制因子的影响,实验发现γ取2最好。直觉上来说,调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围。当γ一定的时候,比如等于2,一样easy example(pt=0.9)的loss要比标准的交叉熵loss小100+倍,当pt=0.968时,要小1000+倍,但是对于hard example(pt < 0.5),loss最多小了4倍。这样的话hard example的权重相对就提升了很多。这样就增加了那些误分类的重要性。

focal loss的改进

作者在实验中采用的是公式5的focal loss(结合了公式3和公式4,这样既能调整正负样本的权重,又能控制难易分类样本的权重):
在这里插入图片描述
在实验中a的选择范围也很广,**一般而言当γ增加的时候,a需要减小一点(**实验中γ=2,a=0.25的效果最好)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值