Entdecken Sie, wie Focal Loss die Unausgewogenheit der Klassen bei der Objekterkennung behebt, indem es das Training auf schwierige Beispiele konzentriert, um die Genauigkeit in unausgewogenen Datensätzen zu verbessern.
Focal Loss ist eine spezielle Zielfunktion, die entwickelt wurde, um das Problem des extremen Klassenungleichgewichts beim maschinellen maschinellem Lernen, insbesondere im Bereich der Computer Vision. In vielen Objekterkennungsszenarien übersteigt die Anzahl der Hintergrundbeispiele (Negative) die Anzahl der Objekte von Interesse (Positive) bei weitem. Standard-Verlustfunktionen können durch die schiere Menge dieser leicht zu classify Hintergrundbeispiele überwältigt werden, was die Fähigkeit des Modells, die schwierigeren positiven Beispiele zu lernen, beeinträchtigt. die schwierigeren, positiven Beispiele zu lernen. Focal Loss entschärft dieses Problem, indem es den Verlust dynamisch auf der Grundlage der Zuverlässigkeit der Vorhersage skaliert. der Vorhersage dynamisch skaliert, so dass die einfachen Beispiele weniger stark gewichtet werden und das Modell gezwungen ist, sich beim Training auf schwierige Negativbeispiele und falsch klassifizierte Objekte zu konzentrieren.
Die Hauptmotivation hinter Focal Loss ist die Verbesserung der Leistung von einstufigen Objektdetektoren, wie die frühen Versionen von RetinaNet und modernen Architekturen wie Ultralytics YOLO11. Bei diesen Systemen scannt der Detektor ein Bild und generiert Tausende von Standortkandidaten. Da der größte Teil eines Bildes in der Regel Hintergrund ist, kann das Verhältnis von Hintergrund zu Objekt oft 1000:1 oder höher sein.
Ohne Intervention kann der kumulative Effekt der kleinen Fehler aus der großen Anzahl von Hintergrundproben die Gradientenaktualisierungen während der Backpropagation dominieren. Dies führt dazu, dass der Optimierungsalgorithmus dazu, einfach alles alles als Hintergrund zu klassifizieren, um den Gesamtfehler zu minimieren, anstatt die nuancierten Merkmale der eigentlichen Objekte. Focal Loss formt die Standardverlustkurve so um, dass die Strafe für Beispiele, die das Modell bereits kennt, reduziert wird. bereits vertraut ist, und lenkt so die Modellgewichte für die schwierigen Fälle anzupassen.
Focal Loss ist eine Erweiterung des Standard Cross-Entropy Loss, der in der binären Klassifikation verwendet wird. Sie führt einen modulierenden Faktor ein, der den Verlustbeitrag mit zunehmendem Vertrauen in die richtige Klasse abschwächt. Wenn ein Modell auf ein "einfaches" Beispiel stößt - z. B. einen klaren Himmelsbereich, den es mit hoher Wahrscheinlichkeit korrekt als Hintergrund identifiziert, drückt der modulierende Faktor den Verlust gegen Null. Umgekehrt gilt für "schwierige" Beispielen, bei denen die Vorhersage des Modells falsch oder unsicher ist, bleibt der Verlust erheblich.
Dieses Verhalten wird durch einen Fokussierungsparameter gesteuert, der oft als Gamma bezeichnet wird. Durch die Einstellung dieses Parameters können Datenwissenschaftler einstellen, wie aggressiv die Verlustfunktion gut klassifizierte Beispiele heruntergewichtet. Dies ermöglicht ein stabileres Training auf stark unausgewogenen Trainingsdaten, was zu zu höherer Genauigkeit und Wiedererkennung für seltene Klassen.
Die Fähigkeit, mit Ungleichgewicht umzugehen, macht Focal Loss in sicherheitskritischen und hochpräzisen Umgebungen unverzichtbar.
Die ultralytics Bibliothek bietet eine robuste Implementierung von Focal Loss, die sich leicht in
Trainings-Pipelines integriert werden kann. Das folgende Beispiel zeigt, wie man die Verlustfunktion initialisiert und den
Fehler zwischen den Vorhersage-Logits und den tatsächlichen Beschriftungen.
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}")
Es ist hilfreich, Focal Loss von verwandten Begriffen in der Verlustfunktionslandschaft zu unterscheiden: