Vai al contenuto

Intel OpenVINO Esportazione

OpenVINO Ecosistema

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')
# 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 Intel supportato (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 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:

  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 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.

Parametri di riferimento della GPU Flex
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.

I benchmark della GPU Arc
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.

Parametri di riferimento della CPU Xeon
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.

Parametri di riferimento della CPU Core
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 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)

Commenti