YOLO Vision 2026:

Modellvalidierung mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Einfü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 Auswertung der Leistung deiner Objekterkennungs-Modelle. Dieser Leitfaden dient als umfassende Ressource, um zu verstehen, wie du den Val-Modus effektiv nutzen kannst, um sicherzustellen, dass deine Modelle sowohl präzise als auch zuverlässig sind.



Watch: Ultralytics Modes Tutorial: Validation

Warum 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 an die Trainingseinstellungen erinnern und so den Validierungsprozess vereinfachen.
  • Flexibilität: Validiere dein Modell mit denselben oder anderen Datensätzen und Bildgrößen.
  • Hyperparameter-Tuning: Nutze Validierungsmetriken, um dein Modell für eine bessere Leistung zu optimieren.

Hauptfunktionen des Val-Modus#

Dies sind die bemerkenswerten Funktionalitäten, die der Val-Modus von YOLO26 bietet:

  • Automatisierte Einstellungen: Modelle speichern ihre Trainingskonfigurationen für eine unkomplizierte Validierung.
  • Multi-Metrik-Unterstützung: Evaluiere dein Modell basierend auf einer Reihe von Genauigkeitsmetriken.
  • CLI und Python API: Wähle basierend auf deiner Präferenz 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 ganz einfach mit derselben Bildgröße und auf dem Originaldatensatz mithilfe von yolo val model=yolo26n.pt oder YOLO("yolo26n.pt").val() validieren kannst.

Anwendungsbeispiele#

Validiere die Genauigkeit eines trainierten YOLO26n-Modells auf dem COCO8-Datensatz. Es sind keine Argumente erforderlich, da model seine Training-data und -Argumente als Modellattribute behä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 einen if __name__ == "__main__":-Block vor deinem Validierungscode ein, 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

Argumente 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 Eingabebildgröße, Stapelverarbeitung und Leistungsschwellenwerte. Unten findest du eine detaillierte Aufschlüsselung jedes Arguments, um dir zu helfen, deine Validierungseinstellungen effektiv anzupassen.

