Zum Inhalt springen

Modell-Benchmarking mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Sobald dein Modell trainiert und validiert ist, besteht der nächste logische Schritt darin, seine Leistung in verschiedenen realen Szenarien zu bewerten. Der Benchmark-Modus in Ultralytics YOLOv8 dient diesem Zweck, indem er einen robusten Rahmen für die Bewertung der Geschwindigkeit und Genauigkeit deines Modells in einer Reihe von Exportformaten bietet.



Pass auf: Ultralytics Modi Tutorial: Benchmark

Warum ist Benchmarking so wichtig?

  • Informierte Entscheidungen: Erhalte Einblicke in die Kompromisse zwischen Geschwindigkeit und Genauigkeit.
  • Ressourcenzuweisung: Verstehe, wie verschiedene Exportformate auf unterschiedlicher Hardware funktionieren.
  • Optimierung: Erfahre, welches Exportformat die beste Leistung für deinen speziellen Anwendungsfall bietet.
  • Kosteneffizienz: Nutze die Hardware-Ressourcen auf der Grundlage von Benchmark-Ergebnissen effizienter.

Schlüsselmetriken im Benchmark-Modus

  • mAP50-95: Für Objekterkennung, Segmentierung und Posenschätzung.
  • accuracy_top5: Für die Bildklassifizierung.
  • Inferenzzeit: Die für jedes Bild benötigte Zeit in Millisekunden.

Unterstützte Exportformate

  • ONNX: Für optimale Leistung CPU
  • TensorRT: Für maximale GPU Effizienz
  • OpenVINO: Für Intel Hardware-Optimierung
  • CoreML, TensorFlow SavedModel , und mehr: Für verschiedene Einsatzzwecke.

Tipp

  • Exportiere nach ONNX oder OpenVINO , um die Geschwindigkeit von CPU bis zu 3x zu erhöhen.
  • Exportiere nach TensorRT , um bis zu 5x schneller zu sein GPU .

Verwendungsbeispiele

Führe YOLOv8n Benchmarks für alle unterstützten Exportformate durch, z. B. ONNX, TensorRT usw. Eine vollständige Liste der Exportargumente findest du im Abschnitt Argumente weiter unten.

Beispiel

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Argumente

Argumente wie model, data, imgsz, half, device, und verbose bieten den Nutzern die Flexibilität, die Benchmarks auf ihre spezifischen Bedürfnisse abzustimmen und die Leistung verschiedener Exportformate mühelos zu vergleichen.

Schlüssel Standardwert Beschreibung
model None Gibt den Pfad zur Modelldatei an. Akzeptiert sowohl .pt und .yaml Formate, z. B., "yolov8n.pt" für vortrainierte Modelle oder Konfigurationsdateien.
data None Pfad zu einer YAML-Datei, die den Datensatz für das Benchmarking definiert und in der Regel Pfade und Einstellungen für Validierungsdaten enthält. Beispiel: "coco8.yaml".
imgsz 640 Die Größe des Eingabebildes für das Modell. Kann eine einzelne Ganzzahl für quadratische Bilder oder ein Tupel sein (width, height) für nicht quadratisch, z.B., (640, 480).
half False Ermöglicht FP16 (halbpräzise) Inferenz, was den Speicherverbrauch reduziert und möglicherweise die Geschwindigkeit auf kompatibler Hardware erhöht. verwenden half=True zu ermöglichen.
int8 False Aktiviert die INT8-Quantisierung für eine weiter optimierte Leistung auf unterstützten Geräten, besonders nützlich für Edge-Geräte. setzen int8=True zu verwenden.
device None Legt das/die Rechengerät(e) für das Benchmarking fest, wie z. B. "cpu", "cuda:0"oder eine Liste von Geräten wie "cuda:0,1" für mehrereGPU Aufstellungen.
verbose False Steuert den Detailgrad der Logging-Ausgabe. Ein boolescher Wert; gesetzt verbose=True für detaillierte Protokolle oder einen Float für Schwellenwertfehler.

Formate exportieren

Die Benchmarks versuchen, automatisch in allen unten aufgeführten möglichen Exportformaten zu laufen.

Format format Argument Modell Metadaten Argumente
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Kante TPU edgetpu yolov8n_edgetpu.tflite imgsz
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch

