Intel OpenVINO exportieren
In diesem Leitfaden wird der Export von YOLOv8 Modellen in das OpenVINO Format, das eine bis zu 3-fache CPU beschleunigen kann, sowie die Beschleunigung der YOLO Inferenz auf Intel GPU und NPU-Hardware.
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, um einmal zu schreiben und auf jeder unterstĂĽtzten Intel Hardware (CPU, GPU, FPGA, VPU, etc.) einzusetzen.
- 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 den Lastausgleich zwischen Intel Hardware und asynchrone Ausführung. Weitere Informationen zum Ausführen der Inferenz findest du im Handbuch 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-Grafikprozessoren sowie auf Intel Xeon-CPUs mit FP32-Genauigkeit (mit dem 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 Series ist eine vielseitige und robuste Lösung, die für die intelligente visuelle Cloud entwickelt wurde. Diese GPU unterstützt eine breite Palette 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 laufen auf Intel® Data Center GPU Flex 170 mit FP32-Präzision.
![Flex GPU Benchmarks](https://user-images.githubusercontent.com/26833433/253741543-62659bf8-1765-4d0b-b71c-8a4f9885506a.jpg)
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 Bogen GPU
Intel® Arc™ ist der Einstieg von Intel in den Markt für dedizierte GPU . Die Arc™-Serie wurde entwickelt, um mit führenden GPU Herstellern wie AMD und Nvidia zu konkurrieren, und ist sowohl für den Laptop- als auch für den Desktop-Markt geeignet. 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 Modellnamen GPU steht für eine mobile, integrierte Variante.
Erste Testberichte loben die Arc™-Serie, insbesondere den integrierten A770M GPU, für seine beeindruckende Grafikleistung. Die Verfügbarkeit der Arc™ Serie variiert je nach Region, und es wird erwartet, dass bald weitere Modelle auf den Markt kommen. Die Intel® Arc™ Grafikprozessoren bieten leistungsstarke Lösungen für eine Reihe von Computeranforderungen, von Spielen bis zur Erstellung von Inhalten.
Die folgenden Benchmarks laufen auf dem Intel® Arc 770 GPU mit FP32-Präzision.
![Arc GPU benchmarks](https://user-images.githubusercontent.com/26833433/253741545-8530388f-8fd1-44f7-a4ae-f875d59dc282.jpg)
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
Der 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 laufen auf Intel® Xeon® Scalable der 4. Generation CPU mit FP32 Präzision.
![Xeon CPU Benchmarks](https://user-images.githubusercontent.com/26833433/253741546-dcd8e52a-fc38-424f-b87e-c8365b6f28dc.jpg)
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 Kern 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 auf einem Intel® Core® i7-13700H der 13. Generation CPU mit FP32 Präzision durchgeführt.
![Kern CPU benchmarks](https://user-images.githubusercontent.com/26833433/254559985-727bfa43-93fa-4fec-a417-800f869f3f9e.jpg)
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.
Bei der Intel® Data Center GPU Flex Series konnte das OpenVINO Format eine fast 10-mal schnellere Inferenzgeschwindigkeit liefern als das ursprüngliche PyTorch Format. Auf dem Xeon CPU war das OpenVINO Format doppelt so schnell wie das PyTorch Format. 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 .
FAQ
Wie exportiere ich YOLOv8 Modelle in das Format OpenVINO ?
Der Export von YOLOv8 Modellen in das OpenVINO Format kann die Geschwindigkeit von CPU deutlich erhöhen und GPU und NPU Beschleunigungen auf Intel Hardware ermöglichen. Zum Exportieren kannst du entweder Python oder CLI verwenden, wie unten gezeigt:
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/'
Weitere Informationen findest du in der Dokumentation zu den Exportformaten.
Welche Vorteile hat die Verwendung von OpenVINO mit YOLOv8 Modellen?
Die Verwendung von Intel's OpenVINO Toolkit mit YOLOv8 Modellen bietet mehrere Vorteile:
- Leistung: Erreiche eine bis zu 3-fache Beschleunigung der CPU Inferenz und nutze Intel GPUs und NPUs zur Beschleunigung.
- Modell-Optimierer: Konvertiere, optimiere und fĂĽhre Modelle aus beliebten Frameworks wie PyTorch, TensorFlow und ONNX aus.
- Benutzerfreundlichkeit: Mehr als 80 Tutorial-NotizbĂĽcher sind verfĂĽgbar, um den Einstieg zu erleichtern, darunter auch solche fĂĽr YOLOv8.
- Heterogene AusfĂĽhrung: Setze Modelle auf verschiedener Intel Hardware mit einer einheitlichen API ein.
Detaillierte Leistungsvergleiche findest du in unserem Benchmarking-Bereich.
Wie kann ich mit einem YOLOv8 Modell, das nach OpenVINO exportiert wurde, Inferenzen durchfĂĽhren?
Nachdem du ein YOLOv8 Modell in das OpenVINO Format exportiert hast, kannst du die Inferenz mit Python oder CLI durchfĂĽhren:
Beispiel
from ultralytics import YOLO
# Load the exported OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")
# Run inference
results = ov_model("https://ultralytics.com/images/bus.jpg")
Weitere Informationen findest du in unserer Dokumentation zum Vorhersagemodus.
Warum sollte ich Ultralytics YOLOv8 gegenüber anderen Modellen für den OpenVINO Export wählen?
Ultralytics YOLOv8 ist fĂĽr die Echtzeit-Objekterkennung mit hoher Genauigkeit und Geschwindigkeit optimiert. Insbesondere in Kombination mit OpenVINO bietet YOLOv8 :
- Bis zu 3-fache Beschleunigung auf Intel CPUs
- Nahtloser Einsatz auf Intel GPUs und NPUs
- Konsistente und vergleichbare Genauigkeit bei verschiedenen Exportformaten
Eine ausfĂĽhrliche Leistungsanalyse findest du in unseren detaillierten YOLOv8 Benchmarks auf unterschiedlicher Hardware.
Kann ich die Modelle von YOLOv8 mit verschiedenen Formaten wie PyTorch, ONNX und OpenVINO vergleichen?
Ja, du kannst die Modelle von YOLOv8 in verschiedenen Formaten testen: PyTorch, TorchScript, ONNX und OpenVINO. Verwende den folgenden Codeschnipsel, um Benchmarks mit dem von dir gewählten Datensatz durchzuführen:
Beispiel
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all export formats
results = model.benchmarks(data="coco8.yaml")
Detaillierte Benchmark-Ergebnisse findest du in unserer Dokumentation zu Benchmarks und Exportformaten.
Erstellt 2023-11-12, Aktualisiert 2024-07-05
Autoren: glenn-jocher (14), andrei-kochin (1), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)