Ultralytics YOLO27:
Get Started

Modell-Benchmarking mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

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 von Ultralytics YOLO26 bietet dafür ein robustes Verfahren, mit dem du die Geschwindigkeit und Genauigkeit deines Modells in einer Reihe von Exportformaten bewerten kannst.

Vorläufige Geschwindigkeits-Benchmarks findest du in der unveröffentlichten YOLO27-Vorschau.



Ansehen: Ultralytics-YOLO26-Modelle einem Leistungstest unterziehen | So vergleichst du die Modellleistung auf verschiedener Hardware

Warum ist Benchmarking so wichtig?#

  • Fundierte Entscheidungen: Gewinne Einblicke in die Kompromisse zwischen Geschwindigkeit und Genauigkeit.
  • Ressourcenzuweisung: Finde heraus, wie verschiedene Exportformate auf unterschiedlicher Hardware abschneiden.
  • Optimierung: Finde heraus, welches Exportformat für deinen konkreten Anwendungsfall die beste Leistung bietet.
  • Kosteneffizienz: Nutze die Hardware-Ressourcen anhand der Benchmark-Ergebnisse effizienter.

Wichtige Kennzahlen im Benchmark-Modus#

  • mAP50-95: Für die Objekterkennung, Instanzsegmentierung, Pose-Schätzung und OBB.
  • mIoU: Für semantische Segmentierung.
  • delta1: Für Tiefenschätzung.
  • accuracy_top1: Für Bildklassifizierung.
  • Inferenzzeit: Benötigte Zeit pro Bild in Millisekunden.

Unterstützte Exportformate#

  • ONNX: Für optimale CPU-Leistung
  • TensorRT: Für maximale GPU-Effizienz
  • OpenVINO: Zur Optimierung für Intel-Hardware
  • CoreML, TensorFlow SavedModel und mehr: Für unterschiedliche Bereitstellungsanforderungen.
Tipp
  • Exportiere nach ONNX oder OpenVINO, um die CPU-Geschwindigkeit um bis zu das Dreifache zu steigern.
  • Exportiere nach TensorRT, um die GPU-Geschwindigkeit um bis zu das Fünffache zu steigern.

Anwendungsbeispiele#

Empfohlene Installation

Installiere Ultralytics vor dem Benchmarking mit den Export-Abhängigkeiten, damit keine Pakete fehlen.

pip install ultralytics[export]

Führe YOLO26n-Benchmarks für alle unterstützten Exportformate aus (ONNX, TensorRT usw.). Eine vollständige Liste der Exportoptionen findest du im Abschnitt „Argumente“ weiter unten.

Beispiel
from ultralytics.utils.benchmarks import benchmark

# Benchmark auf der GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# Bestimmtes Exportformat benchmarken
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, Benchmarks an deine konkreten Anforderungen anzupassen und die Leistung verschiedener Exportformate einfach zu vergleichen.

SchlüsselStandardwertBeschreibung
modelNoneGibt den Pfad zur Modelldatei an. Unterstützt sowohl das Format .pt als auch .yaml, z. B. "yolo26n.pt" für vortrainierte Modelle oder Konfigurationsdateien.
dataNonePfad zur Dataset-YAML-Datei für das Benchmarking, die normalerweise Pfade und Einstellungen für Validierungsdaten enthält. Beispiel: "coco8.yaml". Bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder der Name eines integrierten Datasets verwendet (z. B. imagenet10).
imgsz640Die Eingabebildgröße für das Modell. Für quadratische Bilder muss es eine einzelne Ganzzahl sein (z. B. 640); benchmark() unterstützt nur quadratische Bildgrößen.
quantizeNoneAngeforderte Genauigkeit: 16 (FP16) oder 8 (INT8; PTQ-Verfahren benötigen Kalibrierungs-data/fraction, Verfahren, die nur Gewichte quantisieren, hingegen nicht); 32/nicht gesetzt bedeutet FP32, sofern das Format dies unterstützt – ein Format, das keinen FP32-Export unterstützt, weist ein explizites 32 zurück oder greift auf die erforderliche Genauigkeit zurück. Die native PyTorch-Zeile wird nicht exportiert: Nur 16 wirkt sich darauf aus und wählt die FP16-Inferenz aus, während 8, 32 und ein nicht gesetzter Wert FP32 ausführen. Anschließend führt jedes Format die Inferenz mit seiner eigenen Laufzeitgenauigkeit aus. Ersetzt die veralteten Flags half/int8.
deviceNoneLegt das Berechnungsgerät für das Benchmarking fest, z. B. "cpu" oder "cuda:0"; ist kein Gerät festgelegt, wird die erste verfügbare GPU verwendet, andernfalls die CPU.
verboseFalseBei True oder einem Float-Wert führen Benchmark-Fehler (außer Assertions) zu einer Ausnahme, anstatt als Fehler protokolliert zu werden; bei einem Float-Wert wie 0.25 wird außerdem geprüft, ob die Metrik jedes erfolgreichen Formats über diesem Grenzwert liegt.
eps0.001Ein kleiner Epsilon-Wert (Millisekunden), der zur Inferenzzeit pro Bild addiert wird, bevor sie in FPS umgerechnet wird, um eine Division durch null zu verhindern. Wird selten geändert.
format''Benchmarkt nur das angegebene Exportformat (z. B. format=onnx). Lass den Wert leer, um automatisch alle unterstützten Formate zu testen.
Standardwerte der eigenständigen Funktion `benchmark()`

