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

Kommentare