文章目录
1、摘要
o n e − s t a g e one-stage one−stage 检测器对目标可能的位置进行密集采样,相比于 t w o − s t a g e two-stage two−stage 方法更简单、速度更快,但是精度稍显不足。作者发现,检测器训练过程中,背景-前景类别极端不平衡是导致这一结果的主要原因。为了解决这一问题,作者重构了标准交叉熵( C E CE CE)损失来减小分类正确的样本的损失权重。 F o c a l L o s s Focal~Loss Focal Loss 聚焦于难分样本的训练,并且减小数量较多的易分负样本的影响。
2、介绍
R − C N N R-CNN R−CNN 类检测器通过 t w o − s t a g e two-stage two−stage 串联以及启发式采样来解决类别不平衡问题。在第二分类阶段,采用启发式采样,比如固定前景-背景比( 1 : 3 1:3 1:3),或者在线难分样本挖掘( O H E M OHEM OHEM)。
o n e − s t a g e one-stage one−stage 虽然也可以采用同样的启发式采样,但是效率低下,因为训练过程仍然被易分背景样本主导。这种低效是目标检测中典型的问题,通常通过自举或者难分样本挖掘来解决。
作者提出 F o c a l L o s s Focal~Loss Focal Loss 来解决样本不平衡问题。损失函数是一个动态缩放的交叉熵损失,当正确类的置信度增加时,缩放因子为 0 0 0。
如图 1 1 1 所示。

图 1. l o s s loss loss 随着 g r o u n g t r u t h groung~truth groung truth 类别置信度的变化曲线
直观上,训练时缩放因子可以急剧减小易分样本权重,关注难分样本。作者提出 F o c a l L o s s Focal~Loss Focal Loss 的具体形式并不重要。
作者设计 o n e − s t a g e one-stage one−stage 目标检测器,称之为 R e t i n a N e t RetinaNet RetinaNet,因为它在输入图像中对目标位置进行密集采样。它的设计特点是高效的特征金字塔网络并且使用锚框。
如图 2 2 2 所示,网络性能超越了之前 o n e one one 和 t w o − s t a g e two-stage two−stage 模型。

图 2. 各模型性能比较
3、相关研究
作者研究的重心在于,在相似或更快的检测速度下, o n e − s t a g e one-stage one−stage 检测器的精度是否可以匹敌甚至超越 t w o − s t a g e two-stage two−stage 检测器。作者强调, R e t i n a N e t RetinaNet RetinaNet 的顶尖的检测性能不是源于网络设计的创新,而是新的损失函数的设计。
类别不平衡
类别不平衡导致两个问题:
- 由于大部分候选位置是易分负样本,没有有用的学习信号,因此训练效率低。
- 易分负样本会抑制训练,导致模型退化。
通常的解决方法是训练时采用难分负样本挖掘,或者采用更复杂的抽样方法。作者提出 F o c a l L o s s Focal~Loss Focal Loss 来解决这一问题,不需要采样,没有易分负样本主导损失。
鲁棒损失
与鲁棒损失相反,焦点损失聚焦于一组稀疏的难分样本。
3、焦点损失
焦点损失被设计用于处理 o n e − s t a g e one-stage one−stage 目标检测器训练时存在的极端样本不平衡问题( 1 : 1000 1:1000 1:1000)。从二分类的交叉熵损失( C E CE CE)引入焦点损失。
(1) CE ( p , y ) = { − log ( p ) if y = 1 − log ( 1 − p ) otherwise \operatorname{CE}(p, y)=\left\{\begin{array}{ll}{-\log (p)} & {\text { if } y=1} \\ {-\log (1-p)} & {\text { otherwise }}\end{array}\right.\tag1 CE(p,y)={
−log(p)−log(1−p) if y=1 otherwise (1)
定义 p t p_t pt 为:
(2) p t = { p if y = 1 1 − p otherwise p_{\mathrm{t}}=\left\{\begin{array}{ll}{p} & {\text { if } y=1} \\ {1-p} & {\text { otherwise }}\end{array}\right.\tag2 p