Siehe voll export Details in der exportieren Seite.

FAQ

Wie bewerte ich die Leistung meines YOLOv8 Modells mit Ultralytics?

Ultralytics YOLOv8 bietet einen Benchmark-Modus, um die Leistung deines Modells in verschiedenen Exportformaten zu bewerten. Dieser Modus bietet Einblicke in wichtige Kennzahlen wie die mittlere durchschnittliche Genauigkeit (mAP50-95), die Genauigkeit und die Inferenzzeit in Millisekunden. Um Benchmarks durchzuführen, kannst du entweder die Befehle Python oder CLI verwenden. Um zum Beispiel einen Benchmark auf GPU durchzuführen:

Beispiel

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Weitere Details zu den Benchmark-Argumenten findest du im Abschnitt " Argumente".

Was sind die Vorteile des Exports von YOLOv8 Modellen in verschiedene Formate?

Wenn du YOLOv8 Modelle in verschiedene Formate wie ONNX, TensorRT und OpenVINO exportierst, kannst du die Leistung je nach Einsatzumgebung optimieren. Zum Beispiel:

  • ONNX: Bietet bis zu 3x mehr Geschwindigkeit CPU .
  • TensorRT: Bietet eine bis zu 5x höhere Geschwindigkeit GPU .
  • OpenVINO: Speziell optimiert für Intel Hardware. Diese Formate verbessern sowohl die Geschwindigkeit als auch die Genauigkeit deiner Modelle und machen sie so effizienter für verschiedene Anwendungen in der Praxis. Auf der Seite Export findest du alle Details.

Warum ist Benchmarking für die Bewertung von YOLOv8 Modellen so wichtig?

Das Benchmarking deiner YOLOv8 Modelle ist aus mehreren Gründen wichtig:

  • Informierte Entscheidungen: Verstehe die Kompromisse zwischen Geschwindigkeit und Genauigkeit.
  • Ressourcenzuweisung: Prüfe die Leistung verschiedener Hardware-Optionen.
  • Optimieren: Bestimme, welches Exportformat die beste Leistung für bestimmte Anwendungsfälle bietet.
  • Kosteneffizienz: Optimiere den Hardware-Einsatz auf Basis der Benchmark-Ergebnisse. Schlüsselkennzahlen wie mAP50-95, Top-5-Genauigkeit und Inferenzzeit helfen bei diesen Bewertungen. Weitere Informationen findest du im Abschnitt Schlüsselmetriken.

Welche Exportformate werden von YOLOv8 unterstützt und was sind ihre Vorteile?

YOLOv8 unterstützt eine Vielzahl von Exportformaten, die jeweils auf bestimmte Hardware und Anwendungsfälle zugeschnitten sind:

  • ONNX: Am besten für CPU Leistung.
  • TensorRT: Ideal für GPU Effizienz.
  • OpenVINO: Optimiert für Intel Hardware.
  • CoreML & TensorFlow: Nützlich für iOS und allgemeine ML-Anwendungen. Eine vollständige Liste der unterstützten Formate und ihrer jeweiligen Vorteile findest du im Abschnitt Unterstützte Exportformate.

Welche Argumente kann ich verwenden, um meine YOLOv8 Benchmarks zu verfeinern?

Bei der Durchführung von Benchmarks können verschiedene Argumente an die jeweiligen Bedürfnisse angepasst werden:

  • Modell: Pfad zur Modelldatei (z. B. "yolov8n.pt").
  • Daten: Pfad zu einer YAML-Datei, die den Datensatz definiert (z. B. "coco8.yaml").
  • imgsz: Die Größe des Eingangsbildes, entweder als einzelne Ganzzahl oder als Tupel.
  • halb: Aktiviere FP16-Inferenz für bessere Leistung.
  • int8: Aktiviere die INT8-Quantisierung für Edge Devices.
  • Gerät: Gib das Berechnungsgerät an (z. B. "cpu", "cuda:0").
  • Ausführlich: Legt den Detaillierungsgrad der Protokollierung fest. Eine vollständige Liste der Argumente findest du im Abschnitt Argumente.


Erstellt 2023-11-12, Aktualisiert 2024-07-04
Autoren: glenn-jocher (18), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Kommentare