Die eigenständige Funktion benchmark() (from ultralytics.utils.benchmarks import benchmark) verwendet ihre eigenen Signatur-Standardwerte anstelle der Tabellenwerte oben, insbesondere model="yolo26n.pt", imgsz=160 und device="cpu"; übergib imgsz und device ausdrücklich, um dieselben Werte wie in der yolo benchmark CLI zu verwenden.

Exportformate#

Benchmarks werden automatisch für alle unten aufgeführten möglichen Exportformate ausgeführt. Alternativ kannst du Benchmarks für ein bestimmtes Format ausführen, indem du das Argument format verwendest, das alle unten genannten Formate akzeptiert.

FormatArgument formatModellMetadatenArgumente
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None gibt standardmäßig Rohdaten für die externe NMS aus. Lege nms=False fest, um einen verfügbaren Kopf ohne NMS auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die obigen Einträge nms kennzeichnen Formate, die NMS mit nms=True integrieren können.

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

Häufig gestellte Fragen#

  • Ultralytics YOLO26 bietet einen Benchmark-Modus, mit dem du die Leistung deines Modells in verschiedenen Exportformaten bewerten kannst. Dieser Modus liefert Einblicke in wichtige Kennzahlen wie die mittlere Average Precision (mAP50-95), die Genauigkeit und die Inferenzzeit in Millisekunden. Benchmarks kannst du entweder mit Python oder mit CLI-Befehlen ausführen. So benchmarkst du beispielsweise auf einer GPU:

    Beispiel
    from ultralytics.utils.benchmarks import benchmark
    
    # Benchmark auf der GPU
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    Weitere Informationen zu Benchmark-Argumenten findest du im Abschnitt Argumente.

  • Wenn du YOLO26-Modelle in verschiedene Formate wie ONNX, TensorRT und OpenVINO exportierst, kannst du die Leistung für deine Bereitstellungsumgebung optimieren. Zum Beispiel:

    • ONNX: Ermöglicht eine bis zu dreifach höhere CPU-Geschwindigkeit.
    • TensorRT: Ermöglicht eine bis zu fünffach höhere GPU-Geschwindigkeit.
    • OpenVINO: Speziell für Intel-Hardware optimiert.

    Diese Formate verbessern die Inferenzgeschwindigkeit auf der jeweiligen Zielhardware und machen deine Modelle für zahlreiche reale Anwendungen effizienter. Ausführliche Informationen findest du auf der Seite Export.

  • Das Benchmarking deiner YOLO26-Modelle ist aus mehreren Gründen wichtig:

    • Fundierte Entscheidungen: Verstehe die Kompromisse zwischen Geschwindigkeit und Genauigkeit.
    • Ressourcenzuweisung: Beurteile die Leistung auf verschiedenen Hardware-Optionen.
    • Optimierung: Finde heraus, welches Exportformat bei bestimmten Anwendungsfällen die beste Leistung bietet.
    • Kosteneffizienz: Optimiere die Hardware-Nutzung anhand der Benchmark-Ergebnisse.

    Wichtige Kennzahlen wie mAP50-95, Top-1-Genauigkeit und Inferenzzeit helfen bei diesen Bewertungen. Weitere Informationen findest du im Abschnitt Wichtige Kennzahlen.

  • YOLO26 unterstützt verschiedene Exportformate, die jeweils auf bestimmte Hardware und Anwendungsfälle zugeschnitten sind:

    • ONNX: Am besten für CPU-Leistung geeignet.
    • TensorRT: Ideal für GPU-Effizienz.
    • OpenVINO: Für Intel-Hardware optimiert.
    • CoreML und 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 kannst du verschiedene Argumente an deine Anforderungen anpassen:

    • model: Pfad zur Modelldatei (z. B. "yolo26n.pt").
    • data: Pfad zur Dataset-YAML-Datei (z. B. "coco8.yaml"); bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder der Name eines integrierten Datasets verwendet (z. B. imagenet10).
    • imgsz: Die quadratische Eingabebildgröße als einzelne Ganzzahl, z. B. 640. Der Benchmark-Modus verwendet für PyTorch und exportierte Formate dieselbe quadratische Bildgröße, um einen fairen Vergleich zu ermöglichen.
    • quantize: Angeforderte Genauigkeit: 16 für FP16, 8 für INT8 (nützlich für Edge-Geräte); 32/nicht gesetzt bedeutet FP32, sofern das Format dies unterstützt – ein Format, das keinen FP32-Export unterstützt, weist ein explizites 32 zurück oder greift auf die erforderliche Genauigkeit zurück. Die native PyTorch-Zeile wird nicht exportiert: Nur 16 wirkt sich darauf aus und wählt die FP16-Inferenz aus, während 8, 32 und ein nicht gesetzter Wert FP32 ausführen. Anschließend führt jedes Format die Inferenz mit seiner eigenen Laufzeitgenauigkeit aus.
    • device: Gibt das Berechnungsgerät an (z. B. "cpu", "cuda:0").
    • verbose: Löst bei Benchmark-Fehlern eine Ausnahme aus, anstatt sie zu protokollieren; übergib einen Float-Wert, um zusätzlich zu verlangen, dass die Metrik jedes Formats diesen Grenzwert überschreitet.

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

Kommentare