Meet YOLO26: next-gen vision AI.

Link to this sectionModellvalidierung mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionEinführung#

Die Validierung ist ein entscheidender Schritt in der Machine Learning-Pipeline, mit dem du die Qualität deiner trainierten Modelle bewerten kannst. Der Val-Modus in Ultralytics YOLO26 bietet eine robuste Suite von Tools und Metriken zur Bewertung der Leistung deiner Objekterkennungs-Modelle. Dieser Leitfaden dient als vollständige Ressource, um zu verstehen, wie du den Val-Modus effektiv nutzt, um sicherzustellen, dass deine Modelle sowohl präzise als auch zuverlässig sind.



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionWarum Validierung mit Ultralytics YOLO?#

Hier ist der Grund, warum die Nutzung des Val-Modus von YOLO26 vorteilhaft ist:

  • Präzision: Erhalte genaue Metriken wie mAP50, mAP75 und mAP50-95, um dein Modell umfassend zu bewerten.
  • Komfort: Nutze integrierte Funktionen, die sich Trainingseinstellungen merken und den Validierungsprozess vereinfachen.
  • Flexibilität: Validiere dein Modell mit denselben oder anderen Datensätzen und Bildgrößen.
  • Hyperparameter-Tuning: Verwende Validierungsmetriken, um dein Modell für eine bessere Leistung feinabzustimmen.

Link to this sectionHauptfunktionen des Val-Modus#

Dies sind die bemerkenswerten Funktionen, die der Val-Modus von YOLO26 bietet:

  • Automatisierte Einstellungen: Modelle merken sich ihre Trainingskonfigurationen für eine unkomplizierte Validierung.
  • Unterstützung mehrerer Metriken: Bewerte dein Modell basierend auf einer Reihe von Genauigkeitsmetriken.
  • CLI und Python API: Wähle je nach Vorliebe für die Validierung zwischen der Befehlszeilenschnittstelle oder der Python API.
  • Datenkompatibilität: Funktioniert nahtlos mit Datensätzen, die während der Trainingsphase verwendet wurden, sowie mit benutzerdefinierten Datensätzen.
Tipp
  • YOLO26-Modelle merken sich automatisch ihre Trainingseinstellungen, sodass du ein Modell einfach mit der gleichen Bildgröße und auf dem ursprünglichen Datensatz validieren kannst, indem du yolo val model=yolo26n.pt oder YOLO("yolo26n.pt").val() verwendest.

Link to this sectionNutzungsbeispiele#

Validiere die Genauigkeit eines trainierten YOLO26n-Modells auf dem COCO8-Datensatz. Es sind keine Argumente erforderlich, da das model seine Trainings-data und Argumente als Modellattribute beibehält. Siehe den Abschnitt Argumente unten für eine vollständige Liste der Validierungsargumente.

Windows Multi-Processing Fehler

Unter Windows erhältst du möglicherweise einen RuntimeError, wenn du die Validierung als Skript startest. Füge vor deinem Validierungscode einen if __name__ == "__main__":-Block hinzu, um dies zu beheben.

Beispiel
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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 containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionArgumente für die YOLO-Modellvalidierung#

Bei der Validierung von YOLO-Modellen können verschiedene Argumente feinabgestimmt werden, um den Bewertungsprozess zu optimieren. Diese Argumente steuern Aspekte wie die Eingabebildgröße, die Stapelverarbeitung und Leistungsschwellenwerte. Unten findest du eine detaillierte Aufschlüsselung jedes Arguments, um dir bei der effektiven Anpassung deiner Validierungseinstellungen zu helfen.

