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 conçue pour résoudre le problème du déséquilibre extrême des classes dans la formation à l'apprentissage automatique, en particulier dans le domaine de la vision par ordinateur. l'apprentissage automatique, en particulier dans le domaine de la vision par ordinateur. Dans de nombreux scénarios de détection d'objets, le nombre d'exemples Dans de nombreux scénarios de détection d'objets, le nombre d'exemples d'arrière-plan (négatifs) dépasse de loin le nombre d'objets d'intérêt (positifs). Les fonctions de perte standard peuvent Les fonctions de perte standard peuvent être submergées par le volume de ces exemples d'arrière-plan faciles à classify , ce qui empêche le modèle d'apprendre les exemples positifs plus difficiles. d'apprendre les exemples positifs, plus difficiles. La perte focale atténue ce problème en augmentant dynamiquement la perte en fonction de la confiance de la prédiction, ce qui permet de réduire efficacement la perte. la confiance de la prédiction, ce qui a pour effet de réduire la pondération des exemples faciles et de forcer le modèle à concentrer ses efforts de formation sur les exemples négatifs difficiles et les erreurs de classification. sur les négatifs difficiles et les objets mal classés.
La motivation première de Focal Loss est d'améliorer les performances des détecteurs d'objets à une étape, tels que les détecteurs d'objets à une étape. détecteurs d'objets en une étape, tels que les les premières versions de RetinaNet et les architectures modernes comme Ultralytics YOLO11. Dans ces systèmes, le détecteur balaie une image et génère des milliers d'emplacements candidats. Étant donné que la majeure partie d'une image est généralement constituée d'un arrière-plan, le rapport l'arrière-plan à l'objet peut souvent être de 1000:1 ou plus.
Sans intervention, l'effet cumulatif des petites erreurs provenant du nombre massif d'échantillons d'arrière-plan peut dominer les mises à jour du gradient pendant la phase de mise à jour du gradient. dominer les mises à jour du gradient pendant la la rétropropagation. Cela conduit l'algorithme d'optimisation algorithme d'optimisation à donner la priorité à la de tout classer comme arrière-plan pour minimiser l'erreur globale, plutôt que d'apprendre les caractéristiques nuancées des objets réels. des objets réels. La perte focale remodèle la courbe de perte standard afin de réduire la pénalité pour les exemples pour lesquels le modèle est déjà confiant, ce qui oriente l'algorithme d'optimisation vers la classification de l'arrière-plan. le modèle est déjà sûr de lui, orientant ainsi les les poids du modèle pour s'adapter aux cas difficiles.
La perte focale est une extension de la perte standard perte d'entropie croisée standard utilisée dans la classification binaire. Elle introduit un facteur de modulation qui diminue la contribution de la perte au fur et à mesure que la confiance dans la classe correcte augmente. Lorsqu'un modèle rencontre un exemple "facile", tel qu'une zone de ciel clair qu'il identifie correctement en tant qu'arrière-plan avec une forte probabilité, le facteur de modulation diminue au fur et à mesure que la confiance dans la classe correcte augmente. avec une forte probabilité, le facteur de modulation fait approcher la perte de zéro. Inversement, pour les exemples "difficiles où la prédiction du modèle est incorrecte ou incertaine, la perte reste significative.
Ce comportement est contrôlé par un paramètre de focalisation, souvent appelé gamma. En réglant ce paramètre, les scientifiques des données peuvent ajuster l'agressivité avec laquelle la fonction de perte pondère à la baisse les exemples bien classés. Cela permet une formation plus stable sur des données d'apprentissage fortement déséquilibrées. plus stable sur des données d'apprentissage très déséquilibrées, ce qui à une plus grande précision et à un meilleur rappel pour les classes rares.
La capacité à gérer les déséquilibres rend la perte focale essentielle dans les environnements de sécurité et de haute précision.
Le ultralytics fournit une implémentation robuste de Focal Loss qui peut être facilement intégrée dans des
dans des pipelines d'apprentissage personnalisés. L'exemple suivant montre comment initialiser la fonction de perte et calculer l'erreur entre les logits de prédiction et les étiquettes de vérité terrain.
l'erreur entre les logits de prédiction et les étiquettes de la vérité terrain.
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}")
Il est utile de distinguer la perte focale des termes apparentés dans le paysage des fonctions de perte :