Descubra cómo Focal Loss aborda el desequilibrio de clases en la detección de objetos, centrando el entrenamiento en ejemplos difíciles para mejorar la precisión en conjuntos de datos desequilibrados.
La Pérdida Focal es una función objetivo especializada diseñada para abordar el problema del desequilibrio extremo de clases en el entrenamiento del aprendizaje automático, especialmente en el campo de la visión por ordenador. aprendizaje automático, especialmente en el campo de la visión por ordenador. En muchos escenarios de detección de objetos, el número de ejemplos de fondo (negativos) supera con creces el número de objetos de interés (positivos). Las funciones de pérdida estándar pueden de estos ejemplos de fondo fáciles de classify , dificultando la capacidad del modelo para aprender los ejemplos positivos más difíciles. del modelo para aprender los ejemplos positivos más difíciles. Focal Loss mitiga esta situación escalando dinámicamente la pérdida en función de la confianza de la predicción, lo que reduce de forma efectiva la pérdida en función de la confianza de la predicción. la confianza de la predicción, lo que reduce la ponderación de los ejemplos fáciles y obliga al modelo a centrar sus esfuerzos de entrenamiento en los negativos difíciles y los errores de clasificación. a centrar sus esfuerzos de entrenamiento en los negativos difíciles y los objetos mal clasificados.
La principal motivación de la Pérdida Focal es mejorar el rendimiento de detectores de objetos de una etapa, como las las primeras versiones de RetinaNet y las arquitecturas modernas como Ultralytics YOLO11. En estos sistemas, el detector escanea una imagen y genera miles de ubicaciones candidatas. Dado que la mayor parte de una imagen suele ser fondo, la proporción de de fondo a objeto puede ser a menudo de 1000:1 o superior.
Sin intervención, el efecto acumulativo de los pequeños errores procedentes del enorme número de muestras de fondo puede dominar las actualizaciones del gradiente la retropropagación. Esto hace que el algoritmo de optimización priorice simplemente clasificar todo como fondo para minimizar el error global, en lugar de aprender las características matizadas de los objetos reales. objetos reales. Pérdida focal modifica la curva de pérdida estándar para reducir la penalización de los ejemplos en los que el modelo ya confía, dirigiendo así el algoritmo de optimización hacia la clasificación de los objetos. de los ejemplos en los que el modelo los pesos del modelo para ajustarse a los casos difíciles.
La pérdida focal es una extensión de la pérdida pérdida de entropía cruzada utilizada en la clasificación binaria. En introduce un factor modulador que reduce la contribución de la pérdida a medida que aumenta la confianza en la clase correcta. Cuando un modelo encuentra un ejemplo "fácil" -como una zona despejada del cielo que identifica correctamente como fondo con una alta probabilidad-, el factor de modulación disminuye la contribución de la pérdida a medida que aumenta la confianza en la clase correcta. fondo con una alta probabilidad, el factor modulador hace que la pérdida se acerque a cero. Por el contrario, en los ejemplos "difíciles en los que la predicción del modelo es incorrecta o incierta, la pérdida sigue siendo significativa.
Este comportamiento se controla mediante un parámetro de enfoque, a menudo denominado gamma. Al ajustar este parámetro, los científicos de datos pueden ajustar la agresividad con la que la función de pérdida resta peso a los ejemplos bien clasificados. Esto permite un estables con datos de entrenamiento muy desequilibrados, lo que a una mayor precisión y recuperación de clases poco comunes.
La capacidad de gestionar el desequilibrio hace que Focal Loss sea esencial en entornos críticos para la seguridad y de alta precisión.
En ultralytics proporciona una implementación robusta de Focal Loss que puede integrarse fácilmente en
en líneas de entrenamiento personalizadas. El siguiente ejemplo muestra cómo inicializar la función de pérdida y calcular el error entre los logaritmos de predicción y las etiquetas reales.
error entre los logits de predicción y las etiquetas reales.
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}")
Resulta útil distinguir la pérdida focal de los términos relacionados en el panorama de las funciones de pérdida: