Modell-Benchmarking mit Ultralytics YOLO
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
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
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)