Узнайте, как Focal Loss решает проблему дисбаланса классов при обнаружении объектов, фокусируя обучение на сложных примерах для повышения точности на несбалансированных наборах данных.
Focal Loss — это специализированная целевая функция, используемая в основном в задачах компьютерного зрения для решения проблемы крайнего дисбаланса классов во время обучения модели. Она особенно ценна в сценариях обнаружения объектов, где количество примеров фона (отрицательных образцов) значительно превышает количество интересующих объектов (положительных образцов). Путем динамического масштабирования штрафа, назначаемого каждому образцу, Focal Loss эффективно снижает вес «легких» — те, которые модель уже может classify высокой степенью уверенности — и заставляет процесс оптимизации сосредоточиться на «сложных» примерах, которые трудно classify. Этот целенаправленный подход предотвращает перегрузку сигнала обучения огромным количеством легких отрицательных примеров, тем самым улучшая точность модели в отношении редких, но критически важных объектов.
Во многих приложениях глубокого обучения (DL), особенно в одноэтапных детекторах объектов, процесс обучения включает в себя оценку тысяч потенциальных мест на изображении. Большинство из этих мест не содержат объектов и легко идентифицируются как фон. Стандартные функции, такие как Cross-Entropy Loss, одинаково обрабатывают все ошибочные классификации. В результате накопленная ошибка от тысяч простых фоновых образцов может заглушить сигнал от нескольких сложных положительных образцов, что приводит к созданию модели, смещенной в сторону большинства классов.
Focal Loss модифицирует стандартный расчет потери, вводя параметр фокусировки, обычно обозначаемый как гамма ($\gamma$). По мере увеличения вероятности правильного класса (то есть, если пример «легкий»), модулирующий фактор уменьшает вклад потери почти до нуля. И наоборот, для неправильно классифицированных или неопределенных примеров («сложных» случаев) потери остаются значительными. Этот механизм гарантирует, что алгоритм оптимизации обновляет веса модели на основе примеров, которые действительно требуют улучшения, а не просто подтверждает то, что модель уже знает.
Способность обрабатывать несбалансированные наборы данных делает Focal Loss краеугольным камнем современных решений искусственного интеллекта в критически важных для безопасности и высокоточных областях.
Сайт ultralytics библиотека включает оптимизированные реализации функций потерь для поддержки обучения
современных моделей, таких как YOLO26. В то время как обучение высокого уровня
автоматизировано с помощью Платформа Ultralytics, разработчики могут
получить доступ к определенным компонентам потерь для пользовательских трубопроводов.
Следующий пример демонстрирует, как инициализировать Focal Loss и вычислить ошибку между оценками предсказания и
целевыми метками с помощью 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}")
Понимание того, как Focal Loss вписывается в более широкий контекст измерения ошибок, помогает выбрать правильную стратегию обучения.