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