Overslaan naar inhoud

Intel OpenVINO Exporteer

OpenVINO Ecosysteem

In this guide, we cover exporting YOLOv8 models to the OpenVINO format, which can provide up to 3x CPU speedup, as well as accelerating YOLO inference on Intel GPU and NPU hardware.

OpenVINO, kort voor Open Visual Inference & Neural Network Optimization toolkit, is een uitgebreide toolkit voor het optimaliseren en inzetten van AI-inferentiemodellen. Hoewel de naam Visual bevat, ondersteunt OpenVINO ook verschillende andere taken, waaronder taal, audio, tijdreeksen, enz.



Kijken: Een Ultralytics YOLOv8 model exporteren en optimaliseren voor inferentie met OpenVINO.

Voorbeelden

Exporteer een YOLOv8n model naar OpenVINO formaat en voer inferentie uit met het geëxporteerde model.

Voorbeeld

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")
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

Argumenten

Sleutel Waarde Beschrijving
format 'openvino' formaat om naar te exporteren
imgsz 640 afbeeldingsgrootte als scalair of (h, w) lijst, bijv. (640, 480)
half False FP16 kwantisatie

Voordelen van OpenVINO

  1. Performance: OpenVINO delivers high-performance inference by utilizing the power of Intel CPUs, integrated and discrete GPUs, and FPGAs.
  2. Support for Heterogeneous Execution: OpenVINO provides an API to write once and deploy on any supported Intel hardware (CPU, GPU, FPGA, VPU, etc.).
  3. Model Optimizer: OpenVINO biedt een Model Optimizer die modellen importeert, converteert en optimaliseert van populaire deep learning frameworks zoals PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, en Caffe.
  4. Gebruiksgemak: De toolkit wordt geleverd met meer dan 80 tutorials (inclusief YOLOv8 optimalisatie) waarin verschillende aspecten van de toolkit worden uitgelegd.

OpenVINO Exportstructuur

Wanneer je een model exporteert naar het formaat OpenVINO , resulteert dit in een map met daarin het volgende:

  1. XML-bestand: Beschrijft de netwerktopologie.
  2. BIN bestand: Bevat de weights and biases binaire gegevens.
  3. Mapping bestand: Bevat de mapping van originele modeluitgangstensoren naar OpenVINO tensor namen.

Je kunt deze bestanden gebruiken om inferentie uit te voeren met de OpenVINO Inference Engine.

OpenVINO exporteren in implementatie gebruiken

Once you have the OpenVINO files, you can use the OpenVINO Runtime to run the model. The Runtime provides a unified API to inference across all supported Intel hardware. It also provides advanced capabilities like load balancing across Intel hardware and asynchronous execution. For more information on running the inference, refer to the Inference with OpenVINO Runtime Guide.

Onthoud dat je de XML- en BIN-bestanden nodig hebt, evenals toepassingsspecifieke instellingen zoals invoergrootte, schaalfactor voor normalisatie, enzovoort, om het model correct in te stellen en te gebruiken met de Runtime.

In je implementatietoepassing zou je normaal gesproken de volgende stappen uitvoeren:

  1. Initialiseer OpenVINO door core = Core().
  2. Laad het model met de core.read_model() methode.
  3. Compileer het model met de core.compile_model() functie.
  4. Bereid de invoer voor (afbeelding, tekst, audio, enz.).
  5. Inferentie uitvoeren met compiled_model(input_data).

Raadpleeg voor meer gedetailleerde stappen en codefragmenten de OpenVINO documentatie of API tutorial.

OpenVINO YOLOv8 Benchmarks

YOLOv8 Onderstaande benchmarks zijn uitgevoerd door het Ultralytics team op 4 verschillende modelformaten die snelheid en nauwkeurigheid meten: PyTorch, TorchScript, ONNX en OpenVINO. De benchmarks werden uitgevoerd op Intel Flex en Arc GPU's, en op Intel Xeon CPU's met FP32 precisie (met de half=False argument).

Opmerking

De benchmarkresultaten hieronder zijn ter referentie en kunnen variëren op basis van de exacte hardware- en softwareconfiguratie van een systeem en de huidige werkbelasting van het systeem op het moment dat de benchmarks worden uitgevoerd.

Alle benchmarks worden uitgevoerd met openvino Python pakketversie 2023.0.1.

Intel Flex GPU

De Intel® Data Center GPU Flex Series is een veelzijdige en robuuste oplossing die is ontworpen voor de intelligente visuele cloud. Deze GPU ondersteunt een breed scala aan werklasten, waaronder media streaming, cloud gaming, AI visual inference en virtual desktop Infrastructure werklasten. Hij onderscheidt zich door zijn open architectuur en ingebouwde ondersteuning voor de AV1 codering, waardoor een op standaarden gebaseerde softwarestack wordt geboden voor krachtige, architectuur-overschrijdende toepassingen. De Flex Series GPU is geoptimaliseerd voor dichtheid en kwaliteit en biedt een hoge betrouwbaarheid, beschikbaarheid en schaalbaarheid.

Onderstaande benchmarks zijn uitgevoerd op Intel® Data Center GPU Flex 170 met FP32 precisie.

Flex GPU benchmarks
Model Formaat Status Grootte (MB) mAP50-95(B) Inferentietijd (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

Deze tabel toont de benchmarkresultaten voor vijf verschillende modellen (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) over vier verschillende indelingen (PyTorch, TorchScript, ONNX, OpenVINO), met de status, grootte, mAP50-95(B) metric en inferentietijd voor elke combinatie.

Intel Boog GPU

Intel® Arc™ vertegenwoordigt Intel's intrede in de speciale GPU markt. De Arc™ serie, ontworpen om te concurreren met toonaangevende GPU fabrikanten zoals AMD en Nvidia, richt zich op zowel de laptop- als de desktopmarkt. De serie omvat mobiele versies voor compacte apparaten zoals laptops en grotere, krachtigere versies voor desktopcomputers.

De Arc™ serie is onderverdeeld in drie categorieën: Arc™ 3, Arc™ 5 en Arc™ 7, waarbij elk nummer het prestatieniveau aangeeft. Elke categorie omvat verschillende modellen en de 'M' in de modelnaam GPU staat voor een mobiele, geïntegreerde variant.

De eerste reviews hebben de Arc™ serie, met name de geïntegreerde A770M GPU, geprezen voor zijn indrukwekkende grafische prestaties. De verkrijgbaarheid van de Arc™ serie varieert per regio en er worden binnenkort extra modellen verwacht. Intel® Arc™ GPU's bieden krachtige oplossingen voor een reeks computerbehoeften, van gaming tot het maken van content.

Onderstaande benchmarks zijn uitgevoerd op Intel® Arc 770 GPU met FP32 precisie.

Arc GPU benchmarks
Model Formaat Status Grootte (MB) metriek/mAP50-95(B) Inferentietijd (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

De Intel® Xeon® CPU is een krachtige processor van serverkwaliteit die is ontworpen voor complexe en veeleisende werklasten. Van high-end cloud computing en virtualisatie tot kunstmatige intelligentie en machine learning toepassingen, Xeon® CPU's bieden de kracht, betrouwbaarheid en flexibiliteit die nodig is voor de datacenters van vandaag.

Xeon® CPU's leveren met name een hoge computerdichtheid en schaalbaarheid, waardoor ze ideaal zijn voor zowel kleine bedrijven als grote ondernemingen. Door te kiezen voor Intel® Xeon® CPU's kunnen organisaties met vertrouwen hun meest veeleisende computertaken aan en innovatie stimuleren met behoud van kosteneffectiviteit en operationele efficiëntie.

Onderstaande benchmarks draaien op 4e generatie Intel® Xeon® Scalable CPU met FP32 precisie.

Xeon CPU benchmarks
Model Formaat Status Grootte (MB) metriek/mAP50-95(B) Inferentietijd (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

De Intel® Core® serie is een reeks krachtige processors van Intel. De serie omvat Core i3 (instapmodel), Core i5 (middensegment), Core i7 (topsegment) en Core i9 (extreme prestaties). Elke serie is geschikt voor verschillende computerbehoeften en budgetten, van alledaagse taken tot veeleisende professionele werklasten. Bij elke nieuwe generatie worden verbeteringen aangebracht in prestaties, energiezuinigheid en functies.

Onderstaande benchmarks zijn uitgevoerd op de 13e generatie Intel® Core® i7-13700H CPU met FP32 precisie.

Core CPU benchmarks
Model Formaat Status Grootte (MB) metriek/mAP50-95(B) Inferentietijd (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

Onze resultaten reproduceren

Voer deze code uit om de bovenstaande Ultralytics benchmarks te reproduceren op alle exportformaten:

Voorbeeld

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml")
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml

Merk op dat de benchmarkresultaten kunnen variëren op basis van de exacte hardware- en softwareconfiguratie van een systeem en de huidige werkbelasting van het systeem op het moment dat de benchmarks worden uitgevoerd. Gebruik voor de meest betrouwbare resultaten een dataset met een groot aantal afbeeldingen, d.w.z. data='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 valafbeeldingen).

Conclusie

De benchmarkresultaten laten duidelijk de voordelen zien van het exporteren van het YOLOv8 model naar het OpenVINO formaat. Bij verschillende modellen en hardwareplatforms presteert het OpenVINO formaat consequent beter dan andere formaten wat betreft inferentiesnelheid, terwijl de nauwkeurigheid vergelijkbaar blijft.

Voor de Intel® Data Center GPU Flex Series was de OpenVINO indeling in staat om inferentiesnelheden te leveren die bijna 10 keer sneller waren dan de oorspronkelijke PyTorch indeling. Op de Xeon CPU was de indeling OpenVINO twee keer zo snel als de indeling PyTorch . De nauwkeurigheid van de modellen bleef vrijwel identiek voor de verschillende indelingen.

De benchmarks onderstrepen de effectiviteit van OpenVINO als hulpmiddel voor het implementeren van deep learning modellen. Door modellen te converteren naar het OpenVINO formaat kunnen ontwikkelaars aanzienlijke prestatieverbeteringen bereiken, waardoor het eenvoudiger wordt om deze modellen in te zetten in echte toepassingen.

Voor meer gedetailleerde informatie en instructies over het gebruik van OpenVINO, raadpleeg je de officiële OpenVINO documentatie.

FAQ

Hoe exporteer ik YOLOv8 modellen naar het formaat OpenVINO ?

Het exporteren van YOLOv8 modellen naar het formaat OpenVINO kan de snelheid van CPU aanzienlijk verhogen en GPU en NPU versnellingen mogelijk maken op Intel hardware. Om te exporteren kun je Python of CLI gebruiken, zoals hieronder getoond:

Voorbeeld

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="openvino")  # creates 'yolov8n_openvino_model/'
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

Raadpleeg voor meer informatie de documentatie over exportformaten.

Wat zijn de voordelen van het gebruik van OpenVINO met YOLOv8 modellen?

Het gebruik van Intel's OpenVINO toolkit met YOLOv8 modellen biedt verschillende voordelen:

  1. Performance: Achieve up to 3x speedup on CPU inference and leverage Intel GPUs and NPUs for acceleration.
  2. Model Optimizer: Modellen van populaire frameworks zoals PyTorch, TensorFlow en ONNX converteren, optimaliseren en uitvoeren.
  3. Gebruiksgemak: Er zijn meer dan 80 zelfstudienotitieboeken beschikbaar om gebruikers op weg te helpen, waaronder notitieboeken voor YOLOv8.
  4. Heterogeneous Execution: Deploy models on various Intel hardware with a unified API.

Ga voor gedetailleerde prestatievergelijkingen naar onze benchmarksectie.

Hoe kan ik inferentie uitvoeren met een YOLOv8 model dat is geëxporteerd naar OpenVINO?

Nadat je een YOLOv8 model hebt geëxporteerd naar het formaat OpenVINO , kun je inferentie uitvoeren met Python of CLI:

Voorbeeld

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")
# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

Raadpleeg onze documentatie over de voorspellingsmodus voor meer informatie.

Waarom zou ik kiezen voor Ultralytics YOLOv8 boven andere modellen voor OpenVINO export?

Ultralytics YOLOv8 is geoptimaliseerd voor realtime objectdetectie met hoge nauwkeurigheid en snelheid. In combinatie met OpenVINO biedt YOLOv8 :

  • Tot 3x sneller op Intel CPU's
  • Naadloze inzet op Intel GPU's en NPU's
  • Consistente en vergelijkbare nauwkeurigheid in verschillende exportformaten

Bekijk voor een diepgaande prestatieanalyse onze gedetailleerde YOLOv8 benchmarks op verschillende hardware.

Kan ik YOLOv8 modellen benchmarken op verschillende formaten zoals PyTorch, ONNX, en OpenVINO?

Ja, je kunt YOLOv8 modellen in verschillende formaten benchmarken, waaronder PyTorch, TorchScript, ONNX, en OpenVINO. Gebruik het volgende codefragment om benchmarks uit te voeren op de door jou gekozen dataset:

Voorbeeld

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")
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml

Raadpleeg voor gedetailleerde benchmarkresultaten onze benchmarksectie en documentatie over exportformaten.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (14), andrei-kochin (1), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)

Reacties