论文笔记——Focal Loss for Dense Object Detection(RetinaNet)


论文下载:

https://arxiv.org/pdf/1708.02002.pdf

论文代码:

https://github.com/facebookresearch/Detectron


论文摘要:

目前一阶段(one stage)目标检测器比二阶段(two stage)的算法更更快、更简单,但在精度方面仍然落后于二阶段检测器。在本文中,作者将研究这一情况的主要原因。**作者发现其主要原因是密集的神经网络检测器(dense detectors)在训练中会遇到极端的前景-背景类不平衡(foreground-background class imbalance)。**作者创造性的重新定义标准的交叉熵损失(cross entropy),来降低分配给良好例子的损失权值,从而解决这个类不平衡问题。这个新的损失称为“焦点损失(Focal Loss)”,会将损失集中在一个比较少的难以产生学习进步的例子(a sparse set of hard examples),并防止大量的消极效果对检测器造成影响。

作者为了评估这个损失,利用当时所提出的技术设计训练了一种简单的网络结构,即“RetinaNet”。实验结果表明采用焦损失训练时(the focal loss),RetinaNet的速度和当时的一阶段检测器一样快,精度超过当时的二阶段检测器。


关于类不平衡:

在一些经典的单阶段检测器如boosted detectors 、DPMs、SSD等,在训练中都面临着较严重的类不平衡问题,这些单阶段检测器对每张图像评估104—105个候选位置,但是只有少数的位置才是真正的包含物体,这就导致候选位置和真实位置数量差距大,即不平衡

这种不平衡导致了两个问题:

1、训练效率低下,大多数位置都是简单的负样本确定,没有贡献有用的学习信号(learning signal)

2、简单的负样本确定会恶化训练效果,导致模型退化。

常见的一种解决方案是执行某种形式的硬负挖掘/难例挖掘(hard negative mining)

相比之下,作者证明了他们所提出的Focal_loss简单地处理了单阶段检测器所导致的类不平衡(the class imbalance),并允许在没有采样(sampling)、没有简单的负样本确定恶化损失(easy negatives overwhelming the loss)、没有计算梯度的情况下有效地训练所有的例子


Focal loss:

焦损失的设计是为了解决单阶段目标检测场景训练期间的前景和背景类不平衡(foreground and background classes),作者从交叉熵损失(the cross entropy)引入焦损失用于二分类

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

y∈{+1/-1}指定真值类(ground-truth),p∈[0,1]是模型对标签y=1类的估计的概率,为了便于标记,作者定义Pt:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

并且更改为:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

解决类不平衡的一种常用方法是对类1(class 1)引入权重因子α∈[0,1],对类-1引入1-α,αt定义为:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

相当于对不同难度的题目花不同的精力去解决,较难的用较多精力。将α-balanced CE loss 定义为:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

作者提出重新定义损失函数来降低简单例子的权重,让模型训练重点放到较难的例子上。作者以上图公式作为一个定义loss的外壳。Pt相当于检测器擅长检测某些容易被检测出来的物体,减少Pt对loss的贡献,即”不同难度题目复习的精力“。加入一个调制因子(modulating factor):(1-Pt)^γ,γ=>0:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

γ越大表明,Pt对loss的贡献越少,即”逐渐减少花在简单题目上面的精力“,可以从绿色线条看出γ=5时,简单例子对loss的贡献极低:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

在实践中,作者使用:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

与上图公式对比增加了αt参数,比没增加的精度略有提高。


RetinaNet:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

(a)应用ResNet作为主干网络

(b)应用FPN

(c)应用分类子网用于预测A锚点和K类目标在每个空间存在的概率,即分类锚框

(d)应用回归子网用于从锚框回归到真实对象框

作者提到这是为了检验Focal loss效果的网络,所以设计较为简单,但是其精度却缩小了与当时最高精度的二阶段检测器的差距。运行的速度也很快。


实验结果:

视网膜和焦损失(FL)的消融实验:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

所有的模型都在trainval35k上训练,在minival上测试,除非有说明。如果未指定,默认值为:y = 2;锚为3尺度和3宽高比;ResNet-50-FPN骨干;以及600像素的训练和测试图像尺度。

(a)具有α-balanced CE的RetinaNet最多达到31.1 AP

(b)相比之下,使用FL与相同的精确网络提供2.9 AP增益,并且对于精确的γ/α设置相当稳健

©在点性能达到饱和后,使用2-3尺度和3纵横比锚定会产生良好的结果

(d) FL比在线硬例子挖掘(OHEM)的最佳变种[31,22]的表现好3个百分点以上。

(e) RetinaNet在测试开发中对不同网络深度和图像尺度的准确性/速度权衡

一个收敛模型中不同y值的正样本和负样本的归一化损失的累积分布函数:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

目标检测单模型结果(边界框AP), vs. COCO test-dev上最先进的:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)

与交叉熵相比,焦损失的变化是Xt=yx的函数:

论文笔记——Focal Loss for Dense Object Detection(RetinaNet)


相关文章:

  • 2021-07-17
  • 2021-10-03
  • 2021-06-09
  • 2021-04-06
  • 2021-07-16
  • 2021-05-30
猜你喜欢
  • 2021-06-27
  • 2021-06-27
  • 2021-06-20
  • 2021-10-22
  • 2021-07-10
  • 2021-12-17
  • 2021-04-01
相关资源
相似解决方案