深度学习中的目标检测与Focal Loss

深度学习技术在多个行业中的应用日益广泛,从图像安全、监控、自动驾驶系统到机器检查等领域都有其身影。目前,基于深度学习的目标检测主要分为两大类:两阶段检测器,如基于区域的CNN(R-CNN)及其后续版本;以及一阶段检测器,如YOLO系列检测器和SSD。一阶段检测器通过在规则的、密集的锚框(可能的物体位置)上应用检测,有潜力实现更快、更简单的检测,但由于在训练过程中遇到的极端类别不平衡问题,其准确度一直落后于两阶段检测器。

2018年,FAIR发布了一篇论文,介绍了一种名为RetinaNet的一阶段检测器,并提出了Focal Loss的概念来解决类别不平衡问题。在深入探讨Focal Loss的细节之前,首先需要理解什么是类别不平衡问题以及它可能引起的问题。

为什么需要Focal Loss?

传统的一阶段检测方法,如提升检测器、DPM等,以及更近期的方法如SSD,每张图片评估近10^4到10^5个候选位置,但只有少数位置包含物体(即前景),其余都是背景。这导致了类别不平衡问题。这种不平衡导致两个问题:一是训练效率低下,因为大多数位置是容易负样本(即可以被检测器轻易分类为背景),对学习没有贡献;二是由于容易负样本(高概率检测)占输入的大部分,虽然它们单独导致的损失值很小,但总体上可能会压倒损失和计算梯度,导致模型退化。

什么是Focal Loss?

简单来说,Focal Loss(FL)是Cross-Entropy Loss(CE)的改进版本,它通过为难以分类或容易被误分类的样本(如具有嘈杂纹理的背景、部分物体或感兴趣的物体)分配更多权重,而为容易样本(如背景物体)降低权重,来尝试解决类别不平衡问题。因此,Focal Loss减少了容易样本的损失贡献,并增加了纠正误分类样本的重要性。

交叉熵损失(Cross-Entropy Loss)

交叉熵损失的核心思想是比奖励正确预测更多地惩罚错误预测。二分类的交叉熵损失公式如下:

CE(p, y) = -[y * ln(p) + (1 - y) * ln(1 - p)]

其中,y是Y的实际值,p是Y的预测值。为了符号方便,将预测值p记为p_t,实际值y记为y。y属于{0,1},是真实类别;p属于[0,1],是模型对类别y=1的估计概率。

交叉熵损失的问题

如所见,在下面的图表中,当p非常接近0(当y=0)或1时,容易分类的样本(p_t > 0.5)可能会产生非微不足道的损失大小。

平衡交叉熵损失(Balanced Cross-Entropy Loss)

解决这种类别不平衡问题的常见方法是引入一个权重因子α∈[0,1],用于类别1和1-α用于类别-1。

CE(p_t) = -α_t * ln(p_t)

其中,α_t是损失函数中的权重因子。

Focal Loss解释

Focal Loss是交叉熵损失函数的扩展,它会减少容易样本的权重,并专注于训练中的困难负样本。为了实现这一点,研究人员提出了:

FL(p_t) = -α_t * (1 - p_t)^γ * log(p_t)

其中,γ是一个可调的聚焦参数,≥0。RetinaNet目标检测方法使用了α-平衡的Focal Loss变体,其中α=0.25,γ=2效果最佳。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485