Focal Loss for Dense Object Detection
题目:用于稠密目标检测的Focal Loss
来源:ICCV 2017, Facebook 何恺明
1. 目标检测算法简要介绍
目标检测算法是对图像中的物体同时进行检测与分类的算法,算法执行结果如下图第三张图所示:
目标检测算法可分为两类,即one-stage 和two-stage算法:
-
one-stage算法直接使用一个神经网络同时进行目标位置和类别的确定;
-
two-stage算法先产生候选框,确定目标位置,再对候选框区域进行分类与回归。
在实际应用时,两种算法都会先产生一定数量的候选框,一种方法是用一定方法对图片进行分割实现,再通过后续操作,选出与目标更为匹配的候选框并进行缩放。
两种算法的优缺点比较:
one-stage | two-stage | |
---|---|---|
Advantage | Faster | Higher Accuracy |
Disadvantage | Lower Accuracy | Slower |
Exemple | Yolo, SSD | R-CNN Family |
2. Motivation
-
目前主流基于深度学习的目标检测算法可以分为one-stage和two-stage算法两种,其中one-stage算法速度快,但是精度较低。
-
作者认为one-stage算法精度低的主要原因是类别不平衡(通俗来说,one-stage算法在进行目标检测时会产生几万到几十万级别的候选框,而一张图片中的真实目标只占图片的很小一部分区域,故而在这些候选框中,绝大部分在分类时都被归为负类,只有少部分候选框会被归为正类,导致正负类不平衡,同时,绝大部分候选框中的区域都很容易区分,只有少部分候选框中的区域难以分类,从而出现大量简单样本,而困难样本数量过少,导致样本的难易度不平衡)。
3. Contribution
本文工作是针对one-stage类别不平衡问题进行的改进。
-
本文最主要的贡献是对交叉熵损失进行了改进,提出Focal loss改善类别不平衡的问题。
-
此外,本文还提出了一个RetinaNet验证其Focal loss的有效性。
4. Focal Loss
一个传统的交叉熵损失cross entropy (CE)的表达式如下:
y = 1 y=1 y=1表示正类样本, − 1 -1 −1表示负类样本, p p p表示CNN对该样本预测的概率似然。
用 p t p_t pt简化上述表示:
得到CE的表达式:
p t p_t pt越大,表明模型对这个样本的预测越容易。
交叉熵损失有一个问题,就是即使当 p t ⋙ 0.5 p_t⋙0.5 pt⋙0.5时,其loss仍然不会趋近于0(如下图蓝线所示),这意味着简单样本(网络容易分类的样本)对loss仍有贡献,当简单样本处于压倒性优势地位时,真正需要的数量较少的困难样本没有对网络的训练发挥作用,导致网络没能按照理想方向收敛。
![](http://little_z_c.gitee.io/imagebed/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E7%9B%B8%E5%85%B3/Focal%20Loss%20for%20Dense%20Object%20Detection/2.4.jpg)
因此,一个直观的思路就是降低简单样本在loss中所占的权重,本文使用