Vai al contenuto

Intel OpenVINO Esportazione

OpenVINO Ecosistema

In questa guida, ci occupiamo dell'esportazione dei modelli YOLOv8 nel formato OpenVINO che può fornire un incremento di velocità fino a 3 volte CPU nonché l'accelerazione dell'inferenza di YOLO su Intel GPU e sull'hardware NPU.

OpenVINO, acronimo di Open Visual Inference & Neural Network Optimization toolkit, è un toolkit completo per l'ottimizzazione e l'implementazione di modelli di inferenza AI. Anche se il nome contiene Visual, OpenVINO supporta anche diverse attività aggiuntive, tra cui lingua, audio, serie temporali, ecc.



Guarda: Come esportare e ottimizzare un modello Ultralytics YOLOv8 per l'inferenza con OpenVINO.

Esempi di utilizzo

Esporta un modello YOLOv8n nel formato OpenVINO ed esegue l'inferenza con il modello esportato.

Esempio

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'

Argomenti

Chiave Valore Descrizione
format 'openvino' formato in cui esportare
imgsz 640 dimensione dell'immagine come scalare o come elenco (h, w), ad esempio (640, 480)
half False Quantizzazione FP16

Vantaggi di OpenVINO

  1. Prestazioni: OpenVINO offre un'inferenza ad alte prestazioni utilizzando la potenza delle CPU Intel , delle GPU integrate e discrete e delle FPGA.
  2. Supporto per l'esecuzione eterogenea: OpenVINO fornisce un'API per scrivere una volta e distribuire su qualsiasi hardware supportato da Intel (CPU, GPU, FPGA, VPU, ecc.).
  3. Ottimizzatore di modelli: OpenVINO fornisce un Ottimizzatore di modelli che importa, converte e ottimizza modelli da framework di deep learning popolari come PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, e Caffe.
  4. Facilità d'uso: il toolkit viene fornito con più di 80 quaderni di esercitazioni (compresa l'ottimizzazione diYOLOv8 ) che insegnano diversi aspetti del toolkit.

OpenVINO Struttura di esportazione

Quando esporti un modello in formato OpenVINO , si ottiene una directory contenente quanto segue:

  1. File XML: Descrive la topologia della rete.
  2. File BIN: Contiene i dati binari di weights and biases .
  3. File di mappatura: Contiene la mappatura dei tensori di output del modello originale con i nomi di OpenVINO tensor .

Puoi utilizzare questi file per eseguire l'inferenza con il motore di inferenza di OpenVINO .

Utilizzo dell'esportazione di OpenVINO nella distribuzione

Una volta ottenuti i file OpenVINO , puoi utilizzare il Runtime OpenVINO per eseguire il modello. Il Runtime fornisce un'API unificata per l'inferenza su tutti gli hardware Intel supportati. Offre inoltre funzionalità avanzate come il bilanciamento del carico sull'hardware di Intel e l'esecuzione asincrona. Per maggiori informazioni sull'esecuzione dell'inferenza, consulta la Guida all'inferenza con OpenVINO Runtime.

Ricorda che per configurare e utilizzare correttamente il modello con il Runtime avrai bisogno dei file XML e BIN e di tutte le impostazioni specifiche dell'applicazione, come le dimensioni dell'input, il fattore di scala per la normalizzazione, ecc.

Nella tua applicazione di deployment, in genere, eseguirai i seguenti passaggi:

  1. Inizializza OpenVINO creando core = Core().
  2. Carica il modello utilizzando il metodo core.read_model() metodo.
  3. Compila il modello utilizzando il metodo core.compile_model() funzione.
  4. Prepara l'input (immagine, testo, audio, ecc.).
  5. Esegui l'inferenza utilizzando compiled_model(input_data).

Per passi più dettagliati e frammenti di codice, consulta la documentazione diOpenVINO o il tutorial dell'API.

OpenVINO YOLOv8 Parametri di riferimento

YOLOv8 I benchmark riportati di seguito sono stati eseguiti dal team di Ultralytics su 4 diversi formati di modelli che misurano la velocità e la precisione: PyTorch, TorchScript, ONNX e OpenVINO. I benchmark sono stati eseguiti sulle GPU Flex e Arc di Intel e sulle CPU Xeon di Intel a precisione FP32 (con il parametro half=False argomento).

Nota

I risultati dei benchmark riportati di seguito sono di riferimento e potrebbero variare in base all'esatta configurazione hardware e software di un sistema, nonché al carico di lavoro attuale del sistema al momento dell'esecuzione dei benchmark.

