Découvrez comment Focal Loss résout le déséquilibre des classes dans l'apprentissage profond. Apprenez à l'implémenter avec Ultralytics pour vous concentrer sur les exemples difficiles et améliorer la précision du modèle.
La perte focale est une fonction objective spécialisée principalement utilisée dans l'apprentissage profond pour relever le défi du déséquilibre grave entre les classes . Dans de nombreuses tâches de vision par ordinateur, telles que la détection d'objets, le nombre d'exemples d'arrière-plan (échantillons négatifs) dépasse largement celui des objets d'intérêt (échantillons positifs). Les méthodes standard, telles que la perte d'entropie croisée largement utilisée perte d'entropie croisée, traitent toutes les erreurs de manière égale, ce qui conduit souvent le modèle à être submergé par le volume considérable de donnéesclassify . La perte focale modifie le calcul standard de la perte afin de réduire le poids de ces exemples faciles, forçant l' algorithme d'optimisation à concentrer sa capacité d'apprentissage sur les exemples « difficiles », c'est-à-direclassify rares etclassify qui sont cruciaux pour les performances du modèle .
L'innovation principale de Focal Loss réside dans sa capacité à ajuster de manière dynamique la pénalité attribuée à chaque échantillon en fonction de la confiance du modèle. Dans un scénario d'apprentissage supervisé classique , un détecteur peut être amené à évaluer des milliers d'emplacements potentiels dans une image. Comme la plupart de ces emplacements ne contiennent aucun objet, une fonction de perte standard accumule de nombreux petits signaux d'erreur provenant de ces négatifs faciles, qui peuvent noyer le signal précieux provenant des quelques instances positives.
La perte focale introduit un facteur de modulation qui réduit la contribution à la perte à mesure que la confiance dans la classe correcte augmente. Cela signifie que si un modèle est déjà sûr à 99 % qu'un patch d'arrière-plan est bien un arrière-plan, la perte pour ce patch est réduite à presque zéro. Par conséquent, les pondérations du modèle sont mises à jour principalement sur la base des échantillons mal classés ou de ceux pour lesquels le modèle est incertain. Cette approche ciblée est essentielle pour l'entraînement de détecteurs d'objets à une seule étape et hautement performants, tels que YOLO26, leur permettant d'atteindre une grande précision sans nécessiter d'étapes d'échantillonnage complexes.
La gestion des données d'entraînement déséquilibrées est essentielle pour déployer des systèmes d'IA robustes dans des environnements où la sécurité et la précision sont primordiales.
Le ultralytics La bibliothèque comprend des implémentations optimisées de fonctions de perte avancées pour prendre en charge
les modèles de pointe. Alors que le Plate-forme Ultralytics configure automatiquement
ces hyperparamètres pour un apprentissage optimal, les développeurs peuvent également accéder directement à ces composants pour des recherches personnalisées
.
L'exemple suivant montre comment initialiser Focal Loss à l'aide de la fonction ultralytics paquet utilitaire et
calculer l'erreur pour un ensemble de prédictions.
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss.
# The 'gamma' parameter controls the focusing strength (higher = more focus on hard examples).
criterion = FocalLoss(gamma=1.5)
# Example: Model predictions (logits) and binary Ground Truth labels
# requires_grad=True simulates model outputs that need backpropagation
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss value
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")
Comprendre où se situe la perte focale dans le paysage plus large de la mesure des erreurs aide à choisir la bonne stratégie pour des tâches spécifiques de vision par ordinateur.