Intel OpenVINO Export
In diesem Leitfaden behandeln wir den Export von YOLOv8 Modellen in das OpenVINO Format, das eine bis zu dreifache CPU-Beschleunigung ermöglicht und die Inferenz von YOLO auf Intel GPU- und NPU-Hardware beschleunigt.
OpenVINOist ein umfassendes Toolkit für die Optimierung und den Einsatz von KI-Inferenzmodellen. Es steht für Open Visual Inference & Neural Network Optimization Toolkit. Auch wenn der Name Visual enthält, unterstützt OpenVINO auch verschiedene zusätzliche Aufgaben wie Sprache, Audio, Zeitreihen usw.
Pass auf: Wie exportiere und optimiere ich ein Ultralytics YOLOv8 Modell fĂĽr die Inferenz mit OpenVINO.
Verwendungsbeispiele
Exportiere ein YOLOv8n Modell in das OpenVINO Format und fĂĽhre Inferenzen mit dem exportierten Modell durch.
Beispiel
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')
# Export the model
model.export(format='openvino') # creates 'yolov8n_openvino_model/'
# Load the exported OpenVINO model
ov_model = YOLO('yolov8n_openvino_model/')
# Run inference
results = ov_model('https://ultralytics.com/images/bus.jpg')
Argumente
SchlĂĽssel | Wert | Beschreibung |
---|---|---|
format |
'openvino' |
Format zum Exportieren in |
imgsz |
640 |
Bildgröße als Skalar oder (h, w) Liste, z.B. (640, 480) |
half |
False |
FP16 Quantisierung |
Vorteile von OpenVINO
- Leistung: OpenVINO bietet leistungsstarke Inferenzen, indem es die Leistung von Intel CPUs, integrierten und diskreten GPUs und FPGAs nutzt.
- UnterstĂĽtzung fĂĽr heterogene AusfĂĽhrung: OpenVINO bietet eine API, mit der du einmal schreiben und auf jeder unterstĂĽtzten Intel-Hardware (CPU, GPU, FPGA, VPU, etc.) einsetzen kannst.
- Model Optimizer: OpenVINO bietet einen Model Optimizer, der Modelle aus beliebten Deep Learning Frameworks wie PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle und Caffe importiert, konvertiert und optimiert.
- Benutzerfreundlichkeit: Das Toolkit wird mit mehr als 80 LehrbĂĽchern (einschlieĂźlich YOLOv8 optimization) geliefert, die verschiedene Aspekte des Toolkits behandeln.
OpenVINO Struktur exportieren
Wenn du ein Modell in das Format OpenVINO exportierst, entsteht ein Verzeichnis, das Folgendes enthält:
- XML-Datei: Beschreibt die Netzwerktopologie.
- BIN-Datei: Enthält die Binärdaten von weights and biases .
- Mapping-Datei: Enthält die Zuordnung der ursprünglichen Modellausgangs-Tensoren zu OpenVINO tensor Namen.
Du kannst diese Dateien verwenden, um mit der OpenVINO Inference Engine Inferenzen durchzufĂĽhren.
OpenVINO Export im Einsatz verwenden
Sobald du die OpenVINO Dateien hast, kannst du die OpenVINO Runtime verwenden, um das Modell auszuführen. Die Runtime bietet eine einheitliche API für Inferenzen auf allen unterstützten Intel-Geräten. Außerdem bietet sie erweiterte Funktionen wie Lastverteilung auf Intel-Hardware und asynchrone Ausführung. Weitere Informationen zum Ausführen der Inferenz findest du in der Anleitung zur Inferenz mit OpenVINO Runtime.
Denke daran, dass du die XML- und BIN-Dateien sowie alle anwendungsspezifischen Einstellungen wie Eingabegröße, Skalierungsfaktor für die Normalisierung usw. benötigst, um das Modell mit der Runtime korrekt einzurichten und zu verwenden.
In deinem Einsatzprogramm wĂĽrdest du normalerweise die folgenden Schritte ausfĂĽhren:
- Initialisiere OpenVINO durch Erstellen von
core = Core()
. - Laden Sie das Modell mit der Option
core.read_model()
Methode. - Kompiliere das Modell mit der
core.compile_model()
Funktion. - Bereite die Eingabe vor (Bild, Text, Audio, etc.).
- Inferenz durchfĂĽhren mit
compiled_model(input_data)
.
AusfĂĽhrlichere Schritte und Codeschnipsel findest du in der DokumentationOpenVINO oder im API-Tutorial.
OpenVINO YOLOv8 Benchmarks
YOLOv8 Die folgenden Benchmarks wurden vom Ultralytics Team auf 4 verschiedenen Modellformaten zur Messung von Geschwindigkeit und Genauigkeit durchgeführt: PyTorch, TorchScript, ONNX und OpenVINO. Die Benchmarks wurden auf Intel Flex und Arc GPUs sowie auf Intel Xeon CPUs mit FP32-Präzision (mit der half=False
Argument).
Hinweis
Die folgenden Benchmarking-Ergebnisse dienen als Referenz und können je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Arbeitslast des Systems zum Zeitpunkt der Durchführung der Benchmarks variieren.
Alle Benchmarks laufen mit openvino
Python Paket-Version 2023.0.1.
Intel Flex GPU
Die Intel® Data Center GPU Flex Serie ist eine vielseitige und robuste Lösung für die intelligente visuelle Cloud. Dieser Grafikprozessor unterstützt eine Vielzahl von Workloads, darunter Media-Streaming, Cloud-Gaming, visuelle KI-Inferenz und virtuelle Desktop-Infrastruktur-Workloads. Sie zeichnet sich durch ihre offene Architektur und die integrierte Unterstützung für die AV1-Kodierung aus und bietet einen standardbasierten Software-Stack für leistungsstarke, architekturübergreifende Anwendungen. Die Flex Series GPU ist auf Dichte und Qualität optimiert und bietet hohe Zuverlässigkeit, Verfügbarkeit und Skalierbarkeit.
Die folgenden Benchmarks wurden auf der Intel® Data Center GPU Flex 170 mit FP32 Präzision durchgeführt.
Modell | Format | Status | Größe (MB) | mAP50-95(B) | Inferenzzeit (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 21.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.24 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 37.22 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 3.29 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 31.89 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 32.71 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.42 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4470 | 3.92 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 50.75 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 47.90 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 63.16 |
YOLOv8m | OpenVINO | âś… | 49.8 | 0.4997 | 7.11 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 77.45 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 85.71 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.94 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5264 | 9.37 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 100.09 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.64 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 110.32 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 15.02 |
Diese Tabelle zeigt die Benchmark-Ergebnisse für fünf verschiedene Modelle (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) in vier verschiedenen Formaten (PyTorch, TorchScript, ONNX, OpenVINO) und gibt uns den Status, die Größe, die mAP50-95(B)-Metrik und die Inferenzzeit für jede Kombination an.
Intel Arc GPU
Intel® Arc™ ist Intels Einstieg in den Markt für dedizierte Grafikprozessoren. Die Arc™-Serie wurde entwickelt, um mit führenden GPU-Herstellern wie AMD und Nvidia zu konkurrieren, und richtet sich sowohl an den Laptop- als auch an den Desktop-Markt. Die Serie umfasst mobile Versionen für kompakte Geräte wie Laptops und größere, leistungsstärkere Versionen für Desktop-Computer.
Die Arc™-Serie ist in drei Kategorien unterteilt: Arc™ 3, Arc™ 5 und Arc™ 7, wobei jede Zahl die Leistungsstufe angibt. Jede Kategorie umfasst mehrere Modelle, und das "M" im Namen des GPU-Modells steht für eine mobile, integrierte Variante.
Erste Testberichte loben die Arc™-Serie, insbesondere die integrierte A770M-GPU, für ihre beeindruckende Grafikleistung. Die Verfügbarkeit der Arc™-Serie variiert je nach Region, und weitere Modelle werden voraussichtlich bald auf den Markt kommen. Die Intel® Arc™-Grafikprozessoren bieten leistungsstarke Lösungen für eine Vielzahl von Computeranforderungen, von Spielen bis zur Erstellung von Inhalten.
Die folgenden Benchmarks laufen auf der Intel® Arc 770 GPU mit FP32-Präzision.
Modell | Format | Status | Größe (MB) | metrisch/mAP50-95(B) | Inferenzzeit (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 88.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 102.66 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 57.98 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 8.52 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 189.83 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 227.58 |
YOLOv8s | ONNX | âś… | 42.7 | 0.4472 | 142.03 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4469 | 9.19 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 411.64 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 517.12 |
YOLOv8m | ONNX | âś… | 98.9 | 0.4999 | 298.68 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 12.55 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 725.73 |
YOLOv8l | TorchScript | âś… | 167.1 | 0.5268 | 892.83 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 576.11 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5262 | 17.62 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 988.92 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 1186.42 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 768.90 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 19 |
Intel Xeon CPU
Die Intel® Xeon® CPU ist ein leistungsstarker Prozessor in Serverqualität, der für komplexe und anspruchsvolle Arbeitslasten entwickelt wurde. Von High-End-Cloud-Computing und Virtualisierung bis hin zu Anwendungen für künstliche Intelligenz und maschinelles Lernen bieten die Xeon® CPUs die Leistung, Zuverlässigkeit und Flexibilität, die für die heutigen Rechenzentren erforderlich sind.
Die Xeon® CPUs bieten eine hohe Rechendichte und Skalierbarkeit und eignen sich daher sowohl für kleine Unternehmen als auch für Großunternehmen. Mit der Wahl von Intel® Xeon® CPUs können Unternehmen ihre anspruchsvollsten Rechenaufgaben selbstbewusst bewältigen und Innovationen fördern, während sie gleichzeitig kostengünstig und effizient arbeiten.
Die folgenden Benchmarks wurden auf einer Intel® Xeon® Scalable CPU der 4. Generation mit FP32-Genauigkeit durchgeführt.
Modell | Format | Status | Größe (MB) | metrisch/mAP50-95(B) | Inferenzzeit (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 24.36 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.93 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 39.86 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3704 | 11.34 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 33.77 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 34.84 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.23 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4471 | 13.86 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 53.91 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 53.51 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 64.16 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 28.79 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 75.78 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 79.13 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.45 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5263 | 56.23 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 96.60 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.28 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 111.02 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5371 | 83.28 |
Intel Core CPU
Die Intel® Core® Serie ist eine Reihe von Hochleistungsprozessoren von Intel. Die Reihe umfasst Core i3 (Einstiegsmodell), Core i5 (Mittelklasse), Core i7 (High-End) und Core i9 (extreme Leistung). Jede Serie eignet sich für unterschiedliche Anforderungen und Budgets, von alltäglichen Aufgaben bis hin zu anspruchsvollen professionellen Workloads. Mit jeder neuen Generation werden die Leistung, die Energieeffizienz und die Funktionen verbessert.
Die folgenden Benchmarks wurden mit einer 13th Gen Intel® Core® i7-13700H CPU mit FP32 Präzision durchgeführt.
Modell | Format | Status | Größe (MB) | metrisch/mAP50-95(B) | Inferenzzeit (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.4478 | 104.61 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.4525 | 112.39 |
YOLOv8n | ONNX | âś… | 12.2 | 0.4525 | 28.02 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.4504 | 23.53 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.5885 | 194.83 |
YOLOv8s | TorchScript | âś… | 43.0 | 0.5962 | 202.01 |
YOLOv8s | ONNX | âś… | 42.8 | 0.5962 | 65.74 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.5966 | 38.66 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.6101 | 355.23 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.6120 | 424.78 |
YOLOv8m | ONNX | âś… | 99.0 | 0.6120 | 173.39 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.6091 | 69.80 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.6591 | 593.00 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.6580 | 697.54 |
YOLOv8l | ONNX | âś… | 166.8 | 0.6580 | 342.15 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.0708 | 117.69 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.6651 | 804.65 |
YOLOv8x | TorchScript | âś… | 260.8 | 0.6650 | 921.46 |
YOLOv8x | ONNX | âś… | 260.4 | 0.6650 | 526.66 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.6619 | 158.73 |
Reproduziere unsere Ergebnisse
Um die obigen Ultralytics Benchmarks fĂĽr alle Exportformate zu reproduzieren, fĂĽhre diesen Code aus:
Beispiel
Beachte, dass die Benchmarking-Ergebnisse je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Arbeitsbelastung des Systems zum Zeitpunkt der Durchführung der Benchmarks variieren können. Die zuverlässigsten Ergebnisse erhältst du, wenn du einen Datensatz mit einer großen Anzahl von Bildern verwendest, d. h. data='coco128.yaml' (128 val images), or
data='coco.yaml'` (5000 val-Bilder).
Fazit
Die Benchmarking-Ergebnisse zeigen deutlich die Vorteile des Exports des Modells YOLOv8 in das Format OpenVINO . Ăśber verschiedene Modelle und Hardware-Plattformen hinweg ĂĽbertrifft das Format OpenVINO andere Formate in Bezug auf die Geschwindigkeit der Schlussfolgerungen bei vergleichbarer Genauigkeit.
Für die Intel® Data Center GPU Flex Series konnte das Format OpenVINO eine fast 10-mal schnellere Inferenzgeschwindigkeit liefern als das ursprüngliche Format PyTorch . Auf der Xeon-CPU war das Format OpenVINO doppelt so schnell wie das Format PyTorch . Die Genauigkeit der Modelle blieb bei den verschiedenen Formaten nahezu identisch.
Die Benchmarks unterstreichen die Effektivität von OpenVINO als Werkzeug für den Einsatz von Deep-Learning-Modellen. Durch die Konvertierung von Modellen in das OpenVINO Format können Entwickler/innen erhebliche Leistungsverbesserungen erzielen, die den Einsatz dieser Modelle in realen Anwendungen erleichtern.
AusfĂĽhrlichere Informationen und Anleitungen zur Verwendung von OpenVINO findest du in der offiziellen Dokumentation von OpenVINO .
Erstellt 2023-11-12, Aktualisiert 2024-04-18
Autoren: glenn-jocher (9), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)