Einblicke in die Modellbewertung und das Fine-Tuning#
Nach dem Training eines YOLO-Modells besteht der nächste Schritt darin, dessen Leistung zu messen und es fein abzustimmen, um Lücken zu schließen. Die Evaluierung nutzt Metriken wie mAP und IoU, um die Genauigkeit zu quantifizieren, während die Feinabstimmung Trainingsparameter anpasst, um Schwachstellen zu beheben, damit das Modell das Projektziel erreicht. Dieser Leitfaden erklärt die wichtigsten Evaluierungsmetriken, wie man sie liest, und die Techniken zur Feinabstimmung, die die Fähigkeiten deines Modells verbessern.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
Evaluierung und Feinabstimmung stehen am Ende des Workflows für Computer-Vision-Projekte, sobald das Training läuft und du sicherstellen musst, dass das Modell genau, effizient und bereit für die Bereitstellung ist.
Wichtige Evaluierungsmetriken#
Verschiedene Metriken messen, wie effektiv ein Modell arbeitet. Diese Leistungsmetriken liefern klare, numerische Einblicke, die Verbesserungen anleiten, um sicherzustellen, dass das Modell seine beabsichtigten Ziele erreicht.
Konfidenzwert#
Der Konfidenzwert stellt die Sicherheit des Modells dar, dass ein erkanntes Objekt zu einer bestimmten Klasse gehört. Er reicht von 0 bis 1, wobei höhere Werte auf eine größere Sicherheit hinweisen. Der Konfidenzwert hilft dabei, Vorhersagen zu filtern; nur Erkennungen mit Konfidenzwerten über einem festgelegten Schwellenwert gelten als gültig.
Wenn du bei der Inferenz keine Vorhersagen siehst und bereits alles andere überprüft hast, versuche, den Konfidenz-Schwellenwert zu senken. Manchmal ist der Schwellenwert zu hoch, was dazu führt, dass das Modell gültige Vorhersagen ignoriert. Wenn du ihn senkst, kann das Modell mehr Möglichkeiten in Betracht ziehen. Dies entspricht möglicherweise nicht deinen finalen Projektzielen, aber es ist ein guter Weg, um zu sehen, wozu das Modell fähig ist, und um zu entscheiden, wie du es feinabstimmen kannst.
Intersection over Union#
Intersection over Union (IoU) ist eine Metrik in der Objekterkennung, die misst, wie gut die vorhergesagte Bounding Box mit der Ground-Truth-Bounding-Box überlappt. IoU-Werte liegen zwischen 0 und 1, wobei 1 für eine perfekte Übereinstimmung steht. IoU ist essenziell, da sie misst, wie genau die vorhergesagten Grenzen mit den tatsächlichen Objektgrenzen übereinstimmen.
Mean Average Precision#
Mean Average Precision (mAP) misst die Gesamtleistung eines Objekterkennungsmodells. Sie betrachtet die Präzision der Erkennung jeder Objektklasse, mittelt diese Werte und ergibt eine einzige Zahl, die zeigt, wie genau das Modell Objekte erkennen und klassifizieren kann.
Zwei mAP-Metriken werden am häufigsten berichtet:
- mAP@.5: Misst die durchschnittliche Präzision bei einem einzigen IoU-Schwellenwert von 0,5. Diese Metrik prüft, ob das Modell Objekte bei einer lockereren Genauigkeitsanforderung korrekt finden kann. Sie konzentriert sich darauf, ob das Objekt grob an der richtigen Stelle ist, ohne perfekte Platzierung, und hilft dabei zu sehen, ob das Modell generell gut darin ist, Objekte zu entdecken.
- mAP@.5:.95: Mittelt die mAP-Werte, die bei mehreren IoU-Schwellenwerten von 0.5 bis 0.95 in 0.05-Schritten berechnet wurden. Diese Metrik ist detaillierter und strenger. Sie bietet ein umfassenderes Bild davon, wie genau das Modell Objekte bei unterschiedlichen Strengegraden finden kann und ist besonders nützlich für Anwendungen, die eine präzise Objekterkennung erfordern.
Andere mAP-Metriken umfassen mAP@0.75, das einen strengeren IoU-Schwellenwert von 0.75 verwendet, sowie mAP@small, medium und large, die die Präzision über Objekte unterschiedlicher Größe hinweg bewerten.
Evaluierung eines YOLO26 Modells#
Du kannst ein trainiertes YOLO26-Modell mit dem Validierungsmodus evaluieren. Einen tieferen Einblick in die Berechnung und Interpretation der einzelnen Metriken findest du im Leitfaden zu den YOLO26-Leistungsmetriken.
Umgang mit variablen Bildgrößen#
Die Evaluierung deines Modells an Bildern unterschiedlicher Größe hilft dir, seine Leistung auf verschiedenen Datensätzen zu verstehen. Der Validierungsparameter rect=true gruppiert Bilder nach Seitenverhältnis und füllt jeden Batch auf die kleinste passende Form auf, sodass rechteckige Bilder evaluiert werden, ohne in ein Quadrat gezwungen zu werden.
Der Parameter imgsz legt die Bildgröße für die Validierung fest, angewendet als Quadrat. Wenn du ihn nicht explizit festlegst, verwendet YOLO26 den in den Modelleinstellungen gespeicherten Wert (640 für die offiziellen vortrainierten Modelle oder die Größe, mit der ein benutzerdefinierter Checkpoint trainiert wurde). Mit rect=true beschränkt YOLO26 die längere Seite auf imgsz und füllt die kürzere Seite auf ein Vielfaches der Schrittweite auf, wodurch das Seitenverhältnis erhalten bleibt. Passe imgsz basierend auf den Dimensionen deines Datensatzes und dem verfügbaren GPU-Speicher an.
Zugriff auf YOLO26-Metriken#
Um die Leistung deines Modells im Detail zu verstehen, kannst du mit ein paar Zeilen Python auf spezifische Evaluierungsmetriken zugreifen. Der folgende Schnipsel lädt ein Modell, führt eine Validierung durch und gibt die nützlichsten Metriken aus.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)Beachte, dass fitness() eine Methode ist und mit Klammern aufgerufen werden muss, während Metriken wie map, map50 und mp Eigenschaften sind, auf die direkt zugegriffen wird.
Das Attribut results.box.image_metrics ist ein Wörterbuch pro Bild mit dem Bilddateinamen als Schlüssel, das precision, recall, f1, tp, fp und fn bei IoU 0.5 für jedes Bild enthält. Vorverarbeitung, Inferenz, Loss und Nachbearbeitungszeiten werden separat im Wörterbuch results.speed gemeldet. Zusammen ermöglichen diese es dir, genau zu bestimmen, bei welchen Bildern das Modell Schwierigkeiten hat, und entsprechend fein abzustimmen.
Fine-Tuning deines Modells#
Fine-Tuning nimmt ein vortrainiertes Modell und passt dessen Parameter an, um die Leistung bei einer spezifischen Aufgabe oder einem Datensatz zu verbessern. Auch als Modell-Nachtraining bekannt, ermöglicht es dem Modell, Ergebnisse für die Daten, auf die es in realen Anwendungen treffen wird, besser zu verstehen und vorherzusagen. Basierend auf deinen Evaluierungsergebnissen trainierst du das Modell nach, um optimale Ergebnisse zu erzielen, indem du einige Schlüsselparameter und -techniken genau beachtest.
Start mit einer höheren Lernrate#
Während des normalen Trainings beginnt die Lernrate niedrig und steigt über die ersten Epochen an, um frühe Updates zu stabilisieren. Bei der Feinabstimmung bringt das Modell bereits nützliche Features aus dem Vortraining mit, sodass du dieses Warmup überspringen und sofort mit der Anpassung an deine neuen Daten beginnen kannst.
Setze das Trainingsargument warmup_epochs auf 0 in model.train(), um die Warmup-Phase zu deaktivieren. Das Training läuft dann ab den vortrainierten Gewichten mit der konfigurierten Basis-Lernrate (lr0) weiter, anstatt hochzufahren, und passt sich so an die Nuancen deiner neuen Daten an.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)Bild-Tiling für kleine Objekte#
Bildkachelung kann die Erkennungsgenauigkeit für kleine Objekte verbessern. Durch das Aufteilen größerer Bilder in kleinere Segmente, wie das Aufteilen von 1280x1280-Bildern in mehrere 640x640-Segmente, behältst du die ursprüngliche Auflösung bei und lässt das Modell aus hochauflösenden Fragmenten lernen. Ultralytics unterstützt dies zur Inferenzzeit durch SAHI-gekachelte Inferenz. Achte beim Training auf gekachelten Bildern darauf, deine Labels für jedes neue Segment korrekt anzupassen.
Fazit#
Evaluierung und Feinabstimmung machen aus einem trainierten Modell ein zuverlässiges, einsatzbereites Modell: Metriken wie mAP und IoU decken Schwachstellen auf, und gezielte Parameteränderungen beheben sie. Starte mit dem Validierungsmodus, um dein Modell zu benchmarken, wende dann die obigen Feinabstimmungstechniken an und iteriere weiter mit neuen Parametern, Techniken und Datensätzen. Wenn dabei Fragen aufkommen, frage die Community im Ultralytics GitHub-Repository oder auf dem Ultralytics Discord-Server.
FAQ#
Was sind die wichtigsten Metriken zur Bewertung der YOLO26-Modellleistung?#
Um die Leistung des YOLO26-Modells zu bewerten, gehören Confidence Score, Intersection over Union (IoU) und Mean Average Precision (mAP) zu den wichtigen Metriken. Der Confidence Score misst die Sicherheit des Modells für jede erkannte Objektklasse. IoU bewertet, wie gut die vorhergesagte Bounding Box mit der Ground Truth überlappt. Mean Average Precision (mAP) aggregiert Präzisionswerte über Klassen hinweg, wobei mAP@.5 und mAP@.5:.95 zwei gängige Typen für unterschiedliche IoU-Schwellenwerte sind. Erfahre mehr über diese Metriken in unserem Leitfaden zu den YOLO26-Leistungsmetriken.
Wie kann ich ein vortrainiertes YOLO26-Modell für meinen spezifischen Datensatz feinabstimmen?#
Das Fine-Tuning eines vortrainierten YOLO26-Modells beinhaltet die Anpassung seiner Parameter, um die Leistung bei einer spezifischen Aufgabe oder einem bestimmten Datensatz zu verbessern. Evaluiere dein Modell zunächst anhand von Metriken und setze dann das Trainingsargument warmup_epochs auf 0 in model.train(), damit die Lernrate sofort beim konfigurierten Basiswert beginnt, anstatt hochzufahren. Während der Evaluierung helfen Parameter wie rect=true, verschiedene Bildgrößen effektiv zu verarbeiten. Weitere detaillierte Anweisungen findest du in unserem Abschnitt zum Thema fine-tuning your model.
Wie kann ich beim Bewerten meines YOLO26-Modells mit variablen Bildgrößen umgehen?#
Um variable Bildgrößen während der Evaluierung zu handhaben, verwende den Parameter rect=true in YOLO26, der Bilder nach Seitenverhältnis gruppiert und jeden Batch auffüllt, anstatt jedes Bild in ein Quadrat zu zwingen. Der Parameter imgsz legt die Bildgröße für die Validierung fest; wenn du ihn nicht überschreibst, verwendet YOLO26 den gespeicherten Wert des Modells (640 für die offiziellen vortrainierten Modelle). Passe imgsz an deinen Datensatz und deinen GPU-Speicher an. Besuche für weitere Details unseren Abschnitt zum Umgang mit variablen Bildgrößen.
Welche praktischen Schritte kann ich unternehmen, um die Mean Average Precision für mein YOLO26-Modell zu verbessern?#
Die Verbesserung der Mean Average Precision (mAP) für ein YOLO26-Modell umfasst mehrere Schritte:
- Hyperparameter anpassen: Experimentiere mit verschiedenen Lernraten, Batch-Größen und Bildaugmentationen.
- Datenaugmentation: Verwende Techniken wie Mosaic und MixUp, um diverse Trainingsstichproben zu erstellen.
- Image Tiling: Teile größere Bilder in kleinere Kacheln auf, um die Erkennungsgenauigkeit für kleine Objekte zu verbessern.
Sieh dir unseren detaillierten Abschnitt zur Feinabstimmung deines Modells für spezifische Strategien an.
Wie greife ich in Python auf YOLO26-Modellbewertungsmetriken zu?#
Du kannst nach Durchführung der Validierung mit Python auf die Metriken zur YOLO26 Modellevaluierung zugreifen:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation
results = model.val(data="coco8.yaml")
# Access key metrics
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean average precision at IoU=0.50:0.95:", results.box.map)
print("Mean recall:", results.box.mr)
print("Class indices evaluated:", results.box.ap_class_index)Die Analyse dieser Metriken hilft dir, dein YOLO26-Modell fein abzustimmen und zu optimieren. Für einen tieferen Einblick schau dir unseren Leitfaden zu YOLO-Leistungsmetriken an.