Découvrez comment Focal Loss s'attaque au déséquilibre des classes dans la détection d'objets - en concentrant la formation sur des exemples difficiles pour améliorer la précision sur des ensembles de données déséquilibrés.
La perte focale est une fonction objective spécialisée principalement utilisée dans les tâches de vision par ordinateur pour relever le défi du déséquilibre extrême des classes pendant l'entraînement du modèle. Elle est particulièrement utile dans les scénarios de détection d'objets où le nombre d'exemples d'arrière-plan (échantillons négatifs) dépasse largement celui des objets d'intérêt (échantillons positifs). En ajustant dynamiquement la pénalité attribuée à chaque échantillon, la perte focale réduit efficacement le poids des exemples « faciles » , ceux que le modèle peut déjà classify un haut degré de confiance, et oblige le processus d'optimisation à se concentrer sur les exemples « difficiles » qui sont difficiles à classify. Cette approche ciblée empêche le grand nombre de négatifs faciles de submerger le signal d'entraînement, améliorant ainsi la précision du modèle sur les objets rares mais critiques .
Dans de nombreuses applications d'apprentissage profond (DL), en particulier les détecteurs d'objets en une seule étape, le processus d'apprentissage consiste à évaluer des milliers d'emplacements candidats dans une image. La majorité de ces emplacements ne contiennent aucun objet et sont facilement identifiables comme arrière-plan. Les fonctions standard telles que la perte de cross-entropie traitent toutes les erreurs de classification de manière égale. Par conséquent, l'erreur accumulée à partir de milliers d'échantillons d'arrière-plan faciles peut noyer le signal provenant des quelques échantillons positifs difficiles, ce qui conduit à un modèle biaisé en faveur de la classe majoritaire.
La perte focale modifie le calcul standard de la perte en introduisant un paramètre de focalisation, généralement désigné par le symbole gamma ($\gamma$). À mesure que la probabilité de la classe correcte augmente (ce qui signifie que l'exemple est « facile »), le facteur de modulation réduit la contribution à la perte à près de zéro. À l'inverse, pour les exemples mal classés ou incertains (cas « difficiles »), la perte reste importante. Ce mécanisme garantit que l' algorithme d'optimisation met à jour les pondérations du modèle en fonction des exemples qui nécessitent réellement une amélioration, plutôt que de simplement valider ce que le modèle sait déjà.
La capacité à traiter des ensembles de données déséquilibrés fait de Focal Loss une pierre angulaire des solutions d'IA modernes dans les domaines où la sécurité est essentielle et où une grande précision est requise.
Le ultralytics La bibliothèque comprend des implémentations optimisées de fonctions de perte pour prendre en charge l'entraînement
de modèles de pointe tels que YOLO26. Alors que la formation de haut niveau
est automatisée via le Plate-forme Ultralytics, les développeurs peuvent
accéder à des composants de perte spécifiques pour les pipelines personnalisés.
L'exemple suivant montre comment initialiser la perte focale et calculer l'erreur entre les scores de prédiction et les
étiquettes cibles à l'aide de la fonction ultralytics ensemble d'utilitaires.
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}")
Comprendre comment la perte focale s'inscrit dans le paysage plus large de la mesure des erreurs est utile pour choisir la bonne stratégie de formation.