Focal Loss
探索焦点损失如何解决深度学习中的类别不平衡。学习如何将其与 Ultralytics YOLO26 结合使用,专注于困难样本并提高模型准确率。
焦点损失是一种专用目标函数,主要用于深度学习,以应对严重的类别不平衡问题。在许多计算机视觉任务(如目标检测)中,背景样本(负样本)的数量远远超过感兴趣对象(正样本)的数量。标准方法(如广泛使用的交叉熵损失)会将所有错误一视同仁,这通常会导致模型被海量易分类背景数据淹没。焦点损失会修改标准损失计算,降低这些简单样本的权重,迫使优化算法将学习能力集中于“困难”样本——即那些数量稀少且难以分类、对模型性能至关重要的对象。
聚焦机制#
焦点损失的核心创新在于,它能够根据模型的置信度动态调整分配给每个样本的惩罚。在典型的监督学习场景中,检测器可能会评估图像中的数千个候选位置。由于其中大多数位置不包含对象,标准损失函数会从这些容易识别的负样本中累积大量微小的误差信号,从而淹没少数正样本所提供的有价值信号。
焦点损失引入了一个调制因子:随着模型对正确类别的置信度提高,损失贡献会逐渐衰减。这意味着,如果模型已经有99%的把握确定某个背景区域确实是背景,那么该区域的损失就会降至接近于零。因此,模型权重主要根据被错误分类的样本或模型不确定的样本进行更新。这种有针对性的方法对于训练单阶段目标检测器(如YOLO26)至关重要,使其无需复杂的采样阶段即可实现高精度。
实际应用#
对于在安全性和精确性至关重要的环境中部署稳健 AI 系统而言,处理不平衡的训练数据至关重要。
- 医疗保健领域的 AI: 在医学图像分析等领域,识别病变往往如同大海捞针。例如,在用于寻找小型病灶的 MRI 扫描中,健康组织可能占据超过99%的像素。标准模型可能会通过将所有区域都预测为“健康”来最大化表面准确率,却漏掉关键诊断。焦点损失能够让系统抑制大量健康组织产生的信号,优先学习异常的细微特征,从而提高危及生命的检测任务的召回率。
- 自动驾驶车辆: 自动驾驶汽车的感知系统必须在建筑物、道路和天空等复杂背景中检测行人或骑行者等弱势道路使用者。虽然背景很容易学习,但较小或较远的障碍物却构成了重大挑战。通过使用焦点损失,汽车领域的 AI应用可以确保感知系统不会忽略这些难以检测的对象,即使危险目标只占据视觉范围中极小的一部分,也能维持安全标准。
使用 Ultralytics 实现#
ultralytics 库包含高级损失函数的优化实现,用于支持最先进的模型。虽然Ultralytics Platform会自动配置这些超参数以实现最佳训练效果,但开发者也可以直接访问这些组件开展定制研究。
下面的示例演示了如何使用 ultralytics 工具包初始化焦点损失,并计算一组预测结果的误差。
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss.
# The 'gamma' parameter controls the focusing strength (higher = more focus on hard examples).
criterion = FocalLoss(gamma=1.5)
# Example: Model predictions (logits) and binary Ground Truth labels
# requires_grad=True simulates model outputs that need backpropagation
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss value
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")与相关概念的区别#
了解焦点损失在更广泛的误差度量体系中的定位,有助于为具体的计算机视觉任务选择正确的策略。
- 焦点损失与交叉熵损失的比较: 交叉熵是分类任务的基础指标,它根据对数误差对预测结果进行惩罚。焦点损失严格来说是交叉熵的扩展;如果将聚焦参数设为零,它在数学上就会恢复为标准交叉熵。两者的关键区别在于,焦点损失能够自动降低简单负样本的权重,因此更适合COCO这类不平衡数据集。
- 焦点损失与 IoU 损失的比较: 焦点损失用于分类(确定对象是什么),而 IoU 损失用于定位(确定对象在哪里)。现代检测器会使用复合损失函数,将焦点损失用于类别概率计算,并使用基于 IoU 的指标进行边界框回归。
- 焦点损失与 Dice 损失的比较: Dice 损失是另一种用于处理不平衡的技术,主要应用于图像分割任务。焦点损失根据置信度作用于单个像素或样本,而 Dice 损失则在全局范围内优化预测区域与真实区域之间的重叠。在复杂的分割工作流中,二者经常结合使用。









