Vai al contenuto

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.

ONNX

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.

ONNX con ONNX Runtime

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:

Installazione

# Install the required package for YOLOv8
pip install ultralytics

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')
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

# Run inference with the exported model
yolo predict model=yolov8n.onnx source='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:

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.



Creato 2024-01-25, Aggiornato 2024-01-25
Autori: glenn-jocher (1), abirami-vina (1)

Commenti