了解 Focal Loss 如何解决物体检测中的类不平衡问题--将训练重点放在困难示例上,从而提高不平衡数据集的准确性。
焦点损失是一种专门的优化目标函数,主要应用于计算机视觉任务中,旨在解决模型训练过程中极端类不平衡的难题。该方法在目标检测场景中尤为有效——当背景样本(负样本)数量远超目标对象(正样本)时,通过动态调整每个样本的惩罚权重,焦点损失能有效降低"简单"样本(即模型已能高置信度分类的样本)的权重,迫使优化过程聚焦于难以分类的"困难"样本。这种定向策略避免了海量简单负样本淹没训练过程,确保模型在实际应用中仍能准确识别复杂场景。 ——即模型已能classify 样本——并迫使优化过程聚焦于难以classify"困难"样本。这种定向策略避免了海量易判负样本淹没训练信号,从而提升模型对稀疏但关键目标的识别精度。
在许多深度学习(DL)应用中, 特别是单阶段目标检测器, 训练过程需要评估图像中数千个候选位置。其中绝大多数位置 不包含目标物体,可轻易识别为背景。诸如交叉熵损失等标准函数 会将所有误分类等同对待。 因此,数千个简单背景样本累积的误差会淹没少数困难正样本的信号,导致模型产生多数类偏向。
焦点损失通过引入聚焦参数(通常记为γ)来修改标准损失计算。当正确类别的概率增加(即样本属于"简单"类别)时,调制因子会将损失贡献值降低至近乎零。 相反地,对于误判或不确定的样本 ("困难"案例),损失值仍保持显著。该机制确保优化算法 根据真正需要改进的样本更新模型权重, 而非简单验证模型已掌握的知识。
处理不平衡数据集的能力使焦点损失成为现代人工智能解决方案在安全关键和高精度领域的基石。
"(《世界人权宣言》) ultralytics 该库包含损失函数的优化实现,以支持训练
诸如 YOLO26虽然高级培训通过 Ultralytics 平台开发人员可以访问特定损失组件,用于自定义管道。
以下示例演示了如何初始化焦点损失,并使用
计算预测分数与目标标签之间的误差。 ultralytics 实用工具包。
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss with a standard gamma value
# Gamma=1.5 aggressively down-weights easy examples
criterion = FocalLoss(gamma=1.5)
# Example: Predictions (logits) and binary Ground Truth labels
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")
理解焦散损耗在更广泛的误差测量体系中的定位,有助于选择正确的训练策略。
.webp)
