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

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 bereits trainierte 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: "coco128.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, wodurch der Speicherverbrauch reduziert und die Geschwindigkeit auf kompatibler Hardware möglicherweise erhöht wird. 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
ONNX onnx yolov8n.onnx ✅ imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n_openvino_model/ ✅ imgsz, half, int8
TensorRT engine yolov8n.engine ✅ imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n.mlpackage ✅ imgsz, half, int8, nms
TF SavedModel saved_model yolov8n_saved_model/ ✅ imgsz, keras, int8
TF GraphDef pb yolov8n.pb ❌ imgsz
TF Lite tflite yolov8n.tflite ✅ imgsz, half, int8
TF Kante TPU edgetpu yolov8n_edgetpu.tflite ✅ imgsz
TF.js tfjs yolov8n_web_model/ ✅ imgsz, half, int8
PaddlePaddle paddle yolov8n_paddle_model/ ✅ imgsz
NCNN ncnn yolov8n_ncnn_model/ ✅ imgsz, half

Siehe voll export Details in der exportieren Seite.



Erstellt 2023-11-12, Aktualisiert 2024-03-01
Autoren: glenn-jocher (10), chr043416@gmail.com (1), Laughing-q (1), maianumerosky (1)

Kommentare