Zum Inhalt springen

Modellvalidierung mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Die Validierung ist ein kritischer Schritt in der Machine-Learning-Pipeline, der es Ihnen ermöglicht, die Qualität Ihrer trainierten Modelle zu beurteilen. Der Val-Modus in Ultralytics YOLO11 bietet eine robuste Suite von Tools und Metriken zur Bewertung der Leistung Ihrer Objekterkennungs-Modelle. Dieser Leitfaden dient als vollständige 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.



Ansehen: Ultralytics Modes Tutorial: Validierung

Warum mit Ultralytics YOLO validieren?

Deshalb ist die Verwendung des Val-Modus von YOLO11 vorteilhaft:

  • Präzision: Erhalten Sie genaue Metriken wie mAP50, mAP75 und mAP50-95, um Ihr Modell umfassend zu bewerten.
  • Komfort: Nutzen Sie integrierte Funktionen, die sich an Trainingseinstellungen erinnern und den Validierungsprozess vereinfachen.
  • Flexibilität: Validieren Sie Ihr Modell mit den gleichen oder unterschiedlichen Datensätzen und Bildgrößen.
  • Hyperparameter-Optimierung: Verwenden Sie Validierungsmetriken, um Ihr Modell für eine bessere Leistung feinabzustimmen.

Hauptmerkmale des Val-Modus

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

  • Automatisierte Einstellungen: Modelle speichern ihre Trainingskonfigurationen für eine unkomplizierte Validierung.
  • Multi-Metrik-Unterstützung: Bewerten Sie Ihr Modell anhand einer Reihe von Genauigkeitsmetriken.
  • CLI und Python API: Wählen Sie zwischen der Befehlszeilenschnittstelle oder der 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 speichern automatisch ihre Trainingseinstellungen, sodass Sie ein Modell einfach mit derselben Bildgröße und auf dem ursprünglichen Datensatz validieren können, indem Sie einfach yolo val model=yolo11n.pt oder model('yolo11n.pt').val()

Anwendungsbeispiele

Validieren des trainierten YOLO11n-Modells Genauigkeit auf dem COCO8-Datensatz. Es werden keine Argumente benötigt, da die model behält sein Training 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 containing mAP50-95 for 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 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 Größe des Eingangsbildes, die Batch-Verarbeitung und Leistungsschwellenwerte. Im Folgenden finden Sie eine detaillierte Aufschlüsselung der einzelnen Argumente, die Ihnen helfen, Ihre Validierungseinstellungen effektiv anzupassen.

ArgumentTypStandardBeschreibung
datastrNoneGibt den Pfad zur Datensatzkonfigurationsdatei an (z. B. coco8.yaml). Diese Datei sollte den Pfad zum Validierungsdaten.
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 Batch fest. Höhere Werte nutzen den GPU-Speicher effizienter, benötigen aber mehr VRAM. Anpassen basierend auf den verfügbaren Hardwareressourcen.
save_jsonboolFalseWenn True, speichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse, Integration mit anderen Tools oder zur Einreichung bei Bewertungsservern wie COCO.
conffloat0.001Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte erhöhen die Trefferquote, können aber mehr falsch positive Ergebnisse verursachen. Wird während der Validierung verwendet, um Precision-Recall-Kurven zu berechnen.
ioufloat0.7Legt den Intersection Over Union-Schwellenwert für die Non-Maximum Suppression fest. Steuert die Eliminierung von Duplikaten.
max_detint300Begrenzt die maximale Anzahl von Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu verhindern und Rechenressourcen zu verwalten.
halfboolTrueAktiviert die Halb-precision (FP16)-Berechnung, wodurch der Speicherverbrauch reduziert und potenziell die Geschwindigkeit erhöht wird, mit minimalen Auswirkungen auf die Genauigkeit.
devicestrNoneGibt das Gerät für die Validierung an (cpu, cuda:0, usw.). Wenn None, wählt automatisch das beste verfügbare Gerät aus. Mehrere CUDA-Geräte können durch Kommas getrennt angegeben werden.
dnnboolFalseWenn True, verwendet das OpenCV DNN-Modul für die ONNX-Modellinferenz, das eine Alternative zu PyTorch Inferenzmethoden bietet.
plotsboolFalseWenn aktiviert, True, generiert und speichert Diagramme von Vorhersagen im Vergleich zur Ground Truth, Konfusionsmatrizen und PR-Kurven zur visuellen Bewertung der Modellleistung.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, auf denen trainiert werden soll. Nützlich, um bestimmte Klassen während der Evaluierung herauszufiltern und sich nur auf diese zu konzentrieren.
rectboolTrueWenn True, verwendet rechteckige Inferenz für Batch-Verarbeitung, 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 die Datensatzaufteilung, die 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 Validierungsausgaben gespeichert werden. Hilft bei der Organisation von Ergebnissen aus verschiedenen Experimenten oder Modellen.
namestrNoneName des Validierungslaufs. Wird verwendet, um ein Unterverzeichnis innerhalb des Projektordners zu erstellen, in dem Validierungsprotokolle und -ausgaben gespeichert werden.
verboseboolFalseWenn True, zeigt detaillierte Informationen während des Validierungsprozesses an, einschließlich Metriken pro Klasse, Batch-Fortschritt und zusätzlichen Debugging-Informationen.
save_txtboolFalseWenn True, speichert Erkennungsergebnisse in Textdateien, mit einer Datei pro Bild, nützlich für weitere Analysen, benutzerdefinierte Nachbearbeitung oder die Integration mit anderen Systemen.
save_confboolFalseWenn True, enthält Konfidenzwerte in den gespeicherten Textdateien, wenn save_txt ist aktiviert und bietet eine detailliertere Ausgabe für Analyse und Filterung.
workersint8Anzahl der Worker-Threads für das Laden von Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, aber die CPU-Auslastung erhöhen. Die Einstellung 0 verwendet den Haupt-Thread, der in einigen Umgebungen stabiler sein kann.
augmentboolFalseErmöglicht Testzeit-Augmentation (TTA) während der Validierung, was potenziell die Erkennungsgenauigkeit auf Kosten der Inferenzgeschwindigkeit verbessert, indem die Inferenz auf transformierten Versionen der Eingabe ausgeführt wird.
agnostic_nmsboolFalseErmöglicht klassenunabhängige Non-Maximum Suppression, die überlappende Boxen unabhängig von ihrer vorhergesagten Klasse zusammenführt. Nützlich für instanzfokussierte Anwendungen.
single_clsboolFalseBehandelt alle Klassen während der Validierung als eine einzige Klasse. Dies ist nützlich, um die Modellleistung bei binären Erkennungsaufgaben zu bewerten oder wenn Klassenunterscheidungen keine Rolle spielen.
visualizeboolFalseVeranschaulicht die Grundwahrheiten, wahren positiven, falsch positiven und falsch negativen Ergebnisse für jedes Bild. Nützlich für die Fehlersuche und Modellinterpretation.
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 mit einer Warnung auf Eager zurück, wenn dies nicht unterstützt wird.

Jede dieser Einstellungen spielt eine wichtige Rolle im Validierungsprozess und ermöglicht eine anpassbare und effiziente Bewertung von YOLO-Modellen. Das Anpassen dieser Parameter an Ihre spezifischen Bedürfnisse und Ressourcen kann dazu beitragen, das beste Gleichgewicht zwischen Genauigkeit und Leistung zu erzielen.

Beispielvalidierung mit Argumenten



Ansehen: So exportieren Sie Modellvalidierungsergebnisse in CSV, JSON, SQL, Polars DataFrame & mehr

Entdecke die Modellvalidierung und verschiedene Exportmethoden in Google Colab.

Die folgenden Beispiele zeigen die Validierung von YOLO-Modellen mit benutzerdefinierten Argumenten in Python und CLI.

Beispiel

from ultralytics import YOLO

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

# Customize validation settings
metrics = 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

ConfusionMatrix exportieren

Sie können die ConfusionMatrix-Ergebnisse auch mit dem bereitgestellten Code in verschiedenen Formaten speichern.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
MethodeRückgabetypBeschreibung
summary()List[Dict[str, Any]]Konvertiert Validierungsergebnisse in ein zusammengefasstes Dictionary.
to_df()DataFrameGibt die Validierungsergebnisse als strukturiertes Polars DataFrame zurück.
to_csv()strExportiert die Validierungsergebnisse im CSV-Format und gibt die CSV-Zeichenkette zurück.
to_json()strExportiert die Validierungsergebnisse im JSON-Format und gibt die JSON-Zeichenkette zurück.

Weitere Informationen finden Sie in der DataExportMixin Klassendokumentation.

FAQ

Wie validiere ich mein YOLO11-Modell mit Ultralytics?

Um Ihr YOLO11-Modell zu validieren, können Sie den von Ultralytics bereitgestellten Val-Modus verwenden. Mit der Python API können Sie beispielsweise ein Modell laden und die Validierung wie folgt ausfü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 die Befehlszeilenschnittstelle (CLI) verwenden:

yolo val model=yolo11n.pt

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

Welche Metriken kann ich aus der YOLO11-Modellvalidierung erhalten?

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

  • mAP50 (Mean Average Precision bei IoU-Schwellenwert 0.5)
  • mAP75 (Mean Average Precision bei IoU-Schwellenwert 0.75)
  • mAP50-95 (Mean Average Precision über mehrere IoU-Schwellenwerte von 0.5 bis 0.95)

Mit der Python API 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 entscheidend, alle diese Metriken zu überprüfen. Weitere Informationen finden Sie unter Hauptmerkmale des Val-Modus.

Welche Vorteile bietet die Verwendung von Ultralytics YOLO zur Validierung?

Die Verwendung von Ultralytics YOLO zur Validierung bietet mehrere Vorteile:

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

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

Kann ich mein YOLO11-Modell mit einem benutzerdefinierten Datensatz validieren?

Ja, Sie können Ihr YOLO11-Modell mit einem benutzerdefinierten Datensatzvalidieren. Spezifizieren Sie das data mit dem Pfad zu Ihrer Dataset-Konfigurationsdatei. Diese Datei sollte den Pfad zum Validierungsdaten.

Hinweis

Die Validierung erfolgt über die eigenen Klassennamen des Modells, die Sie mit model.namesund die sich von den in der Datensatzkonfigurationsdatei angegebenen unterscheiden können.

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 der CLI:

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

Weitere anpassbare Optionen während der 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 den save_json Argument für True beim Ausführen der Validierung festlegen. Dies kann sowohl in der python API als auch in der 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 der CLI:

yolo val model=yolo11n.pt save_json=True

Diese Funktionalität ist besonders nützlich für die weitere Analyse oder Integration mit anderen Tools. Weitere Informationen finden Sie unter Argumente für die YOLO-Modellvalidierung.



📅 Erstellt vor 2 Jahren ✏️ Aktualisiert vor 3 Tagen
glenn-jocherMatthewNoycejb297686Laughing-qRizwanMunawarUltralyticsAssistantjk4eBurhan-Q

Kommentare