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 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 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.

Argument Typ Standard Beschreibung
data str None Gibt den Pfad zur Datensatzkonfigurationsdatei an (z. B. coco8.yaml). Diese Datei enthält Pfade zu Validierungsdaten, Klassennamen und Anzahl der Klassen.
imgsz int 640 Definiert 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.
batch int 16 Legt 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_json bool False Wenn True, speichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse, Integration mit anderen Tools oder zur Einreichung bei Bewertungsservern wie COCO.
conf float 0.001 Legt 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.
iou float 0.7 Legt den Intersection Over Union-Schwellenwert für die Non-Maximum Suppression fest. Steuert die Eliminierung von Duplikaten.
max_det int 300 Begrenzt die maximale Anzahl von Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu verhindern und Rechenressourcen zu verwalten.
half bool True Aktiviert die Halb-precision (FP16)-Berechnung, wodurch der Speicherverbrauch reduziert und potenziell die Geschwindigkeit erhöht wird, mit minimalen Auswirkungen auf die Genauigkeit.
device str None Gibt 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.
dnn bool False Wenn True, verwendet das OpenCV DNN-Modul für die ONNX-Modellinferenz, das eine Alternative zu PyTorch Inferenzmethoden bietet.
plots bool False Wenn aktiviert, True, generiert und speichert Diagramme von Vorhersagen im Vergleich zur Ground Truth, Konfusionsmatrizen und PR-Kurven zur visuellen Bewertung der Modellleistung.
classes list[int] None Gibt 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.
rect bool True Wenn 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.
split str '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.
project str None Name des Projektverzeichnisses, in dem Validierungsausgaben gespeichert werden. Hilft bei der Organisation von Ergebnissen aus verschiedenen Experimenten oder Modellen.
name str None Name des Validierungslaufs. Wird verwendet, um ein Unterverzeichnis innerhalb des Projektordners zu erstellen, in dem Validierungsprotokolle und -ausgaben gespeichert werden.
verbose bool False Wenn True, zeigt detaillierte Informationen während des Validierungsprozesses an, einschließlich Metriken pro Klasse, Batch-Fortschritt und zusätzlichen Debugging-Informationen.
save_txt bool False Wenn 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_conf bool False Wenn True, enthält Konfidenzwerte in den gespeicherten Textdateien, wenn save_txt ist aktiviert und bietet eine detailliertere Ausgabe für Analyse und Filterung.
workers int 8 Anzahl 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.
augment bool False Ermö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_nms bool False Ermöglicht 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. Dies ist nützlich, um die Modellleistung bei binären Erkennungsaufgaben zu bewerten oder wenn Klassenunterscheidungen keine Rolle spielen.
visualize bool False Visualisiert die Ground Truths, True Positives, False Positives und False Negatives für jedes Bild. Nützlich für das Debugging und die Modellinterpretation.

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: Exportieren von Modellvalidierungsergebnissen in CSV, JSON, SQL, Polars DataFrame und 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())
Methode Rückgabetyp Beschreibung
summary() List[Dict[str, Any]] Konvertiert Validierungsergebnisse in ein zusammengefasstes Dictionary.
to_df() DataFrame Gibt die Validierungsergebnisse in Form eines strukturierten Polars DataFrame zurück.
to_csv() str Exportiert die Validierungsergebnisse im CSV-Format und gibt die CSV-Zeichenkette zurück.
to_json() str Exportiert 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 Argument mit dem Pfad zu Ihrer Datensatz-Konfigurationsdatei. Diese Datei sollte Pfade zu den Validierungsdaten, Klassennamen und andere relevante Details enthalten.

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 1 Jahr ✏️ Aktualisiert vor 5 Tagen

Kommentare