深圳Yolo 视觉
深圳
立即加入
词汇表

病灶损失

了解 Focal Loss 如何解决物体检测中的类不平衡问题--将训练重点放在困难示例上,从而提高不平衡数据集的准确性。

Focal Loss 是一种专门的目标函数,旨在解决机器学习训练中的极端类不平衡问题,尤其是在计算机视觉领域。 特别是在计算机视觉领域。在许多物体检测场景中,背景示例(阴性)的数量远远超过感兴趣物体(阳性)的数量。 背景示例(阴性)的数量远远超过感兴趣对象(阳性)的数量。标准损失函数会 会被这些易于classify 的背景示例的庞大数量所淹没,从而阻碍模型学习难度更大的正面示例的能力。 学习难度更大的正面示例的能力。Focal Loss 可以根据预测的置信度动态缩放损失,有效地降低了模型学习难度。 预测的置信度来动态缩放损失,从而有效降低易分类示例的权重,并迫使模型将训练重点 在困难的阴性和分类错误的对象上。

解决阶级失衡问题

Focal Loss 背后的主要动机是提高单级物体检测器的性能,如 单级物体检测器的性能,例如 早期版本的 RetinaNet 和现代架构,如 Ultralytics YOLO11.在这些系统中,检测器扫描图像并生成数千个候选位置。 生成数千个候选位置。由于图像的大部分通常是背景,因此背景与物体的比例通常可达 1000:1 或更高。 通常可达 1000:1 或更高。

在没有干预的情况下,大量背景样本产生的微小误差的累积效应会在梯度更新过程中占据主导地位。 在反向传播过程中主导梯度更新。 反向传播。这会导致 优化算法优先考虑简单地 将所有东西都归类为背景,以尽量减少整体误差,而不是学习实际物体的细微特征。 实际物体的细微特征。焦点损失会重塑标准损失曲线,以减少对模型已经有把握的实例的惩罚,从而引导优化算法将目标锁定为背景。 的例子减少惩罚,从而引导 模型权重来调整具有挑战性的案例。

机制和功能

焦点损失是标准 交叉熵损失的扩展。它 它引入了一个调制因子,随着对正确类别的置信度增加,损失贡献会逐渐减小。 当模型遇到一个 "简单 "的例子--比如一片晴朗的天空,它有很高的概率将其正确识别为背景--调制因子就会随着对正确类别的信心增加而衰减。 当模型遇到 "容易 "的例子时--比如一片晴朗的天空,它能以很高的概率将其正确识别为背景--调制因子会将损失推近零。相反,对于 "难 相反,对于模型预测不正确或不确定的 "难 "例子,损失仍然很大。

这种行为由聚焦参数控制,通常用 gamma 表示。通过调整该参数,数据科学家 可以调整损失函数对分类良好的示例降低权重的程度。这样就能在高度不平衡的 在高度不平衡的训练数据上进行训练,从而 从而提高稀有类的准确率和召回率。

实际应用

处理不平衡的能力使 Focal Loss 成为安全关键型和高精度环境中必不可少的设备。

  • 自动驾驶:在 在自动驾驶汽车中,视觉系统必须 detect 行人、骑车人和交通标志。在典型的视频馈送中,绝大多数像素代表的是道路、天空或建筑物,而关键的障碍物则很少出现。 道路、天空或建筑物,而关键障碍物则很少出现。焦点丢失可以帮助感知系统忽略大量的路面数据,集中精力识别行人、自行车和交通标志。 大量的路面数据,集中识别潜在危险的动态物体。 的动态物体。 对 人工智能在汽车解决方案中的应用
  • 医疗诊断:医学图像分析中,识别 在医学图像分析中,识别肿瘤或骨折等异常是一个典型的大海捞针问题。健康大脑的扫描图像 几乎全部是健康组织,肿瘤只占很小一部分。使用 "病灶丢失 "技术可以 医疗模型中的人工智能可以从代表病理的少数 像素进行学习,而不会受到大量健康组织的影响,从而提高诊断工具的灵敏度。 诊断工具的灵敏度。

利用Ultralytics实施

"(《世界人权宣言》) ultralytics 库提供了强大的 Focal Loss 实现,可轻松集成到定制培训管道中。 自定义训练管道中。下面的示例演示了如何初始化损失函数并计算 预测对数与地面实况标签之间的误差。

import torch
from ultralytics.utils.loss import FocalLoss

# Initialize Focal Loss with a gamma of 1.5
criterion = FocalLoss(gamma=1.5)

# Example: Prediction logits (before activation) and Ground Truth labels (0 or 1)
preds = torch.tensor([[0.1], [2.5], [-1.0]], requires_grad=True)
targets = torch.tensor([[0.0], [1.0], [1.0]])

# Compute the loss
loss = criterion(preds, targets)
print(f"Focal Loss value: {loss.item():.4f}")

与其他概念的关系

将 Focal Loss 与损失函数图谱中的相关术语区分开来很有帮助:

  • 焦点损失与交叉熵损失: 交叉熵损失是 是对所有示例一视同仁的基准函数。Focal Loss 严格建立在 Cross-Entropy 的基础上,增加了 调节因子来解决不平衡问题。如果聚焦参数(gamma)设置为 0,焦点损耗将有效地 恢复到标准的交叉熵。
  • Focal Loss vs.IoU Loss:Focal Loss 解决的是分类问题(对象是什么?) 等功能 联合相交(IoU)及其 变体(GIoU、CIoU)等功能解决的是定位问题(物体在哪里?)现代探测器,如 YOLO11等现代检测器通常使用复合损失函数,将 用于类别预测的 Focal Loss 和用于边界框回归的IoU loss。 边界框回归。
  • 焦距损失与变焦损失: 变焦损失是对正反例子进行不对称处理的进一步演变 的进一步发展,它以非对称的方式处理正面和负面示例。它使用IoU 分数来权衡正例 优先考虑那些定位精度较高的例子,而标准焦距损失则对所有正例 一视同仁。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入