Узнайте, как Focal Loss решает проблему дисбаланса классов при обнаружении объектов, фокусируя обучение на сложных примерах для повышения точности на несбалансированных наборах данных.
Focal Loss - это специализированная объективная функция, разработанная для решения проблемы экстремального дисбаланса классов в машинном обучении. обучении, особенно в области компьютерного зрения. Во многих сценариях обнаружения объектов количество фоновых примеров (отрицательных) значительно превышает количество объектов, представляющих интерес (положительных). Стандартные функции потерь могут перегружены огромным количеством легко classify фоновых примеров, что мешает модели обучаться более сложным положительным примерам. более сложных положительных примеров. Функция Focal Loss смягчает эту проблему, динамически масштабируя потери в зависимости от уверенности предсказания, эффективно снижая вес легких примеров и заставляя модель сосредоточить свои усилия по обучению на сложных отрицательных примерах и неправильно классифицированных объектах.
Основная цель создания Focal Loss заключается в улучшении производительности одноэтапных детекторов объектов, таких как ранние версии RetinaNet и современные архитектуры, такие как Ultralytics YOLO11. В этих системах детектор сканирует изображение и генерирует тысячи мест-кандидатов. Поскольку большую часть изображения обычно составляет фон, соотношение фона к объекту часто может составлять 1000:1 и выше.
Без вмешательства суммарный эффект малых ошибок от огромного количества фоновых образцов может доминировать над обновлениями градиента во время обратного распространения. Это приводит к тому, что алгоритм оптимизации отдает приоритет простой классифицировать все как фон, чтобы минимизировать общую ошибку, а не изучать тонкие особенности реальных объектов. Focal Loss изменяет стандартную кривую потерь, чтобы уменьшить штраф для примеров, в которых модель уже уверена. в которых модель уже уверена, тем самым направляя весовые коэффициенты модели для корректировки сложных случаев.
Фокальная потеря является расширением стандартной Cross-Entropy Loss, используемого в бинарной классификации. Он вводит модулирующий фактор, который уменьшает вклад потерь по мере увеличения уверенности в правильности класса. Когда модель встречает "легкий" пример - например, чистый участок неба, который она правильно идентифицирует как фон с высокой вероятностью, модулирующий фактор приближает потери к нулю. И наоборот, для "трудных" примерах, где предсказание модели неверно или неопределенно, потери остаются значительными.
Это поведение контролируется параметром фокусировки, часто обозначаемым как gamma. Настраивая этот параметр, специалисты по обработке данных могут регулировать, насколько агрессивно функция потерь снижает вес хорошо классифицированных примеров. Это позволяет более стабильно обучение на сильно несбалансированных обучающих данных, что приводит к к более высокой точности и запоминанию редких классов.
Способность справляться с дисбалансом делает Focal Loss незаменимым в условиях критической безопасности и высокой точности.
Сайт 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 от родственных терминов в ландшафте функций потерь: