Intel OpenVINO Esportazione
In questa guida, ci occupiamo dell'esportazione dei modelli di YOLOv8 nel formato OpenVINO che può fornire una velocità fino a 3 volte superiore a quella della CPU, oltre ad accelerare l'inferenza di YOLO su GPU e NPU Intel.
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')
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
- Prestazioni: OpenVINO offre un'inferenza ad alte prestazioni utilizzando la potenza delle CPU Intel, delle GPU integrate e discrete e delle FPGA.
- Supporto per l'esecuzione eterogenea: OpenVINO fornisce un'API per scrivere una volta e distribuire su qualsiasi hardware Intel supportato (CPU, GPU, FPGA, VPU, ecc.).
- 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.
- 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:
- File XML: Descrive la topologia della rete.
- File BIN: Contiene i dati binari di weights and biases .
- 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 tutto l'hardware Intel supportato. Offre anche funzionalità avanzate come il bilanciamento del carico sull'hardware 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:
- Inizializza OpenVINO creando
core = Core()
. - Carica il modello utilizzando il metodo
core.read_model()
metodo. - Compila il modello utilizzando il metodo
core.compile_model()
funzione. - Prepara l'input (immagine, testo, audio, ecc.).
- 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 Intel Flex e Arc e sulle CPU Intel Xeon con 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.
GPU Intel Flex
La GPU Intel® Data Center Flex Series è una soluzione versatile e robusta progettata per il cloud visivo intelligente. Questa 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 la sua architettura aperta e il supporto integrato per la codifica AV1, che fornisce uno stack software basato su standard per applicazioni ad alte prestazioni e cross-architecture. La GPU della serie Flex è ottimizzata per densità e qualità , offrendo affidabilità , disponibilità e scalabilità elevate.
I benchmark qui sotto vengono eseguiti su Intel® Data Center GPU Flex 170 con precisione FP32.
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.
GPU Intel Arc
Intel® Arc™ rappresenta l'ingresso di Intel nel mercato delle GPU dedicate. La serie Arc™, progettata per competere con i principali produttori di GPU 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 di GPU indica una variante mobile e integrata.
Le prime recensioni hanno lodato la serie Arc™, in particolare la GPU A770M integrata, per le sue impressionanti prestazioni grafiche. La disponibilità della serie Arc™ varia a seconda della regione e si prevede che presto verranno rilasciati altri modelli. 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 GPU Intel® Arc 770 con precisione FP32.
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 |
CPU Intel Xeon
La CPU Intel® Xeon® è 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 CPU Intel® Xeon® Scalable di quarta generazione con precisione FP32.
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 |
CPU Intel Core
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 CPU Intel® Core® i7-13700H di 13a generazione con precisione FP32.
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
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), or
data='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 GPU Intel® Data Center Flex Series, il formato OpenVINO è stato in grado di fornire velocità di inferenza quasi 10 volte superiori rispetto al formato PyTorch originale. Sulle CPU Xeon, 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 .
Creato 2023-11-12, Aggiornato 2024-04-18
Autori: glenn-jocher (9), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)