ArgumentTypStandardBeschreibung
datastrNoneGibt den Pfad zum Dataset-YAML an (z. B. coco8.yaml), das den Pfad zu den Validierungsdaten enthalten sollte. Bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name angegeben (z. B. imagenet10).
imgszint640Definiert die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Dimension skaliert. Größere Größen können die Genauigkeit bei kleinen Objekten verbessern, erhöhen aber die Rechenzeit.
batchint16Legt die Anzahl der Bilder pro Batch fest. Höhere Werte nutzen den GPU-Speicher effizienter, erfordern jedoch mehr VRAM. Passe dies basierend auf den verfügbaren Hardware-Ressourcen an.
save_jsonboolFalseFalls True, werden die Ergebnisse zur weiteren Analyse, zur Integration mit anderen Tools oder zur Einreichung bei Evaluierungsservern wie COCO in einer JSON-Datei gespeichert.
conffloat0.001Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte erhöhen den Recall, können aber zu mehr False Positives führen. Precision-Recall-Kurven verwenden standardmäßig 0.001; Erkennungs-Konfusionsmatrizen verwenden einen expliziten conf-Wert oder 0.25, wenn dieser weggelassen wird. Die Zusammenfassung von Precision und Recall verwendet die max-F1-Konfidenz, sodass sie von Werten abweichen kann, die aus confusion_matrix.png abgeleitet wurden. Standardmäßig 0.01 für die OBB-Validierung, um den Speicherverbrauch zu reduzieren.
ioufloat0.7Legt den Schwellenwert der Intersection Over Union für 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.
quantizeint oder strNoneValidierungspräzision: 16/"fp16" aktiviert FP16-Validierung auf unterstützten GPUs; 32/"fp32"/nicht gesetzt ist FP32. INT8/PTQ-Quantisierung wird während des Exports konfiguriert und dann durch Validieren des exportierten Modells verwendet. Ersetzt das veraltete half-Flag.
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 Kommata getrennt angegeben werden.
dnnboolFalseFalls True, wird das OpenCV-DNN-Modul für die ONNX-Modellinferenz verwendet, was eine Alternative zu PyTorch-Inferenzmethoden darstellt.
plotsboolTrueWenn auf True gesetzt, werden Plots von Vorhersagen gegenüber Ground Truth, Konfusionsmatrizen und PR-Kurven zur visuellen Auswertung der Modellleistung generiert und gespeichert.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, die evaluiert werden sollen. Nützlich, um während der Evaluierung bestimmte Klassen herauszufiltern und sich nur auf diese zu konzentrieren.
rectboolTrueWenn True, nutzt reev, verwendet es rechteckige Inferenz für das Batching, wodurch Padding reduziert und Geschwindigkeit sowie Effizienz durch die Verarbeitung von Bildern im originalen Seitenverhältnis möglicherweise erhöht werden. Wird bei der Validierung für depth ignoriert, bei der jedes Bild anstelle von Padding auf ein festes imgsz-Quadrat skaliert wird.
splitstr'val'Bestimmt den für die Validierung zu verwendenden Dataset-Split (val, test oder train). Bietet Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung.
projectstrNoneName des Projektverzeichnisses, in dem Validierungsergebnisse gespeichert werden. Hilft dabei, Ergebnisse verschiedener Experimente oder Modelle zu organisieren.
namestrNoneName des Validierungslaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Validierungsprotokolle und -ausgaben gespeichert werden.
verboseboolTrueFalls True, werden während des Validierungsprozesses detaillierte Informationen angezeigt, einschließlich klassenbezogener Metriken, Batch-Fortschritt und zusätzlicher Debugging-Informationen.
save_txtboolFalseFalls True, werden Erkennungsergebnisse in Textdateien gespeichert (eine Datei pro Bild), was für weitere Analysen, benutzerdefinierte Nachbearbeitung oder die Integration mit anderen Systemen nützlich ist.
save_confboolFalseFalls True, werden in den gespeicherten Textdateien Konfidenzwerte eingeschlossen, wenn save_txt aktiviert ist, was detailliertere Ausgaben für Analyse und Filterung liefert.
workersint8Anzahl der Worker-Threads für das Laden von Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, aber möglicherweise den CPU-Verbrauch erhöhen. Die Einstellung auf 0 verwendet den Hauptthread, was in einigen Umgebungen stabiler sein kann.
augmentboolFalseAktiviert die Test-Time-Augmentation (TTA) während der Validierung, was die Erkennungsgenauigkeit potenziell auf Kosten der Inferenzgeschwindigkeit verbessert, indem Inferenz auf transformierten Versionen der Eingabe ausgeführt wird. Nur für Ultralytics PyTorch Modelle verfügbar.
agnostic_nmsboolFalseAktiviert die klassenunabhängige Non-Maximum Suppression, wodurch überlappende Boxen mit niedrigerem Score unabhängig von ihrer vorhergesagten Klasse unterdrückt werden. Nützlich für instanzfokussierte Anwendungen. Bei End-to-End-Modellen (YOLO26, YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassenlabels angezeigt wird (IoU=1.0-Duplikate), und führt keine IoU-Schwellenwert-basierte Unterdrückung zwischen unterschiedlichen 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. Auf False setzen für eine übersichtlichere Ansicht von Übereinstimmungen und Fehlern.
show_confboolTrueZeigt Konfidenzwerte in Validierungsvisualisierungen an, wenn visualize=True. Auf False setzen für eine übersichtlichere Ansicht von Übereinstimmungen und Fehlern.
compilebool oder strFalseAktiviert die PyTorch-2.x-torch.compile-Graphenkompilierung 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 unter Warnung auf Eager-Modus zurück.
channels_lastboolFalseVerwendet das Speicherformat channels_last (NHWC) für Faltungen während der Validierung, wodurch CUDA Tensor Core GPUs ohne Ergebnisänderung beschleunigt werden. Gilt nur für native PyTorch-Modelle; wird für CPU, MPS und exportierte Formate wie TensorRT und ONNX ignoriert.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Wenn du es auf False setzt, kannst du die Validierung mit der traditionellen NMS-Pipeline ausführen und zusätzlich das Argument iou nutzen.

Jede dieser Einstellungen spielt eine entscheidende 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.

Beispielvalidierung 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 Ergebnisse der ConfusionMatrix 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 Metriken für Präzision, Recall, F1, TP, FP und FN pro Bild (beim IoU-Schwellenwert 0,5) für alle Aufgaben ausser der Klassifikation. 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 auf sie 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-, Posen- 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 DataExportMixin-Klassendokumentation.

Wie geht es weiter?#

Zufrieden mit den Metriken? Exportiere das Modell in ein Bereitstellungsformat. Wenn die Genauigkeit nicht stimmt, gehe zurück und trainiere es erneut mit anderen Hyperparametern oder mehr Trainingsdaten.

FAQ#

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

    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 die Befehlszeilenschnittstelle (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 die YOLO-Modellvalidierung für die vollständige Liste der Parameter.

  • Die YOLO26-Modellvalidierung bietet mehrere wichtige Metriken zur Bewertung der Modellleistung. Dazu gehören:

    • mAP50 (mittlere durchschnittliche Präzision bei einem IoU-Schwellenwert von 0,5)
    • mAP75 (mittlere durchschnittliche Präzision bei einem IoU-Schwellenwert von 0,75)
    • mAP50-95 (mittlere durchschnittliche Präzision über mehrere IoU-Schwellenwerte von 0,5 bis 0,95)

    Mit der Python API kannst du wie folgt auf diese Metriken zugreifen:

    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, all diese Metriken zu überprüfen. Weitere Details findest du im Abschnitt Hauptmerkmale des Val-Modus.

  • Die Verwendung von Ultralytics YOLO für die Validierung bietet mehrere Vorteile:

    • Präzision: YOLO26 bietet genaue Leistungsmetriken einschließlich mAP50, mAP75 und mAP50-95.
    • Komfort: Die Modelle speichern ihre Trainingseinstellungen, was die Validierung unkompliziert macht.
    • Flexibilität: Du kannst gegen denselben oder andere Datensätze und Bildgrößen validieren.
    • Hyperparameter-Tuning: Validierungsmetriken helfen bei der Feinabstimmung von Modellen für eine bessere Leistung.

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

  • Ja, du kannst dein YOLO26-Modell mit einem custom dataset validieren. Gib das Argument data mit dem Pfad zu deinem Dataset-YAML an, das den Pfad zu den validation data enthalten sollte. Bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name (z. B. imagenet10) verwendet.

    Hinweis

    Die Validierung wird mit den modell-eigenen Klassennamen durchgeführt, die du mit model.names einsehen kannst und die sich von denjenigen unterscheiden können, die das Dataset selbst definiert.

    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 anpassbarere Optionen während der Validierung siehe den Abschnitt Beispielvalidierung mit Argumenten.

  • 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 kann sowohl in der Python-API als auch über die CLI erfolgen.

    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 weitere Analysen oder die Integration mit anderen Tools. Überprüfe die Argumente für die YOLO-Modellvalidierung für weitere Details.

Kommentare