Esportazione ONNX per modelli YOLO26
~43% di inferenza più veloce.
- Esportare il modello Ultralytics YOLO26 in ONNX può offrire fino al 43% di incremento nella velocità di inferenza, consentendo un deployment più rapido ed efficiente.
Spesso, durante il deployment di modelli di computer vision, avrai bisogno di un formato modello che sia al contempo flessibile e compatibile con molteplici piattaforme.
Esportare modelli Ultralytics YOLO26 nel formato ONNX semplifica il deployment e garantisce prestazioni ottimali in vari ambienti. Questa guida ti mostrerà come convertire facilmente i tuoi modelli YOLO26 in ONNX e migliorare la loro scalabilità ed efficacia in applicazioni reali.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX e ONNX Runtime
ONNX, che sta per Open Neural Network Exchange, è un progetto comunitario inizialmente sviluppato da Facebook e Microsoft. Lo sviluppo continuo di ONNX è uno sforzo collaborativo supportato da varie organizzazioni come IBM, Amazon (tramite AWS) e Google. Il progetto mira a creare un formato di file aperto progettato per rappresentare modelli di machine learning in modo da consentirne l'utilizzo tra diversi framework AI e hardware.
I modelli ONNX possono essere utilizzati per la transizione fluida tra diversi framework. Ad esempio, un modello di deep learning addestrato in PyTorch può essere esportato nel formato ONNX e quindi facilmente importato in TensorFlow.
In alternativa, i modelli ONNX possono essere utilizzati con ONNX Runtime. ONNX Runtime è un acceleratore multipiattaforma versatile per modelli di machine learning compatibile con framework come PyTorch, TensorFlow, TFLite, scikit-learn, ecc.
ONNX Runtime ottimizza l'esecuzione dei modelli ONNX sfruttando funzionalità specifiche dell'hardware. Questa ottimizzazione consente ai modelli di essere eseguiti in modo efficiente e con prestazioni elevate su varie piattaforme hardware, inclusi CPU, GPU e acceleratori specializzati.
Che sia usato in modo indipendente o insieme a ONNX Runtime, ONNX fornisce una soluzione flessibile per il model deployment di machine learning e la compatibilità.
Caratteristiche principali dei modelli ONNX
La capacità di ONNX di gestire vari formati può essere attribuita alle seguenti caratteristiche chiave:
-
Rappresentazione comune del modello: ONNX definisce un insieme comune di operatori (come convoluzioni, livelli, ecc.) e un formato dati standard. Quando un modello viene convertito in formato ONNX, la sua architettura e i suoi pesi vengono tradotti in questa rappresentazione comune. Questa uniformità assicura che il modello possa essere compreso da qualsiasi framework che supporti ONNX.
-
Versionamento e retrocompatibilità: ONNX mantiene un sistema di versionamento per i suoi operatori. Ciò garantisce che, anche man mano che lo standard si evolve, i modelli creati nelle versioni precedenti rimangano utilizzabili. La retrocompatibilità è una funzionalità cruciale che impedisce ai modelli di diventare rapidamente obsoleti.
-
Rappresentazione del modello basata su grafi: ONNX rappresenta i modelli come grafi computazionali. Questa struttura basata su grafi è un modo universale di rappresentare i modelli di machine learning, dove i nodi rappresentano operazioni o calcoli e i bordi rappresentano i tensori che fluiscono tra di essi. Questo formato è facilmente adattabile a vari framework che rappresentano anch'essi i modelli come grafi.
-
Strumenti ed ecosistema: Esiste un ricco ecosistema di strumenti attorno a ONNX che assistono nella conversione, visualizzazione e ottimizzazione dei modelli. Questi strumenti rendono più facile per gli sviluppatori lavorare con i modelli ONNX e convertire i modelli tra diversi framework senza interruzioni.
Utilizzo comune di ONNX
Prima di passare a come esportare i modelli YOLO26 nel formato ONNX, diamo un'occhiata a dove vengono solitamente utilizzati i modelli ONNX.
Deployment su CPU
I modelli ONNX vengono spesso distribuiti su CPU grazie alla loro compatibilità con ONNX Runtime. Questo runtime è ottimizzato per l'esecuzione su CPU. Migliora significativamente la velocità di inferenza e rende fattibili i deployment su CPU in tempo reale.
Opzioni di deployment supportate
Sebbene i modelli ONNX siano comunemente utilizzati su CPU, possono anche essere distribuiti sulle seguenti piattaforme:
-
Accelerazione GPU: ONNX supporta pienamente l'accelerazione GPU, in particolare NVIDIA CUDA. Ciò consente un'esecuzione efficiente su GPU NVIDIA per attività che richiedono un'elevata potenza di calcolo.
-
Dispositivi edge e mobile: ONNX si estende ai dispositivi edge e mobile, perfetti 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, alimentando applicazioni AI basate sul web interattive e dinamiche.
Esportazione di modelli YOLO26 in ONNX
Puoi espandere la compatibilità del modello e la flessibilità di deployment convertendo i modelli YOLO26 nel formato ONNX. Ultralytics YOLO26 fornisce un processo di esportazione diretto che può migliorare significativamente le prestazioni del tuo modello su diverse piattaforme.
Installazione
Per installare il pacchetto richiesto, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di YOLO26. Se riscontri difficoltà durante l'installazione dei pacchetti richiesti per YOLO26, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo
Prima di immergerti nelle istruzioni per l'uso, assicurati di dare un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto alle esigenze del tuo progetto.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Argomenti di esportazione
Quando esporti il tuo modello YOLO26 nel formato ONNX, puoi personalizzare il processo utilizzando vari argomenti per ottimizzarlo in base alle tue specifiche esigenze di deployment:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'onnx' | Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
half | bool | False | Abilita la quantizzazione FP16 (precisione dimezzata), riducendo le dimensioni del modello e potenzialmente velocizzando l'inferenza sull'hardware supportato. |
dynamic | bool | False | Consente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di dimensioni variabili delle immagini. |
simplify | bool | True | Semplifica il grafo del modello con onnxslim, migliorando potenzialmente le prestazioni e la compatibilità. |
opset | int | None | Specifica la versione dell'opset ONNX per la compatibilità con diversi parser e runtime ONNX. Se non impostata, utilizza l'ultima versione supportata. |
nms | bool | False | Aggiunge la Non-Maximum Suppression (NMS), essenziale per un post-elaborazione del rilevamento accurato ed efficiente. |
batch | int | 1 | Specifica la dimensione dell'inferenza batch del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict. |
device | str | None | Specifica il dispositivo per l'esportazione: GPU (device=0), CPU (device=cpu), MPS per Apple silicon (device=mps). |
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Deployment di modelli YOLO26 ONNX esportati
Una volta esportati con successo i tuoi modelli Ultralytics YOLO26 nel formato ONNX, il passo successivo è distribuire questi modelli in vari ambienti. Per istruzioni dettagliate sul deployment dei tuoi modelli ONNX, dai un'occhiata alle seguenti risorse:
-
Documentazione API Python di ONNX Runtime: Questa guida fornisce informazioni essenziali per caricare ed eseguire modelli ONNX utilizzando ONNX Runtime.
-
Deployment su dispositivi Edge: Consulta questa pagina di documentazione per diversi esempi di deployment di modelli ONNX su edge.
-
Tutorial ONNX su GitHub: Una raccolta di tutorial completi che coprono vari aspetti dell'utilizzo e dell'implementazione di modelli ONNX in diversi scenari.
-
Triton Inference Server: Scopri come distribuire i tuoi modelli ONNX con il Triton Inference Server di NVIDIA per deployment ad alte prestazioni e scalabili.
Riepilogo
In questa guida, hai imparato come esportare i modelli Ultralytics YOLO26 nel formato ONNX per aumentarne l'interoperabilità e le prestazioni su varie piattaforme. Ti sono stati anche presentati ONNX Runtime e le opzioni di deployment ONNX.
L'esportazione ONNX è solo uno dei tanti formati di esportazione supportati da Ultralytics YOLO26, che ti consente di distribuire i tuoi modelli in praticamente qualsiasi ambiente. A seconda delle tue esigenze specifiche, potresti anche voler esplorare altre opzioni di esportazione come TensorRT per le massime prestazioni GPU o CoreML per dispositivi Apple.
Per ulteriori dettagli sull'utilizzo, visita la documentazione ufficiale di ONNX.
Inoltre, se desideri saperne di più su altre integrazioni di Ultralytics YOLO26, visita la nostra pagina della guida all'integrazione. Lì troverai molte risorse e approfondimenti utili.
FAQ
Come esporto i modelli YOLO26 nel formato ONNX utilizzando Ultralytics?
Per esportare i tuoi modelli YOLO26 nel formato ONNX utilizzando Ultralytics, segui questi passaggi:
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Per ulteriori dettagli, visita la documentazione sull'esportazione.
Quali sono i vantaggi dell'utilizzo di ONNX Runtime per il deployment di modelli YOLO26?
L'utilizzo di ONNX Runtime per il deployment di modelli YOLO26 offre diversi vantaggi:
- Compatibilità multipiattaforma: ONNX Runtime supporta varie piattaforme, come Windows, macOS e Linux, garantendo che i tuoi modelli funzionino senza problemi in ambienti diversi.
- Accelerazione hardware: ONNX Runtime può sfruttare ottimizzazioni specifiche dell'hardware per CPU, GPU e acceleratori dedicati, fornendo inferenza ad alte prestazioni.
- Interoperabilità tra framework: I modelli addestrati in framework popolari come PyTorch o TensorFlow possono essere facilmente convertiti nel formato ONNX ed eseguiti utilizzando ONNX Runtime.
- Ottimizzazione delle prestazioni: ONNX Runtime può fornire fino a 3 volte di velocità su CPU rispetto ai modelli PyTorch nativi, rendendolo ideale per scenari di deployment in cui le risorse GPU sono limitate.
Scopri di più consultando la documentazione di ONNX Runtime.
Quali opzioni di deployment sono disponibili per i modelli YOLO26 esportati in ONNX?
I modelli YOLO26 esportati in ONNX possono essere distribuiti su varie piattaforme, tra cui:
- CPU: Utilizzo di ONNX Runtime per un'inferenza ottimizzata su CPU.
- GPU: Sfruttare NVIDIA CUDA per un'accelerazione GPU ad alte prestazioni.
- Dispositivi Edge: Esecuzione di modelli leggeri su dispositivi edge e mobile per un'inferenza in tempo reale on-device.
- Browser web: Esecuzione dei modelli direttamente all'interno dei browser web per applicazioni basate sul web interattive.
- Servizi cloud: Deployment su piattaforme cloud che supportano il formato ONNX per un'inferenza scalabile.
Per ulteriori informazioni, esplora la nostra guida sulle opzioni di deployment del modello.
Perché dovrei usare il formato ONNX per i modelli Ultralytics YOLO26?
L'utilizzo del formato ONNX per i modelli Ultralytics YOLO26 offre numerosi vantaggi:
- Interoperabilità: ONNX consente di trasferire i modelli tra diversi framework di machine learning senza interruzioni.
- Ottimizzazione delle prestazioni: ONNX Runtime può migliorare le prestazioni del modello utilizzando ottimizzazioni specifiche dell'hardware.
- Flessibilità: ONNX supporta vari ambienti di deployment, consentendoti di utilizzare lo stesso modello su piattaforme diverse senza modifiche.
- Standardizzazione: ONNX fornisce un formato standardizzato ampiamente supportato in tutto il settore, garantendo la compatibilità a lungo termine.
Fai riferimento alla guida completa sull'esportazione di modelli YOLO26 in ONNX.
Come posso risolvere i problemi durante l'esportazione di modelli YOLO26 in ONNX?
Quando esporti modelli YOLO26 in ONNX, potresti riscontrare problemi comuni come dipendenze non corrispondenti o operazioni non supportate. Per risolvere questi problemi:
- Verifica di aver installato la versione corretta delle dipendenze richieste.
- Controlla la documentazione ONNX ufficiale per operatori e funzionalità supportate.
- Esamina i messaggi di errore per trovare indizi e consulta la guida ai problemi comuni di Ultralytics.
- Prova a utilizzare argomenti di esportazione diversi come
simplify=Trueo regola la versioneopset. - Per problemi di dimensioni dell'input dinamiche, imposta
dynamic=Truedurante l'esportazione.
Se i problemi persistono, contatta il supporto Ultralytics per ulteriore assistenza.