Vai al contenuto

ONNX Esportazione per i modelli di YOLOv8

Spesso, quando si distribuiscono modelli di visione artificiale, è necessario un formato di modello 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 che Facebook e Microsoft hanno inizialmente sviluppato. 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 passare a come esportare YOLOv8 modelli al ONNX formato, diamo un'occhiata a dove ONNX Di solito vengono utilizzati modelli.

CPU Distribuzione

ONNX i modelli sono spesso distribuiti su CPU grazie alla loro compatibilità con il runtime ONNX . Questo runtime è ottimizzato per l'esecuzione di CPU . Migliora notevolmente la velocità di inferenza e rende possibile l'implementazione di CPU in tempo reale.

Opzioni di distribuzione supportate

Sebbene i modelli ONNX siano comunemente utilizzati sulle CPU, possono essere implementati anche sulle seguenti piattaforme:

  • GPU Accelerazione: ONNX supporta pienamente l'accelerazione GPU , in particolare NVIDIA CUDA . Ciò consente un'esecuzione efficiente sulle GPU di 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.

DOMANDE FREQUENTI

Come posso esportare i modelli di YOLOv8 in formato ONNX utilizzando Ultralytics?

Per esportare i tuoi modelli YOLOv8 nel formato ONNX utilizzando Ultralytics, segui i seguenti passaggi:

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, visita la documentazione sull'esportazione.

Quali sono i vantaggi di utilizzare ONNX Runtime per distribuire i modelli di YOLOv8 ?

L'utilizzo di ONNX Runtime per la distribuzione dei modelli di YOLOv8 offre diversi vantaggi:

  • Compatibilità multipiattaforma: ONNX Il runtime supporta diverse piattaforme, come Windows, macOS e Linux, assicurando che i tuoi modelli funzionino senza problemi in diversi ambienti.
  • Accelerazione hardware: ONNX Il runtime può sfruttare le ottimizzazioni specifiche per CPU, GPU e acceleratori dedicati, fornendo inferenze ad alte prestazioni.
  • Interoperabilità dei framework: I modelli addestrati in framework popolari come PyTorch o TensorFlow possono essere facilmente convertiti nel formato ONNX ed eseguiti con ONNX Runtime.

Per saperne di più, consulta la documentazione di ONNX Runtime.

Quali sono le opzioni di distribuzione disponibili per i modelli YOLOv8 esportati in ONNX?

YOLOv8 I modelli esportati in ONNX possono essere distribuiti su diverse piattaforme, tra cui:

  • CPU: Utilizzo di ONNX Runtime per l'inferenza ottimizzata di CPU .
  • GPU: Sfruttare NVIDIA CUDA per l'accelerazione di GPU ad alte prestazioni.
  • Dispositivi edge: Esecuzione di modelli leggeri su dispositivi edge e mobili per un'inferenza in tempo reale sul dispositivo.
  • Browser web: Esecuzione di modelli direttamente nei browser web per applicazioni interattive basate sul web.

Per maggiori informazioni, esplora la nostra guida sulle opzioni di distribuzione dei modelli.

Perché dovrei utilizzare il formato ONNX per i modelli Ultralytics YOLOv8 ?

L'utilizzo del formato ONNX per i modelli Ultralytics YOLOv8 offre numerosi vantaggi:

  • Interoperabilità: ONNX permette di trasferire i modelli tra diversi framework di apprendimento automatico senza problemi.
  • Ottimizzazione delle prestazioni: ONNX Il runtime può migliorare le prestazioni del modello utilizzando ottimizzazioni specifiche per l'hardware.
  • Flessibilità: ONNX supporta diversi ambienti di distribuzione, consentendoti di utilizzare lo stesso modello su piattaforme diverse senza alcuna modifica.

Consulta la guida completa all'esportazione dei modelli YOLOv8 su ONNX.

Come posso risolvere i problemi quando esporto i modelli di YOLOv8 in ONNX?

Quando esporti i modelli di YOLOv8 in ONNX, potresti incontrare problemi comuni come dipendenze non corrispondenti o operazioni non supportate. Per risolvere questi problemi:

  1. Verifica che sia installata la versione corretta delle dipendenze richieste.
  2. Controlla la documentazione ufficiale di ONNX per conoscere gli operatori e le funzioni supportate.
  3. Esamina i messaggi di errore per trovare qualche indizio e consulta la guida ai problemi comuni diUltralytics .

Se i problemi persistono, contatta il supporto di Ultralytics per ricevere ulteriore assistenza.



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

Commenti