Modellvalidierung mit Ultralytics YOLO
EinfĂŒhrung
Die Validierung ist ein wichtiger Schritt in der Pipeline des maschinellen Lernens, mit dem du die QualitÀt deiner trainierten Modelle bewerten kannst. Der Validierungsmodus in Ultralytics YOLOv8 bietet eine Reihe von robusten Werkzeugen und Metriken, um die Leistung deiner Objekterkennungsmodelle zu bewerten. In diesem Leitfaden erfÀhrst du, wie du den Val-Modus effektiv nutzen kannst, um sicherzustellen, dass deine Modelle sowohl genau als auch zuverlÀssig sind.
Pass auf: Ultralytics Modi Tutorial: Validierung
Warum mit Ultralytics validierenYOLO?
Hier erfÀhrst du, warum es von Vorteil ist, den Val-Modus von YOLOv8 zu verwenden:
- PrÀzision: Erhalte genaue Messwerte wie mAP50, mAP75 und mAP50-95, um dein Modell umfassend zu bewerten.
- Bequemlichkeit: Nutze die integrierten Funktionen, die sich die Trainingseinstellungen merken und so den Validierungsprozess vereinfachen.
- FlexibilitĂ€t: Validiere dein Modell mit denselben oder unterschiedlichen DatensĂ€tzen und BildgröĂen.
- Hyperparameter-Tuning: Nutze die Validierungsmetriken, um dein Modell fĂŒr eine bessere Leistung fein abzustimmen.
Hauptmerkmale des Val-Modus
Dies sind die bemerkenswerten Funktionen, die der Val-Modus von YOLOv8 bietet:
- Automatisierte Einstellungen: Die Modelle merken sich ihre Trainingskonfigurationen fĂŒr eine einfache Validierung.
- Multimetrische UnterstĂŒtzung: Bewerte dein Modell anhand einer Reihe von Genauigkeitsmetriken.
- CLI und Python API: WĂ€hle zwischen der Befehlszeilenschnittstelle und der Python API, je nachdem, was du fĂŒr die Validierung bevorzugst.
- DatenkompatibilitÀt: Funktioniert nahtlos mit DatensÀtzen, die in der Trainingsphase verwendet wurden, sowie mit benutzerdefinierten DatensÀtzen.
Tipp
- YOLOv8 Modelle merken sich automatisch ihre Trainingseinstellungen, so dass du ein Modell bei gleicher BildgröĂe und auf dem Originaldatensatz leicht validieren kannst mit nur
yolo val model=yolov8n.pt
odermodel('yolov8n.pt').val()
Verwendungsbeispiele
Validiere die Genauigkeit des trainierten YOLOv8n Modells auf dem COCO8-Datensatz. Es muss kein Argument ĂŒbergeben werden, da die model
behÀlt es die Ausbildung data
und Argumente als Modellattribute. Eine vollstÀndige Liste der Exportargumente findest du im Abschnitt Argumente weiter unten.
Beispiel
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # load an official model
model = YOLO('path/to/best.pt') # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
Argumente fĂŒr YOLO Modellvalidierung
Bei der Validierung von YOLO Modellen können mehrere Argumente fein abgestimmt werden, um den Bewertungsprozess zu optimieren. Diese Argumente steuern Aspekte wie die GröĂe des Eingabebildes, die Stapelverarbeitung und die Leistungsschwellen. Im Folgenden findest du eine detaillierte AufschlĂŒsselung der einzelnen Argumente, damit du deine Validierungseinstellungen effektiv anpassen kannst.
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
data |
str |
None |
Gibt den Pfad zur Dataset-Konfigurationsdatei an (z. B., coco8.yaml ). Diese Datei enthÀlt Pfade zu den Validierungsdaten, Klassennamen und die Anzahl der Klassen. |
imgsz |
int |
640 |
Legt die GröĂe der Eingabebilder fest. Alle Bilder werden vor der Verarbeitung auf diese GröĂe angepasst. |
batch |
int |
16 |
Legt die Anzahl der Bilder pro Stapel fest. verwenden -1 fĂŒr AutoBatch, das sich automatisch an die VerfĂŒgbarkeit von GPU-Speicher anpasst. |
save_json |
bool |
False |
Wenn True speichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse oder Integration in andere Tools. |
save_hybrid |
bool |
False |
Wenn True speichert eine hybride Version von Labels, die die ursprĂŒnglichen Annotationen mit zusĂ€tzlichen Modellvorhersagen kombiniert. |
conf |
float |
0.001 |
Legt die minimale Vertrauensschwelle fĂŒr Erkennungen fest. Erkennungen, deren Konfidenz unter diesem Schwellenwert liegt, werden verworfen. |
iou |
float |
0.6 |
Legt den Schwellenwert fĂŒr die ĂberschneidungsunterdrĂŒckung (IoU) fĂŒr die Nicht-Maximum-UnterdrĂŒckung (NMS) fest. Hilft dabei, doppelte Erkennungen zu reduzieren. |
max_det |
int |
300 |
Begrenzt die maximale Anzahl der Erkennungen pro Bild. NĂŒtzlich in dichten Szenen, um ĂŒbermĂ€Ăige Erkennungen zu vermeiden. |
half |
bool |
True |
Ermöglicht Berechnungen mit halber Genauigkeit (FP16), wodurch der Speicherverbrauch reduziert und die Geschwindigkeit bei minimalen Auswirkungen auf die Genauigkeit erhöht werden kann. |
device |
str |
None |
Gibt das GerĂ€t fĂŒr die Validierung an (cpu , cuda:0 , etc.). Ermöglicht FlexibilitĂ€t bei der Nutzung von CPU- oder GPU-Ressourcen. |
dnn |
bool |
False |
Wenn True verwendet das OpenCV DNN-Modul fĂŒr die ONNX Modellinferenz und bietet damit eine Alternative zu PyTorch Inferenzmethoden. |
plots |
bool |
False |
Bei der Einstellung auf True erstellt und speichert Diagramme der Vorhersagen im Vergleich zur Basiswahrheit, um die Leistung des Modells visuell zu bewerten. |
rect |
bool |
False |
Wenn True verwendet die rechteckige Inferenz fĂŒr die Stapelverarbeitung, wodurch das AuffĂŒllen reduziert und die Geschwindigkeit und Effizienz potenziell erhöht wird. |
split |
str |
val |
Bestimmt die Aufteilung des Datensatzes fĂŒr die Validierung (val , test , oder train ). Ermöglicht FlexibilitĂ€t bei der Auswahl des Datensegments fĂŒr die Leistungsbewertung. |
Jede dieser Einstellungen spielt eine wichtige Rolle im Validierungsprozess und ermöglicht eine anpassbare und effiziente Bewertung der YOLO Modelle. Wenn du diese Parameter an deine spezifischen BedĂŒrfnisse und Ressourcen anpasst, kannst du das beste Gleichgewicht zwischen Genauigkeit und Leistung erreichen.
Beispiel Validierung mit Argumenten
Die folgenden Beispiele zeigen die YOLO Modellvalidierung mit benutzerdefinierten Argumenten in Python und CLI.
Beispiel
Erstellt am 2023-11-12, Aktualisiert am 2024-04-18
Autoren: glenn-jocher (9), Burhan-Q (1), RizwanMunawar (1)