Focal Loss 阅读笔记

来源:互联网 发布:编程框架是什么意思 编辑:程序博客网 时间:2024/06/11 01:33

Focal Loss for Dense Object Detection
文章地址:https://arxiv.org/abs/1708.02002

文章背景: One-stage 目标检测器在训练过程中,“简单背景目标“数量巨大。训练的损失函数有相当的一部分由这些简单背景目标组成,使得训练后期难以有效进行。
PS:One-stage 目标检测器以SSD和YOLO为代表,不含ROI Pooling结构,训练也可以端到端地进行。


一.原理部分

Focal Loss 定义比较简单易懂,以二分类检测为例:
使用y表示样本的真实标签,设y的取值为{-1,+1},-1表示样本真实标签为负样本,+1表示样本真实标签为正样本; 使用p表示分类器(检测器)产生的样本预测值,表示目标类别的概率,p取值范围是(0,1)。显然,当y=1时,p越大越表明分类器预测样本为正例的置信度越高,则分类器分类效果越好,损失函数就越低。同样,当y=-1时,p越小(1-p越大)越好。
交叉熵损失定义如下:
Cross Entropy Loss
Focal Loss为了方便公式书写和表达,先定义一个变量Pt。Pt表征了分类器产生的预测值与样本真实值的匹配程度:
Pt
Focal Loss使用Pt来表示,公式如下:
Focal Loss

通过Focal Loss的定义不难发现:Pt越大,即预测值和真实值匹配程度越高,那么(1-pt)^gamma的值就越小(gamma大于0)。如果一个正样本的预测值为0.99,那么该样本在学习器的训练中就属于“简单样本“,即学习器已经能够很好地判断出该样本的真实类别,Focal Loss把这个的样本产生的损失值衰减(0.01)^gamma倍,如果gamma为2,那么就是衰减了一万倍,也就是说经过衰减之后,一万个pt=0.99的样本产生的损失值和衰减之前的一个pt=0.99的样本产生的损失值相同(如果是pt=0.9,这样的倍数关系为100,依此类推)。这样的性质使得大量简单样本的影响在整个训练中变小。

Focal Loss在其余任务上可能表现不会太突出,因为“简单样本“的损失已经很小了,衰减与否都不会产生太大影响(样本数量均衡的前提下)。但是在One-stage目标检测器中,它的影响会很大,因为在One-stage的目标检测器中,“简单背景样本“所占的比例很大。在Focal Loss文章之前,One-stage目标检测器解决这种问题的方法主要是丢弃简单目标,限制训练的目标数量和正负样本比例,例如SSD中的Hard Negative Mining。但是完全丢弃简单背景样本也并不是最好的选择,因为在训练初期简单样本仍然比较重要。


二.实验部分

基于Focal Loss,作者提出来一个One-stage的检测器,称为RetinaNet,并在MS COCO数据集上训练和测试。
这个One-stage目标检测器的网络模型使用了ResNet + FPN的结构。
FPN文章地址:
https://arxiv.org/abs/1612.03144
如图是RetinaNet的网络示意图。
RetinaNet
在实际使用Focal Loss时,加入平衡因子,用来平衡正负样本本身的比例不均。
加入平衡因子之后的Focal Loss表达式如下:
Focal Loss with alpha
其中,平衡因子αt表示了类别均衡比例,当y=1时,αt=α,y=-1时,αt = 1 - α。

部分重要实验细节:

1.初始化:初始化分为W和b的初始化,W的初始化为高斯分布,b的初始化为常数log((1-π)/π),其中π是一个比较小的常数,如0.01。在负样本数量远大于正样本数量的情况下,需要使classification的输出尽可能小,符合真实比例,这样损失函数才不会太大,使得训练在初期不稳定。而由于文中的classification subnet的激活层是sigmoid,经过计算不难证明,sigmoid(log((1-π)/π)) = π。也就是说,这样的初始化使得训练初期,网络输出的预测值分布在π附近,符合负样本和正样本的比例,训练更加稳定。(PS:当样本数量均衡时,一般b初始化为0,这样有simoid(0)=0.5,使得输出符合样本比例)

2.classification subnet和box regression subnet结构相同,但是并不共享参数(这一点与faster rcnn不同)。

3.在使用网络进行预测时:为了加快网络速度,每一层pyramid仅保留置信度大于0.05的最多1000个预测框。
将所有保留的预测框综合起来,经过非极大值抑制(阈值为0.5)之后产生最终的预测结果。

实验结果:
tuning

这个表格是作者进行消除实验和调参实验的实验结果。在此不做详细分析。

CDF

这张图是作者使用参数为ResNet-101,γ=2的的RetinaNet,在COCO上训练完成后。对随机图片进行预测,并用预测所得的~10^7个负样本和~10^5个正样本绘制CDF曲线。横坐标是排序后的样本采样数量(以分数形式表示,取值为0.1时,即选取了loss值最小的10%的样本);纵坐标是所占loss的比例。
由图可得结论:
1.对于正样本,γ=2时的loss中的60%以上来自20%的难分样本;γ=0时,loss中的50%来自20%的难分样本。Focal Loss对前景目标影响不大。
2.对于负样本,γ=2时,loss中的绝大部分(99%?)来自不到1%的难分样本。而γ=0时,loss曲线比较平滑。
从所得结论可以看出,Focal Loss达到了预期的目的,极大程度地衰减了简单背景样本的占总体loss的比例。

AR

最后一个表格是经过调参后,效果最佳的RetinaNet与其他典型目标检测器的性能对比。可以看出,RetinaNet在小目标检测上的性能提升比较显著。

原创粉丝点击