ArgumentTypStandardBeschreibung
datastrNoneGibt den Pfad zur Konfigurationsdatei des Datensatzes an (z. B. coco8.yaml). Diese Datei sollte den Pfad zu den Validierungsdaten enthalten.
imgszint640Definiert die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Dimension skaliert. Größere Formate können die Genauigkeit bei kleinen Objekten verbessern, erhöhen aber die Rechenzeit.
batchint16Legt die Anzahl der Bilder pro Stapel fest. Höhere Werte nutzen den GPU-Speicher effizienter, benötigen jedoch mehr VRAM. Passe dies basierend auf den verfügbaren Hardwareressourcen an.
save_jsonboolFalseWenn True, werden die Ergebnisse in einer JSON-Datei für weitere Analysen, die Integration mit anderen Tools oder zur Einreichung bei Bewertungsservern wie COCO gespeichert.
conffloat0.001Legt den minimalen Konfidenz-Schwellenwert für Erkennungen fest. Niedrigere Werte erhöhen den Recall, können aber zu mehr falsch-positiven Ergebnissen führen. Wird während der Validierung verwendet, um Precision-Recall-Kurven zu berechnen. Standardmäßig 0.01 für OBB-Validierung, um den Speicherverbrauch zu reduzieren.
ioufloat0.7Legt den Intersection Over Union-Schwellenwert für die Non-Maximum Suppression fest. Steuert die Eliminierung doppelter Erkennungen.
max_detint300Begrenzt die maximale Anzahl der Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu verhindern und Rechenressourcen zu verwalten.
halfboolFalseAktiviert die Berechnung mit halber Präzision (FP16), wodurch der Speicherverbrauch reduziert und die Geschwindigkeit potenziell erhöht wird, bei minimalen Auswirkungen auf die Genauigkeit.
devicestrNoneGibt das Gerät für die Validierung an (cpu, cuda:0, npu, npu:0 usw.). Wenn None, wird automatisch das beste verfügbare Gerät ausgewählt. Mehrere CUDA-Geräte können durch Kommas getrennt angegeben werden.
dnnboolFalseWenn True, wird das OpenCV DNN-Modul für die ONNX-Modellinferenz verwendet, was eine Alternative zu PyTorch-Inferenzmethoden bietet.
plotsboolTrueWenn auf True gesetzt, werden Diagramme von Vorhersagen gegenüber Ground Truth, Verwirrungsmatrizen und PR-Kurven zur visuellen Bewertung der Modellleistung generiert und gespeichert.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, die bewertet werden sollen. Nützlich, um während der Bewertung bestimmte Klassen herauszufiltern und sich nur auf diese zu konzentrieren.
rectboolTrueWenn True, wird die rechteckige Inferenz für die Stapelverarbeitung verwendet, wodurch das Padding reduziert und potenziell die Geschwindigkeit und Effizienz durch die Verarbeitung von Bildern in ihrem ursprünglichen Seitenverhältnis erhöht wird.
splitstr'val'Bestimmt den Datensatz-Split, der für die Validierung verwendet werden soll (val, test oder train). Ermöglicht Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung.
projectstrNoneName des Projektverzeichnisses, in dem die Validierungsergebnisse gespeichert werden. Hilft dabei, Ergebnisse aus verschiedenen Experimenten oder Modellen zu organisieren.
namestrNoneName des Validierungslaufs. Wird verwendet, um ein Unterverzeichnis innerhalb des Projektordners zu erstellen, in dem Validierungsprotokolle und Ergebnisse gespeichert werden.
verboseboolTrueWenn True, werden detaillierte Informationen während des Validierungsprozesses angezeigt, einschließlich klassenspezifischer Metriken, Stapelfortschritt und zusätzlicher Debugging-Informationen.
save_txtboolFalseWenn True, werden Erkennungsergebnisse in Textdateien gespeichert, mit einer Datei pro Bild, was für weitere Analysen, benutzerdefinierte Nachverarbeitung oder die Integration in andere Systeme nützlich ist.
save_confboolFalseWenn True, werden Konfidenzwerte in den gespeicherten Textdateien einbezogen, wenn save_txt aktiviert ist, was detailliertere Ausgaben für Analysen und Filterungen bereitstellt.
workersint8Anzahl der Worker-Threads für das Laden der Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, aber den CPU-Verbrauch erhöhen. Die Einstellung auf 0 verwendet den Hauptthread, was in einigen Umgebungen stabiler sein kann.
augmentboolFalseAktiviert Test-Time Augmentation (TTA) während der Validierung, was potenziell die Erkennungsgenauigkeit auf Kosten der Inferenzgeschwindigkeit verbessert, indem Inferenz auf transformierten Versionen der Eingabe ausgeführt wird.
agnostic_nmsboolFalseAktiviert klassenunabhängige Non-Maximum Suppression, die überlappende Boxen unabhängig von ihrer vorhergesagten Klasse zusammenführt. Nützlich für instanzfokussierte Anwendungen. Für End-to-End-Modelle (YOLO26, YOLOv10) verhindert dies nur, dass dieselbe Erkennung mit mehreren Klassenlabels erscheint (IoU=1.0 Duplikate) und führt keine IoU-Schwellenwert-basierte Unterdrückung zwischen verschiedenen Boxen durch.
single_clsboolFalseBehandelt alle Klassen während der Validierung als eine einzige Klasse. Nützlich zur Bewertung der Modellleistung bei binären Erkennungsaufgaben oder wenn Klassenunterschiede nicht wichtig sind.
visualizeboolFalseVisualisiert die Ground Truths, True Positives, False Positives und False Negatives für jedes Bild. Nützlich für Debugging und Modellinterpretation.
show_labelsboolTrueZeigt Klassenlabels in Validierungsvisualisierungen an, wenn visualize=True. Setze auf False für eine sauberere Ansicht von Übereinstimmungen und Fehlern.
show_confboolTrueZeigt Konfidenzwerte in Validierungsvisualisierungen an, wenn visualize=True. Setze auf False für eine sauberere Ansicht von Übereinstimmungen und Fehlern.
compilebool oder strFalseAktiviert PyTorch 2.x torch.compile Graph-Kompilierung mit backend='inductor'. Akzeptiert True"default", False → deaktiviert oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Fällt bei Nichtunterstützung mit einer Warnung auf Eager zurück.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Die Einstellung auf False ermöglicht es dir, die Validierung unter Verwendung der traditionellen NMS-Pipeline auszuführen und zusätzlich das Argument iou zu nutzen.