Tutti i benchmark vengono eseguiti con openvino Python versione del pacchetto 2023.0.1.

Intel Flessibile GPU

La serie Intel® Data Center GPU Flex è una soluzione versatile e robusta progettata per il cloud visivo intelligente. Questo GPU supporta un'ampia gamma di carichi di lavoro, tra cui lo streaming multimediale, il cloud gaming, l'inferenza visiva AI e i carichi di lavoro dell'infrastruttura desktop virtuale. Si distingue per l'architettura aperta e il supporto integrato per la codifica AV1, che fornisce uno stack software basato su standard per applicazioni ad alte prestazioni e con diverse architetture. La Flex Series GPU è ottimizzata per la densità e la qualità, offrendo affidabilità, disponibilità e scalabilità elevate.

I benchmark riportati di seguito vengono eseguiti su Intel® Data Center GPU Flex 170 con precisione FP32.

Punti di riferimento di Flex GPU
Modello Formato Stato Dimensione (MB) mAP50-95(B) Tempo di inferenza (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

Questa tabella rappresenta i risultati del benchmark per cinque diversi modelli (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) in quattro diversi formati (PyTorch, TorchScript, ONNX, OpenVINO), fornendo lo stato, la dimensione, la metrica mAP50-95(B) e il tempo di inferenza per ogni combinazione.

Intel Arco GPU

Intel® Arc™ rappresenta l'ingresso di Intel nel mercato dedicato GPU . La serie Arc™, progettata per competere con i principali GPU produttori come AMD e Nvidia, si rivolge sia al mercato dei laptop che a quello dei desktop. La serie comprende versioni mobili per dispositivi compatti come i laptop e versioni più grandi e potenti per i computer desktop.

La serie Arcâ„¢ si divide in tre categorie: Arcâ„¢ 3, Arcâ„¢ 5 e Arcâ„¢ 7. Ogni numero indica il livello di prestazioni. Ogni categoria comprende diversi modelli e la "M" nel nome del modello GPU indica una variante mobile e integrata.

Le prime recensioni hanno lodato la serie Arc™, in particolare l'A770M GPU integrato, per le sue impressionanti prestazioni grafiche. La disponibilità della serie Arc™ varia a seconda della regione e si prevede che altri modelli verranno presto rilasciati. Le GPU Intel® Arc™ offrono soluzioni ad alte prestazioni per una vasta gamma di esigenze informatiche, dal gioco alla creazione di contenuti.

I benchmark qui sotto vengono eseguiti su Intel® Arc 770 GPU con precisione FP32.

Parametri di riferimento di Arc GPU
Modello Formato Stato Dimensione (MB) metriche/mAP50-95(B) Tempo di inferenza (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

L'Intel® Xeon® CPU è un processore di livello server ad alte prestazioni progettato per carichi di lavoro complessi e impegnativi. Dal cloud computing e dalla virtualizzazione di alto livello alle applicazioni di intelligenza artificiale e machine learning, le CPU Xeon® offrono la potenza, l'affidabilità e la flessibilità necessarie ai data center di oggi.

In particolare, le CPU Xeon® offrono un'elevata densità di calcolo e scalabilità, rendendole ideali sia per le piccole imprese che per le grandi aziende. Scegliendo le CPU Intel® Xeon®, le aziende possono gestire con sicurezza le attività di calcolo più impegnative e promuovere l'innovazione, mantenendo al contempo l'economicità e l'efficienza operativa.

I benchmark qui sotto sono eseguiti su Intel® Xeon® Scalable CPU di quarta generazione con precisione FP32.

Parametri di riferimento di Xeon CPU
Modello Formato Stato Dimensione (MB) metriche/mAP50-95(B) Tempo di inferenza (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 Nucleo CPU

La serie Intel® Core® è una gamma di processori ad alte prestazioni di Intel. La gamma comprende Core i3 (entry-level), Core i5 (mid-range), Core i7 (high-end) e Core i9 (extreme performance). Ogni serie si rivolge a esigenze informatiche e budget diversi, dalle attività quotidiane ai carichi di lavoro professionali più impegnativi. Con ogni nuova generazione vengono apportati miglioramenti alle prestazioni, all'efficienza energetica e alle funzionalità.

I benchmark qui sotto sono eseguiti su Intel® Core® i7-13700H di 13a generazione CPU con precisione FP32.

Parametri di riferimento del Core CPU
Modello Formato Stato Dimensione (MB) metriche/mAP50-95(B) Tempo di inferenza (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

Riprodurre i nostri risultati

Per riprodurre i benchmark di Ultralytics su tutti i formati di esportazione, esegui questo codice:

Esempio

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

Si noti che i risultati dei benchmark possono variare in base all'esatta configurazione hardware e software di un sistema, nonché al carico di lavoro corrente del sistema al momento dell'esecuzione dei benchmark. Per ottenere i risultati più affidabili, usa un set di dati con un gran numero di immagini, ad es. data='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 immagini val).

Conclusione

I risultati dei benchmark dimostrano chiaramente i vantaggi dell'esportazione del modello YOLOv8 nel formato OpenVINO . Tra diversi modelli e piattaforme hardware, il formato OpenVINO supera costantemente gli altri formati in termini di velocità di inferenza, mantenendo un'accuratezza comparabile.

Per la serie Intel® Data Center GPU Flex, il formato OpenVINO è stato in grado di fornire velocità di inferenza quasi 10 volte superiori al formato PyTorch originale. Sullo Xeon CPU, il formato OpenVINO era due volte più veloce del formato PyTorch . L'accuratezza dei modelli è rimasta pressoché identica tra i diversi formati.

I benchmark sottolineano l'efficacia di OpenVINO come strumento per la distribuzione di modelli di deep learning. Convertendo i modelli nel formato OpenVINO , gli sviluppatori possono ottenere miglioramenti significativi delle prestazioni, rendendo più facile l'implementazione di questi modelli nelle applicazioni reali.

Per informazioni e istruzioni più dettagliate sull'utilizzo di OpenVINO, consulta la documentazione ufficiale di OpenVINO .

DOMANDE FREQUENTI

Come posso esportare i modelli di YOLOv8 nel formato OpenVINO ?

L'esportazione dei modelli YOLOv8 nel formato OpenVINO può migliorare significativamente la velocità di CPU e consentire le accelerazioni di GPU e NPU sull'hardware Intel . Per esportare, puoi usare Python o CLI come mostrato di seguito:

Esempio

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/'

Per maggiori informazioni, consulta la documentazione sui formati di esportazione.

Quali sono i vantaggi dell'utilizzo di OpenVINO con i modelli di YOLOv8 ?

L'utilizzo del toolkit Intel di OpenVINO con i modelli di YOLOv8 offre diversi vantaggi:

  1. Prestazioni: Raggiungi una velocità fino a 3 volte superiore sull'inferenza di CPU e sfrutta le GPU e le NPU di Intel per l'accelerazione.
  2. Ottimizzatore di modelli: Convertire, ottimizzare ed eseguire modelli da framework popolari come PyTorch, TensorFlow e ONNX.
  3. Facilità d'uso: Per aiutare gli utenti a iniziare sono disponibili più di 80 quaderni tutorial, compresi quelli per YOLOv8.
  4. Esecuzione eterogenea: Distribuisci i modelli su diversi hardware Intel con un'API unificata.

Per un confronto dettagliato delle prestazioni, visita la nostra sezione dedicata ai benchmark.

Come posso eseguire l'inferenza utilizzando un modello YOLOv8 esportato in OpenVINO?

Dopo aver esportato un modello YOLOv8 nel formato OpenVINO , puoi eseguire l'inferenza utilizzando Python o CLI:

Esempio

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'

Per maggiori dettagli, consulta la documentazione sulla modalità di previsione.

Perché dovrei scegliere Ultralytics YOLOv8 rispetto ad altri modelli per l'esportazione di OpenVINO ?

Ultralytics YOLOv8 è ottimizzato per il rilevamento di oggetti in tempo reale con elevata precisione e velocità. In particolare, se combinato con OpenVINO, YOLOv8 offre:

  • Velocità fino a 3 volte superiore su CPU Intel
  • Implementazione senza problemi su GPU e NPU di Intel
  • Accuratezza coerente e comparabile tra i vari formati di esportazione

Per un'analisi approfondita delle prestazioni, consulta i nostri benchmark dettagliati diYOLOv8 su diversi hardware.

Posso confrontare i modelli YOLOv8 con diversi formati come PyTorch, ONNX e OpenVINO?

Sì, è possibile eseguire il benchmark dei modelli YOLOv8 in vari formati, tra cui PyTorch, TorchScript, ONNX e OpenVINO. Usa il seguente frammento di codice per eseguire i benchmark sul set di dati che hai scelto:

Esempio

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

Per i risultati dettagliati dei benchmark, consulta la nostra sezione dedicata ai benchmark e la documentazione sui formati di esportazione.



Creato 2023-11-12, Aggiornato 2024-07-05
Autori: glenn-jocher (14), andrei-kochin (1), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)

Commenti