Ultralytics YOLO27:

Modell-Benchmarking mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Benchmark-Visualisierung#

Einleitung#

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 Bewertung der Geschwindigkeit und Genauigkeit deines Modells über eine Reihe von Exportformaten hinweg bereitstellt.

Sieh dir die unreleased YOLO27 preview an, um vorläufige Geschwindigkeits-Benchmarks zu erhalten.



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: Finde heraus, 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 Posen-Schätzung.
  • accuracy_top1: Für Bildklassifizierung.
  • Inferenzzeit: 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.
Tipp
  • Exportiere nach ONNX oder OpenVINO für eine bis zu 3-fache CPU-Beschleunigung.
  • Exportiere nach TensorRT für eine bis zu 5-fache GPU-Beschleunigung.

Verwendungsbeispiele#

Empfohlene Installation

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 usw.). Siehe den Abschnitt „Argumente“ unten für eine vollständige Liste der Exportoptionen.

Beispiel
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 geben Benutzern die Flexibilität, die Benchmarks an ihre spezifischen Bedürfnisse anzupassen und die Leistung verschiedener Exportformate einfach zu vergleichen.

SchlüsselStandardwertBeschreibung
modelNoneGibt den Pfad zur Modelldatei an. Akzeptiert sowohl .pt- als auch .yaml-Formate, z. B. "yolo26n.pt" für vortrainierte Modelle oder Konfigurationsdateien.
dataNonePfad zum Dataset-YAML für das Benchmarking, das 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).
imgsz640Die 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.
quantizeNoneAngeforderte Präzision: 16 (FP16) oder 8 (INT8; PTQ-Schemata erfordern Kalibrierung data/fraction, reines Gewichts-Quantisieren nicht); 32/nicht gesetzt ist FP32, wo das Format dies unterstützt – ein Format, das kein FP32 exportieren kann, lehnt ein explizites 32 ab oder fällt auf die von ihm benötigte Präzision zurück. Die native PyTorch-Zeile wird nicht exportiert: Nur 16 beeinflusst sie, indem FP16-Inferenz ausgewählt wird, während 8, 32 und nicht gesetzt FP32 ausführen. Jedes Format führt die Inferenz dann mit seiner eigenen Laufzeitpräzision aus. Ersetzt die veralteten Flags half/int8.
device'cpu'Definiert das Berechnungsgerät bzw. die Berechnungsgeräte für das Benchmarking, wie etwa "cpu" oder "cuda:0".
verboseFalseSteuert den Detailgrad der Protokollierungsausgabe. Setze verbose=True für detaillierte Protokolle.
eps0.001Kleines Epsilon (Millisekunden), das zur Inferenzzeit pro Bild hinzugefügt wird, bevor sie 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.
Standardwerte der eigenständigen Funktion `benchmark()`

Die eigenständige benchmark()-Funktion (from ultralytics.utils.benchmarks import benchmark) verwendet ihre eigenen Signatur-Standardwerte anstelle der Tabellenwerte oben, insbesondere model="yolo26n.pt" und imgsz=160; übergib imgsz explizit, um mit der yolo benchmark-CLI übereinzustimmen.

Exportformate#

Benchmarks versuchen automatisch, auf allen unten aufgeführten möglichen Exportformaten ausgeführt zu werden. Alternativ kannst du Benchmarking für ein spezifisches Format ausführen, indem du das Argument format verwendest, das jedes der unten erwähnten Formate akzeptiert.

FormatArgument formatModellMetadatenArgumente
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n.aimodelimgsz, batch, quantize

nms=None verwendet standardmäßig Rohausgaben für externes NMS. Setze nms=False, um einen verfügbaren NMS-freien Kopf auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die Einträge nms oben identifizieren Formate, die NMS mit nms=True einbetten können.

Ausführliche Informationen zu export findest du auf der Seite Export.

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 die mittlere durchschnittliche Genauigkeit (mAP50-95), die Genauigkeit und die Inferenzzeit in Millisekunden. Um Benchmarks auszuführen, kannst du entweder Python- oder CLI-Befehle verwenden. Zum Beispiel für ein Benchmarking auf einer GPU:

    Beispiel
    from 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 Argumente.

  • Der Export 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 eine bis zu 3-fache CPU-Beschleunigung.
    • TensorRT: Bietet eine bis zu 5-fache 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 Kompromisse 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 Hardware-Nutzung basierend auf den Benchmark-Ergebnissen.

    Wichtige Metriken wie mAP50-95, Top-1-Genauigkeit und Inferenzzeit helfen bei diesen Auswertungen. Siehe den Abschnitt Wichtige Metriken für weitere Informationen.

  • 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 Unterstützte Exportformate.

  • Beim Ausführen von Benchmarks können mehrere Argumente angepasst werden, um spezifischen Anforderungen gerecht zu 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 für einen fairen Vergleich dieselbe quadratische Bildgröße über PyTorch und exportierte Formate hinweg.
    • quantize: Angeforderte Präzision: 16 für FP16, 8 für INT8 (nützlich für Edge-Geräte); 32/nicht gesetzt ist FP32, wo das Format dies unterstützt – ein Format, das kein FP32 exportieren kann, lehnt ein explizites 32 ab oder fällt auf die von ihm benötigte Präzision zurück. Die native PyTorch-Zeile wird nicht exportiert: Nur 16 beeinflusst sie, indem FP16-Inferenz ausgewählt wird, während 8, 32 und nicht gesetzt FP32 ausführen. Jedes Format führt die Inferenz dann mit seiner eigenen Laufzeitpräzision aus.
    • device: Gib das Berechnungsgerät an (z. B. „cpu“, „cuda:0“).
    • verbose: Steuere den Detailgrad der Protokollierung.

    Eine vollständige Liste der Argumente findest du im Abschnitt Argumente.

Kommentare