Jede dieser Einstellungen spielt eine wichtige Rolle im Validierungsprozess und ermöglicht eine anpassbare und effiziente Bewertung von YOLO-Modellen. Die Anpassung dieser Parameter an deine spezifischen Bedürfnisse und Ressourcen kann helfen, das beste Gleichgewicht zwischen Genauigkeit und Leistung zu erreichen.

Link to this sectionBeispielvalidierung mit Argumenten#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Erkunde die Modellvalidierung und verschiedene Exportmethoden in Google Colab

Die folgenden Beispiele zeigen die YOLO-Modellvalidierung mit benutzerdefinierten Argumenten in Python und CLI.

Beispiel
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
ConfusionMatrix exportieren

Du kannst die ConfusionMatrix-Ergebnisse auch in verschiedenen Formaten speichern, indem du den bereitgestellten Code verwendest.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Präzision, Recall und F1 pro Bild

Die Validierung speichert pro Bild die Metriken Precision, Recall, F1, TP, FP und FN (bei IoU-Schwellenwert 0.5) für alle Aufgaben außer Klassifizierung. Greife nach Abschluss der Validierung über results.box.image_metrics für Erkennung und OBB, results.seg.image_metrics für Segmentierung und results.pose.image_metrics für Pose darauf zu.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Jeder Eintrag in image_metrics enthält die folgenden Schlüssel:

SchlüsselBeschreibung
precisionPräzisionswert für das Bild (tp / (tp + fp)).
recallRecall-Wert für das Bild (tp / (tp + fn)).
f1Harmonisches Mittel aus Präzision und Recall.
tpAnzahl der True Positives für das Bild.
fpAnzahl der False Positives für das Bild.
fnAnzahl der False Negatives für das Bild.

Diese Funktion ist für Erkennungs-, Segmentierungs-, Pose- und OBB-Aufgaben verfügbar.

MethodeRückgabetypBeschreibung
summary()List[Dict[str, Any]]Wandelt Validierungsergebnisse in ein zusammengefasstes Dictionary um.
to_df()DataFrameGibt die Validierungsergebnisse als strukturierten Polars DataFrame zurück.
to_csv()strExportiert die Validierungsergebnisse im CSV-Format und gibt den CSV-String zurück.
to_json()strExportiert die Validierungsergebnisse im JSON-Format und gibt den JSON-String zurück.

