Modell-Benchmarking mit Ultralytics YOLO#
Benchmark-Visualisierung#
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 YOLO26 dient diesem Zweck, indem er ein robustes Framework zur Beurteilung der Geschwindigkeit und Genauigkeit deines Modells über eine Reihe von Exportformaten hinweg bereitstellt.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Warum ist Benchmarking entscheidend?#
- Fundierte Entscheidungen: Gewinne Einblicke in die Kompromisse zwischen Geschwindigkeit und Genauigkeit.
- Ressourcenzuweisung: Verstehe, wie verschiedene Exportformate auf unterschiedlicher Hardware abschneiden.
- Optimierung: Erfahre, welches Exportformat die beste Leistung für deinen spezifischen Anwendungsfall bietet.
- Kosteneffizienz: Nutze Hardware-Ressourcen basierend auf Benchmark-Ergebnissen effizienter.
Wichtige Metriken im Benchmark-Modus#
- mAP50-95: Für Objekterkennung, Segmentierung und Posenschätzung.
- accuracy_top1: Für Bildklassifizierung.
- Inferenzzeit: Die benötigte Zeit für jedes Bild in Millisekunden.
Unterstützte Exportformate#
- ONNX: Für optimale CPU-Leistung
- TensorRT: Für maximale GPU-Effizienz
- OpenVINO: Für Intel-Hardware-Optimierung
- CoreML, TensorFlow SavedModel und mehr: Für diverse Bereitstellungsanforderungen.
- Exportiere zu ONNX oder OpenVINO für bis zu 3x CPU-Beschleunigung.
- Exportiere zu TensorRT für bis zu 5x GPU-Beschleunigung.
Anwendungsbeispiele#
Installiere Ultralytics mit Export-Abhängigkeiten vor dem Benchmarking, um fehlende Pakete zu vermeiden.
pip install ultralytics[export]Führe YOLO26n-Benchmarks über alle unterstützten Exportformate hinweg aus (ONNX, TensorRT etc.). Siehe den Abschnitt „Argumente“ unten für eine vollständige Liste der Exportoptionen.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Argumente#
Argumente wie model, data, imgsz, quantize, device, verbose und format bieten dir die Flexibilität, die Benchmarks an deine spezifischen Bedürfnisse anzupassen und die Leistung verschiedener Exportformate mühelos zu vergleichen.
| Schlüssel | Standardwert | Beschreibung |
|---|---|---|
model | None | Gibt den Pfad zur Modelflüssigkeit an. Akzeptiert sowohl .pt- als auch .yaml-Formate, z. B. "yolo26n.pt" für vortrainierte Modelle oder Konfigurationsdateien. |
data | None | Pfad zum Dataset-YAML für das Benchmarking, der typischerweise Pfade und Einstellungen für Validierungsdaten enthält. Beispiel: "coco8.yaml". Die Klassifizierung erfordert stattdessen ein Dataset-Verzeichnis oder einen integrierten Dataset-Namen (z. B. imagenet10). |
imgsz | 640 | Die Eingabebildgröße für das Modell. Muss für quadratische Bilder eine einzelne ganze Zahl sein (z. B. 640); benchmark() unterstützt nur quadratische Bildgrößen. |
quantize | None | Quantisierungspräzision: 16 (FP16) oder 8 (INT8/PTQ; erfordert Kalibrierung data/fraction); 32/nicht gesetzt ist FP32. Ersetzt die veralteten Flags half/int8. |
device | 'cpu' | Definiert das Rechengerät bzw. die Rechengeräte für das Benchmarking, wie zum Beispiel "cpu" oder "cuda:0". |
verbose | False | Steuert den Detaillierungsgrad der Protokollausgabe. Setze verbose=True für detaillierte Protokolle. |
eps | 0.001 | Kleines Epsilon (in Millisekunden), das zur Inferenzzeit pro Bild addiert wird, bevor diese in FPS umgewandelt wird, um eine Division durch Null zu verhindern. Wird selten geändert. |
format | '' | Führt Benchmarks nur für das angegebene Exportformat aus (z. B. format=onnx). Lass es leer, um jedes unterstützte Format automatisch zu testen. |
Die eigenständige Funktion benchmark() (from ultralytics.utils.benchmarks import benchmark) verwendet eigene Signatur-Standardwerte anstelle der obigen Tabellenwerte, insbesondere model="yolo26n.pt" und imgsz=160; übergebe imgsz explizit, um dem CLI yolo benchmark zu entsprechen.
Exportformate#
Benchmarks versuchen automatisch, auf allen unten aufgeführten möglichen Exportformaten ausgeführt zu werden. Alternativ kannst du Benchmarking für ein bestimmtes Format über das Argument format durchführen, das jedes der unten genannten Formate akzeptiert.
| Format | format-Argument | Modell | Metadaten | Argumente |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
Weitere Details zum export-Modus findest du auf der Export-Seite.
FAQ#
Ultralytics YOLO26 bietet einen Benchmark-Modus, um die Leistung deines Modells über verschiedene Exportformate hinweg zu bewerten. Dieser Modus liefert Einblicke in wichtige Metriken wie mittlere durchschnittliche Präzision (mAP50-95), Genauigkeit und Inferenzzeit in Millisekunden. Um Benchmarks auszuführen, kannst du entweder Python- oder CLI-Befehle verwenden. Zum Beispiel für ein Benchmarking auf einer GPU:
Beispielfrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Weitere Details zu Benchmark-Argumenten findest du im Abschnitt Arguments.
Das Exportieren von YOLO26-Modellen in verschiedene Formate wie ONNX, TensorRT und OpenVINO ermöglicht es dir, die Leistung basierend auf deiner Bereitstellungsumgebung zu optimieren. Zum Beispiel:
- ONNX: Bietet bis zu 3x CPU-Beschleunigung.
- TensorRT: Bietet bis zu 5x GPU-Beschleunigung.
- OpenVINO: Speziell für Intel-Hardware optimiert.
Diese Formate verbessern sowohl die Geschwindigkeit als auch die Genauigkeit deiner Modelle und machen sie effizienter für verschiedene reale Anwendungen. Besuche die Export-Seite für vollständige Details.
Das Benchmarking deiner YOLO26 Modelle ist aus mehreren Gründen unerlässlich:
- Fundierte Entscheidungen: Verstehe die Abwägungen zwischen Geschwindigkeit und Genauigkeit.
- Ressourcenzuweisung: Messe die Leistung über verschiedene Hardware-Optionen hinweg.
- Optimierung: Bestimme, welches Exportformat die beste Leistung für spezifische Anwendungsfälle bietet.
- Kosteneffizienz: Optimiere die Hardwarenutzung basierend auf Benchmark-Ergebnissen.
Wichtige Metriken wie mAP50-95, Top-1-Genauigkeit und Inferenzzeit helfen bei diesen Bewertungen. Weitere Informationen findest du im Abschnitt Key Metrics.
YOLO26 unterstützt eine Vielzahl von Exportformaten, die jeweils auf spezifische 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 Supported Export Formats.
Beim Ausführen von Benchmarks können mehrere Argumente an spezifische Bedürfnisse angepasst werden:
- model: Pfad zur Modelldatei (z. B. "yolo26n.pt").
- data: Pfad zum Dataset-YAML (z. B.
"coco8.yaml"); die Klassifizierung erfordert stattdessen ein Dataset-Verzeichnis oder einen integrierten Dataset-Namen (z. B.imagenet10). - imgsz: Die quadratische Eingabebildgröße als einzelne ganze Zahl, wie z. B.
640. Der Benchmark-Modus verwendet dieselbe quadratische Bildgröße über PyTorch und exportierte Formate hinweg für einen fairen Vergleich. - quantize: Quantisierungspräzision:
16für FP16,8für INT8 (nützlich für Edge-Geräte);32/nicht gesetzt ist FP32. - device: Gib das Berechnungsgerät an (z. B. "cpu", "cuda:0").
- verbose: Steuere den Grad der Protokollierungsdetails.
Eine vollständige Liste der Argumente findest du im Abschnitt Arguments.