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 CPU-Leistung
- TensorRT: Für maximale GPU-Effizienz
- OpenVINO: Für die Intel Hardware Optimierung
- CoreML, TensorFlow SavedModel , und mehr: Für verschiedene Einsatzzwecke.
Tipp
- Exportiere nach ONNX oder OpenVINO für eine bis zu 3-fache CPU-Beschleunigung.
- Exportiere nach TensorRT für bis zu 5-fache GPU-Beschleunigung.
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 Multi-GPU-Setups. |
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 , 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 , batch |
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.
Erstellt 2023-11-12, Aktualisiert 2024-04-27
Autoren: glenn-jocher (12), Burhan-Q (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)