Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Focal Loss

Focal loss масштабирует перекрёстную энтропию так, что простые примеры почти не влияют на обучение, а редкие и сложные определяют его ход. Рассматриваются формула, гамма, RetinaNet и варианты метода.

Фокальная функция потерь — это модифицированная функция потерь на основе перекрёстной энтропии, которая уменьшает вес примеров, уже хорошо классифицируемых моделью, чтобы во время обучения основное внимание уделялось сложным, ошибочно классифицированным примерам. Lin и соавторы представили её в 2017 году в работе Focal Loss for Dense Object Detection вместе с детектором RetinaNet, чтобы справиться с сильным дисбалансом между фоном и объектами в задаче обнаружения объектов. Сейчас её широко применяют в задачах классификации, где один класс значительно многочисленнее остальных.

Проблема дисбаланса#

Одноэтапные детекторы объектов классифицируют каждую кандидатную позицию на изображении, а RetinaNet оценивает около 100 000 таких позиций на изображение. Почти все они относятся к фону, который модель учится отбрасывать уже на ранних этапах обучения. При стандартной перекрёстной энтропии каждый простой отрицательный пример всё ещё добавляет небольшое значение функции потерь, а их огромное количество доминирует в общей функции потерь и её градиентах, заглушая сигналы от немногих позиций с объектами. Двухэтапные детекторы объектов решают эту проблему, отфильтровывая кандидатные области на этапе генерации предложений и выбирая фиксированное соотношение объектов и фона. Ранние одноэтапные детекторы использовали отбор сложных отрицательных примеров. Фокальная функция потерь устраняет дисбаланс непосредственно в самой функции потерь, поэтому для обучения можно использовать все кандидатные позиции без выборки.

Как работает фокальная функция потерь#

Обозначим p_t вероятность, которую модель присваивает правильному классу. Перекрёстная энтропия равна CE = -log(p_t), а фокальная функция потерь умножает её на модулирующий множитель:

FL = -α_t (1 - p_t)^γ log(p_t)

  • Параметр фокусировки γ (gamma): Определяет, как быстро уменьшается функция потерь для простых примеров. При γ = 0 фокальная функция потерь равна перекрёстной энтропии. Когда p_t приближается к 1, (1 - p_t)^γ стремится к 0, тогда как для ошибочно классифицированного примера с малым p_t сохраняется почти всё значение перекрёстной энтропии. При лучшем значении γ = 2, указанном в статье, пример, классифицированный с p_t = 0.9, получает функцию потерь в 100 раз меньше, чем при перекрёстной энтропии.
  • Вес балансировки α_t (alpha): Фиксированный вес для положительного класса и дополняющий его вес для отрицательного класса. В RetinaNet используется α = 0.25 при γ = 2. В статье также нормируют общую функцию потерь каждого изображения на число якорей, сопоставленных с объектами.

Функция sigmoid_focal_loss в torchvision реализует эту формулу. Значение alpha=-1 отключает вес балансировки, что позволяет отдельно увидеть влияние γ на простой, умеренно сложный и сложный положительные примеры:

import torch
import torch.nn.functional as F
from torchvision.ops import sigmoid_focal_loss

# Logits for three positive examples: easy, moderate, and hard
logits = torch.tensor([4.0, 1.0, -2.0])
targets = torch.ones(3)

# alpha=-1 turns off class weighting so only the gamma focusing term differs
bce = F.binary_cross_entropy_with_logits(logits, targets, reduction="none")
focal = sigmoid_focal_loss(logits, targets, alpha=-1, gamma=2.0, reduction="none")

for p, b, f in zip(logits.sigmoid(), bce, focal):
    print(f"p={p:.2f}  cross-entropy={b:.6f}  focal={f:.6f}  ratio={b / f:,.1f}x")

Фокальная функция потерь уменьшает значение для простого примера (p = 0.98) примерно в 3 091 раз, для умеренно сложного (p = 0.73) — в 13.8 раза, а для сложного (p = 0.12) — всего в 1.3 раза. В итоге сложный пример несёт почти весь обучающий сигнал.

Где применяется фокальная функция потерь#

Помимо RetinaNet, фокальная функция потерь и её варианты используются для обучения ветви классификации во многих плотных детекторах и детекторах на основе Transformer, включая модели семейства DETR, например Deformable DETR. При анализе медицинских изображений поражения часто занимают лишь небольшую часть пикселей, поэтому модели сегментации изображений часто сочетают фокальную функцию потерь с функцией потерь Dice, чтобы не пропускать небольшие изменения и повышать полноту. В Ultralytics тренер RT-DETR оценивает классы с помощью Varifocal Loss, а модуль ultralytics.utils.loss предоставляет класс FocalLoss со значениями по умолчанию gamma=1.5 и alpha=0.25.

  • Взвешивание классов: Взвешенная перекрёстная энтропия даёт каждому примеру редкого класса одинаковый фиксированный бонус, рассчитанный по частоте класса. Фокальная функция потерь взвешивает каждый пример в зависимости от его текущей сложности, поэтому веса меняются по мере обучения модели.
  • Отбор сложных отрицательных примеров: Оставляет только отрицательные примеры с наибольшими значениями функции потерь, отбрасывая остальные. Фокальная функция потерь использует все примеры и плавно уменьшает вес простых.
  • Varifocal Loss: Асимметричный вариант из VarifocalNet, который уменьшает вес только отрицательных примеров и обучает положительные примеры предсказывать оценку с учётом IoU. Поэтому уверенность класса также отражает качество локализации.
  • Фокальная функция потерь распределения (DFL): Функция потерь регрессии рамок из работы Generalized Focal Loss, в которой каждое ребро рамки рассматривается как дискретное вероятностное распределение. Она лишь разделяет название с фокальной функцией потерь и применяется для регрессии рамок.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения