Zum Inhalt springen

Modellvalidierung mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Die Validierung ist ein wichtiger Schritt in der Pipeline des maschinellen Lernens, mit dem Sie die Qualität Ihrer trainierten Modelle bewerten können. Der Validierungsmodus in Ultralytics YOLO11 bietet eine robuste Reihe von Tools und Metriken zur Bewertung der Leistung Ihrer Objekterkennungsmodelle. Dieser Leitfaden dient als umfassende Ressource, um zu verstehen, wie Sie den Val-Modus effektiv nutzen können, um sicherzustellen, dass Ihre Modelle sowohl genau als auch zuverlässig sind.



Beobachten: Ultralytics Modi Tutorial: Validierung

Warum eine Validierung mit Ultralytics YOLO ?

Hier erfahren Sie, warum die Verwendung des Val-Modus von YOLO11 von Vorteil ist:

  • Präzision: Erhalten Sie genaue Messwerte wie mAP50, mAP75 und mAP50-95, um Ihr Modell umfassend zu bewerten.
  • Bequemlichkeit: Nutzen Sie die integrierten Funktionen, die sich die Trainingseinstellungen merken und so den Validierungsprozess vereinfachen.
  • Flexibel: Validieren Sie Ihr Modell mit denselben oder unterschiedlichen Datensätzen und Bildgrößen.
  • Abstimmung der Hyperparameter: Verwenden Sie Validierungsmetriken zur Feinabstimmung Ihres Modells für eine bessere Leistung.

Hauptmerkmale des Val-Modus

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

  • Automatisierte Einstellungen: Die Modelle merken sich ihre Trainingskonfigurationen für eine unkomplizierte Validierung.
  • Multimetrische Unterstützung: Bewerten Sie Ihr Modell auf der Grundlage einer Reihe von Genauigkeitsmetriken.
  • CLI und Python API: Wählen Sie zwischen der Befehlszeilenschnittstelle und Python API, je nachdem, was Sie für die Validierung bevorzugen.
  • Datenkompatibilität: Funktioniert nahtlos mit Datensätzen, die während der Trainingsphase verwendet wurden, sowie mit benutzerdefinierten Datensätzen.

Tipp

  • YOLO11 Modelle merken sich automatisch ihre Trainingseinstellungen, so dass Sie ein Modell bei gleicher Bildgröße und mit dem Originaldatensatz leicht validieren können, indem Sie einfach yolo val model=yolo11n.pt oder model('yolo11n.pt').val()

Beispiele für die Verwendung

Validierung des trainierten YOLO11n-Modells Genauigkeit für den COCO8-Datensatz. Es werden keine Argumente benötigt, da die model seine Ausbildung beibehält data und Argumente als Modellattribute. Eine vollständige Liste der Validierungsargumente finden Sie im Abschnitt Argumente weiter unten.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

Argumente für YOLO Modellvalidierung

Bei der Validierung von YOLO Modellen können mehrere Argumente zur Optimierung des Bewertungsprozesses fein abgestimmt werden. Diese Argumente steuern Aspekte wie die Größe des Eingabebildes, die Stapelverarbeitung und die Leistungsschwellenwerte. Im Folgenden finden Sie eine detaillierte Aufschlüsselung der einzelnen Argumente, damit Sie Ihre Validierungseinstellungen effektiv anpassen können.

Argument Typ Standard Beschreibung
data str None Gibt den Pfad zur Dataset-Konfigurationsdatei an (z. B., coco8.yaml). Diese Datei enthält Pfade zu Validierungsdaten, Klassennamen und Anzahl der Klassen.
imgsz int 640 Bestimmt die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Größe gebracht. Größere Größen können die Genauigkeit bei kleinen Objekten verbessern, erhöhen aber die Berechnungszeit.
batch int 16 Legt die Anzahl der Bilder pro Stapel fest. Höhere Werte nutzen den GPU effizienter, erfordern aber mehr VRAM. Passen Sie die Werte je nach verfügbaren Hardware-Ressourcen an.
save_json bool False Wenn Truespeichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse, zur Integration in andere Tools oder zur Übermittlung an Bewertungsserver wie COCO.
save_hybrid bool False Wenn Truespeichert eine hybride Version von Beschriftungen, die ursprüngliche Annotationen mit zusätzlichen Modellvorhersagen kombiniert. Nützlich für halbüberwachtes Lernen und die Erweiterung von Datensätzen.
conf float 0.001 Legt die minimale Vertrauensschwelle für Erkennungen fest. Niedrigere Werte erhöhen die Wiedererkennungsrate, können aber zu mehr falsch-positiven Ergebnissen führen. Wird bei der Validierung verwendet, um Präzisions-Rückruf-Kurven zu berechnen.
iou float 0.6 Legt den Schwellenwert "Schnittpunkt über Vereinigung" für die Nicht-Maximum-Unterdrückung fest. Steuert die Eliminierung der Duplikaterkennung.
max_det int 300 Begrenzt die maximale Anzahl von Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu vermeiden und die Rechenressourcen zu verwalten.
half bool True Ermöglicht Berechnungen mit halber Genauigkeit (FP16), wodurch die Speichernutzung 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, usw.). Wenn Nonewählt automatisch das beste verfügbare Gerät aus. Mehrere CUDA können mit Komma-Trennung angegeben werden.
dnn bool False Wenn Trueverwendet die OpenCV DNN-Modul für ONNX Modellinferenz, das eine Alternative zu PyTorch Inferenzmethoden.
plots bool False Bei Einstellung auf Trueerzeugt und speichert Diagramme von Vorhersagen im Vergleich zur Grundwahrheit, Konfusionsmatrizen und PR-Kurven zur visuellen Bewertung der Modellleistung.
rect bool True Wenn Trueverwendet die rechteckige Inferenz für die Stapelverarbeitung, wodurch das Auffüllen reduziert und die Geschwindigkeit und Effizienz durch die Verarbeitung von Bildern in ihrem ursprünglichen Seitenverhältnis potenziell erhöht wird.
split str 'val' Bestimmt den für die Validierung zu verwendenden Datensatzsplit (val, test, oder train). Ermöglicht Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung.
project str None Name des Projektverzeichnisses, in dem die Validierungsergebnisse gespeichert werden. Hilft bei der Organisation von Ergebnissen aus verschiedenen Experimenten oder Modellen.
name str None Name des Validierungslaufs. Wird für die Erstellung eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem die Validierungsprotokolle und -ausgaben gespeichert werden.
verbose bool False Wenn Truezeigt während des Validierungsprozesses detaillierte Informationen an, einschließlich Metriken pro Klasse, Batch-Fortschritt und zusätzliche Debugging-Informationen.
save_txt bool False Wenn Truespeichert die Erkennungsergebnisse in Textdateien, eine Datei pro Bild, die für weitere Analysen, benutzerdefinierte Nachbearbeitungen oder die Integration in andere Systeme nützlich sind.
save_conf bool False Wenn Truedie Konfidenzwerte in die gespeicherten Textdateien ein, wenn save_txt ist aktiviert und bietet eine detailliertere Ausgabe für Analyse und Filterung.
save_crop bool False Wenn Truespeichert zugeschnittene Bilder von erkannten Objekten, die für die Erstellung konzentrierter Datensätze, die visuelle Überprüfung oder die weitere Analyse einzelner Erkennungen nützlich sein können.
workers int 8 Anzahl der Arbeits-Threads für das Laden von Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, können aber die CPU erhöhen. Bei einer Einstellung von 0 wird der Haupt-Thread verwendet, der in manchen Umgebungen stabiler sein kann.
augment bool False Ermöglicht die Testzeit-Erweiterung (TTA) während der Validierung, wodurch die Erkennungsgenauigkeit auf Kosten der Inferenzgeschwindigkeit verbessert werden kann, indem die Inferenz mit transformierten Versionen der Eingabe durchgeführt wird.
agnostic_nms bool False Ermöglicht die klassenunabhängige Non-Maximum Suppression, die überlappende Boxen unabhängig von ihrer vorhergesagten Klasse zusammenführt. Nützlich für instanzfokussierte Anwendungen.
single_cls bool False Behandelt alle Klassen während der Validierung als eine einzige Klasse. Nützlich für die Bewertung der Modellleistung bei binären Erkennungsaufgaben oder wenn Klassenunterscheidungen nicht wichtig sind.

Jede dieser Einstellungen spielt eine wichtige Rolle im Validierungsprozess und ermöglicht eine anpassbare und effiziente Bewertung von YOLO Modellen. Durch die Anpassung dieser Parameter an Ihre spezifischen Bedürfnisse und Ressourcen können Sie 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

from ultralytics import YOLO

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

# Customize validation settings
validation_results = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

FAQ

Wie kann ich mein Modell YOLO11 mit Ultralytics validieren?

Um Ihr YOLO11 Modell zu validieren, können Sie den von Ultralytics bereitgestellten Val-Modus verwenden. Mit der API Python können Sie zum Beispiel ein Modell laden und die Validierung mit durchführen:

from ultralytics import YOLO

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

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

Alternativ können Sie auch die Befehlszeilenschnittstelle (CLI) verwenden:

yolo val model=yolo11n.pt

Für weitere Anpassungen können Sie verschiedene Argumente einstellen, wie imgsz, batchund conf sowohl im Modus Python als auch CLI . Prüfen Sie die Argumente für YOLO Modellvalidierung Abschnitt für die vollständige Liste der Parameter.

Welche Metriken kann ich aus der YOLO11 Modellvalidierung gewinnen?

YOLO11 Die Modellvalidierung liefert mehrere Schlüsselindikatoren zur Bewertung der Modellleistung. Dazu gehören:

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

Über die API Python können Sie 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

Für eine vollständige Leistungsbewertung ist es unerlässlich, alle diese Kennzahlen zu überprüfen. Weitere Einzelheiten finden Sie in den Hauptmerkmalen des Val-Modus.

Welche Vorteile bietet die Verwendung von Ultralytics YOLO für die Validierung?

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

  • Präzision: YOLO11 bietet genaue Leistungskennzahlen wie mAP50, mAP75 und mAP50-95.
  • Bequemlichkeit: Die Modelle merken sich ihre Trainingseinstellungen, was die Validierung vereinfacht.
  • Flexibel: Sie können mit denselben oder unterschiedlichen Datensätzen und Bildgrößen validieren.
  • Abstimmung der Hyperparameter: Validierungsmetriken helfen bei der Feinabstimmung von Modellen für eine bessere Leistung.

Diese Vorteile stellen sicher, dass Ihre Modelle gründlich ausgewertet werden und für hervorragende Ergebnisse optimiert werden können. Erfahren Sie mehr über diese Vorteile im Abschnitt "Warum mit Ultralytics validieren " YOLO.

Kann ich mein Modell YOLO11 anhand eines benutzerdefinierten Datensatzes validieren?

Ja, Sie können Ihr YOLO11 Modell mit einer benutzerdefinierter Datensatz. Geben Sie die data mit dem Pfad zu Ihrer Dataset-Konfigurationsdatei. Diese Datei sollte die Pfade zu den Validierungsdaten, Klassennamen und andere relevante Details.

Beispiel in Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt data=path/to/your/custom_dataset.yaml

Weitere anpassbare Optionen für die Validierung finden Sie im Abschnitt Beispielvalidierung mit Argumenten.

Wie speichere ich Validierungsergebnisse in einer JSON-Datei in YOLO11?

Um die Validierungsergebnisse in einer JSON-Datei zu speichern, können Sie die save_json Argument zu True wenn die Validierung läuft. Dies kann sowohl über die Python API als auch über CLI erfolgen.

Beispiel in Python:

from ultralytics import YOLO

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

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

Beispiel mit CLI:

yolo val model=yolo11n.pt save_json=True

Diese Funktion ist besonders nützlich für weitere Analysen oder die Integration mit anderen Tools. Weitere Einzelheiten finden Sie in den Argumenten für die YOLO Modellvalidierung.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 3 Tagen

Kommentare