Weitere Details findest du in der Dokumentation der Klasse DataExportMixin.

Link to this sectionFAQ#

Link to this sectionWie validiere ich mein YOLO26-Modell mit Ultralytics?#

Um dein YOLO26-Modell zu validieren, kannst du den von Ultralytics bereitgestellten Val-Modus verwenden. Zum Beispiel kannst du über die Python API ein Modell laden und die Validierung wie folgt starten:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Alternativ kannst du das Command-Line Interface (CLI) verwenden:

yolo val model=yolo26n.pt

Für weitere Anpassungen kannst du verschiedene Argumente wie imgsz, batch und conf sowohl im Python- als auch im CLI-Modus anpassen. Überprüfe den Abschnitt Argumente für YOLO Modellvalidierung für die vollständige Liste der Parameter.

Link to this sectionWelche Metriken erhalte ich bei der YOLO26-Modellvalidierung?#

Die YOLO26-Modellvalidierung liefert verschiedene Schlüsselmetriken zur Bewertung der Modellleistung. Dazu gehören:

  • mAP50 (mean Average Precision bei einem IoU-Schwellenwert von 0,5)
  • mAP75 (mean Average Precision bei einem IoU-Schwellenwert von 0,75)
  • mAP50-95 (mean Average Precision über verschiedene IoU-Schwellenwerte von 0,5 bis 0,95)

Mit der Python API kannst du diese Metriken wie folgt abrufen:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Für eine vollständige Leistungsbewertung ist es entscheidend, alle diese Metriken zu überprüfen. Weitere Details findest du unter Hauptmerkmale des Val-Modus.

Link to this sectionWas sind die Vorteile der Verwendung von Ultralytics YOLO für die Validierung?#

Die Verwendung von Ultralytics YOLO zur Validierung bietet mehrere Vorteile:

  • Präzision: YOLO26 bietet genaue Leistungsmetriken, einschließlich mAP50, mAP75 und mAP50-95.
  • Bequemlichkeit: Die Modelle speichern ihre Trainingseinstellungen, was die Validierung unkompliziert macht.
  • Flexibilität: Du kannst die Validierung gegen dieselben oder andere Datensätze und Bildgrößen durchführen.
  • Hyperparameter-Tuning: Validierungsmetriken helfen dabei, Modelle für eine bessere Leistung feinabzustimmen.

Diese Vorteile stellen sicher, dass deine Modelle gründlich bewertet und für hervorragende Ergebnisse optimiert werden können. Erfahre mehr über diese Vorteile im Abschnitt Warum mit Ultralytics YOLO validieren.

Link to this sectionKann ich mein YOLO26-Modell mit einem benutzerdefinierten Datensatz validieren?#

Ja, du kannst dein YOLO26-Modell mithilfe eines benutzerdefinierten Datensatzes validieren. Gib das Argument data mit dem Pfad zu deiner Datensatz-Konfigurationsdatei an. Diese Datei sollte den Pfad zu den Validierungsdaten enthalten.

Hinweis

Die Validierung erfolgt unter Verwendung der eigenen Klassennamen des Modells, die du über model.names einsehen kannst und die sich von denen in der Datensatz-Konfigurationsdatei unterscheiden können.

Beispiel in Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Beispiel mit CLI:

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

Für weitere anpassbare Optionen während der Validierung siehe den Abschnitt Beispielvalidierung mit Argumenten.

Link to this sectionWie speichere ich Validierungsergebnisse in einer JSON-Datei in YOLO26?#

Um die Validierungsergebnisse in einer JSON-Datei zu speichern, kannst du das Argument save_json auf True setzen, wenn du die Validierung ausführst. Dies ist sowohl in der Python API als auch im CLI möglich.

Beispiel in Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Beispiel mit CLI:

yolo val model=yolo26n.pt save_json=True

Diese Funktionalität ist besonders nützlich für weiterführende Analysen oder die Integration mit anderen Tools. Prüfe die Argumente für die YOLO-Modellvalidierung für weitere Details.

Kommentare