ONNX Esportazione per i modelli di YOLOv8
Spesso, quando distribuisci modelli di computer vision, hai bisogno di un formato di modello che sia flessibile e compatibile con più piattaforme.
Esportare Ultralytics YOLOv8 in formato ONNX semplifica la distribuzione e garantisce prestazioni ottimali in vari ambienti. Questa guida ti mostrerà come convertire facilmente i tuoi modelli YOLOv8 in ONNX e migliorarne la scalabilità e l'efficacia nelle applicazioni reali.
ONNX e ONNX Runtime
ONNX, acronimo di Open Neural Network Exchange, è un progetto comunitario inizialmente sviluppato da Facebook e Microsoft. Il continuo sviluppo di ONNX è uno sforzo collaborativo sostenuto da varie organizzazioni come IBM, Amazon (attraverso AWS) e Google. Il progetto mira a creare un formato di file aperto per rappresentare i modelli di apprendimento automatico in modo da poterli utilizzare in diversi framework e hardware di IA.
ONNX i modelli possono essere utilizzati per passare da un framework all'altro senza problemi. Ad esempio, un modello di deep learning addestrato in PyTorch può essere esportato nel formato ONNX e poi importato facilmente in TensorFlow.
In alternativa, i modelli di ONNX possono essere utilizzati con ONNX Runtime. ONNX Runtime è un versatile acceleratore multipiattaforma per modelli di apprendimento automatico compatibile con framework come PyTorch, TensorFlow, TFLite, scikit-learn, ecc.
ONNX Runtime ottimizza l'esecuzione dei modelli di ONNX sfruttando le capacità specifiche dell'hardware. Questa ottimizzazione permette ai modelli di essere eseguiti in modo efficiente e con prestazioni elevate su diverse piattaforme hardware, tra cui CPU, GPU e acceleratori specializzati.
Sia che venga utilizzato in modo indipendente o in tandem con ONNX Runtime, ONNX offre una soluzione flessibile per l'implementazione e la compatibilità dei modelli di apprendimento automatico.
Caratteristiche principali dei modelli ONNX
La capacità di ONNX di gestire diversi formati è dovuta alle seguenti caratteristiche principali:
-
Rappresentazione comune del modello: ONNX definisce un insieme comune di operatori (come convoluzioni, strati, ecc.) e un formato di dati standard. Quando un modello viene convertito nel formato ONNX , la sua architettura e i suoi pesi vengono tradotti in questa rappresentazione comune. Questa uniformità garantisce che il modello possa essere compreso da qualsiasi struttura che supporti ONNX.
-
Versioning e retrocompatibilità : ONNX mantiene un sistema di versioning per i suoi operatori. Questo garantisce che, anche se lo standard si evolve, i modelli creati con le versioni precedenti rimangano utilizzabili. La retrocompatibilità è una caratteristica fondamentale che impedisce ai modelli di diventare rapidamente obsoleti.
-
Rappresentazione dei modelli basata su grafi: ONNX rappresenta i modelli come grafi computazionali. Questa struttura a grafo è un modo universale di rappresentare i modelli di apprendimento automatico, dove i nodi rappresentano le operazioni o i calcoli e gli spigoli rappresentano i tensori che scorrono tra di loro. Questo formato è facilmente adattabile a diversi framework che rappresentano i modelli come grafi.
-
Strumenti ed ecosistema: Intorno a ONNX esiste un ricco ecosistema di strumenti che aiutano a convertire i modelli, a visualizzarli e a ottimizzarli. Questi strumenti rendono più facile per gli sviluppatori lavorare con i modelli di ONNX e convertire i modelli tra diversi framework senza problemi.
Uso comune di ONNX
Prima di scoprire come esportare i modelli YOLOv8 nel formato ONNX , diamo un'occhiata ai casi in cui i modelli ONNX sono solitamente utilizzati.
Distribuzione della CPU
ONNX I modelli sono spesso distribuiti sulle CPU grazie alla loro compatibilità con ONNX Runtime. Questo runtime è ottimizzato per l'esecuzione su CPU. Migliora significativamente la velocità di inferenza e rende possibile l'implementazione in tempo reale su CPU.
Opzioni di distribuzione supportate
Sebbene i modelli ONNX siano comunemente utilizzati sulle CPU, possono essere implementati anche sulle seguenti piattaforme:
-
Accelerazione GPU: ONNX supporta pienamente l'accelerazione GPU, in particolare NVIDIA CUDA. Ciò consente un'esecuzione efficiente sulle GPU NVIDIA per i compiti che richiedono un'elevata potenza di calcolo.
-
Dispositivi edge e mobili: ONNX si estende ai dispositivi edge e mobili, perfetto per scenari di inferenza on-device e in tempo reale. È leggero e compatibile con l'hardware edge.
-
Browser web: ONNX può essere eseguito direttamente nei browser web, dando vita ad applicazioni di intelligenza artificiale interattive e dinamiche basate sul web.
Esportare i modelli di YOLOv8 in ONNX
Puoi ampliare la compatibilità dei modelli e la flessibilità di distribuzione convertendo i modelli YOLOv8 nel formato ONNX .
Installazione
Per installare il pacchetto richiesto, esegui:
Per istruzioni dettagliate e buone pratiche relative al processo di installazione, consulta la nostra Guida all'installazione diYOLOv8 . Durante l'installazione dei pacchetti necessari per YOLOv8, se dovessi incontrare delle difficoltà , consulta la nostra guida sui problemi comuni per trovare soluzioni e suggerimenti.
Utilizzo
Prima di immergerti nelle istruzioni per l'uso, assicurati di dare un'occhiata alla gamma di modelli diYOLOv8 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto alle esigenze del tuo progetto.
Utilizzo
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to ONNX format
model.export(format='onnx') # creates 'yolov8n.onnx'
# Load the exported ONNX model
onnx_model = YOLO('yolov8n.onnx')
# Run inference
results = onnx_model('https://ultralytics.com/images/bus.jpg')
Per maggiori dettagli sul processo di esportazione, visita la pagina di documentazione diUltralytics sull'esportazione.
Distribuzione dei modelli esportati di YOLOv8 ONNX
Dopo aver esportato con successo i tuoi modelli Ultralytics YOLOv8 nel formato ONNX , il passo successivo consiste nel distribuire questi modelli in vari ambienti. Per istruzioni dettagliate sulla distribuzione dei modelli ONNX , consulta le seguenti risorse:
-
ONNX Documentazione dell'API Runtime Python : Questa guida fornisce informazioni essenziali per caricare ed eseguire i modelli di ONNX utilizzando ONNX Runtime.
-
Distribuzione su dispositivi Edge: Dai un'occhiata a questa pagina di documenti per vedere diversi esempi di implementazione dei modelli ONNX su dispositivi edge.
-
ONNX Tutorial su GitHub: Una raccolta di tutorial completi che coprono vari aspetti dell'utilizzo e dell'implementazione dei modelli di ONNX in diversi scenari.
Sommario
In questa guida hai imparato a esportare i modelli Ultralytics YOLOv8 nel formato ONNX per aumentarne l'interoperabilità e le prestazioni su diverse piattaforme. Ti sono state presentate anche le opzioni di distribuzione ONNX Runtime e ONNX .
Per ulteriori dettagli sull'uso, visita la documentazione ufficiale di ONNX .
Inoltre, se vuoi saperne di più su altre integrazioni di Ultralytics YOLOv8 , visita la pagina della nostra guida alle integrazioni. Troverai molte risorse e approfondimenti utili.