Esportazione ONNX per modelli YOLO26#
Inferenza fino al 43% 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, quando distribuisci modelli di computer vision, ti serve un formato di modello che sia sia flessibile che compatibile con più piattaforme.
Esportare i modelli Ultralytics YOLO26 nel formato ONNX semplifica la distribuzione 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 nelle applicazioni del mondo reale.
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 i modelli di machine learning in modo tale da poter essere utilizzato su diversi framework di IA e hardware.
I modelli ONNX possono essere utilizzati per passare senza problemi da un framework all'altro. Ad esempio, un modello di deep learning addestrato in PyTorch può essere esportato nel formato ONNX e poi 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 che è compatibile con framework come PyTorch, TensorFlow, scikit-learn, ecc.
ONNX Runtime ottimizza l'esecuzione dei modelli ONNX sfruttando le funzionalità specifiche dell'hardware. Questa ottimizzazione consente ai modelli di essere eseguiti in modo efficiente e con alte prestazioni su varie piattaforme hardware, inclusi CPU, GPU e acceleratori specializzati.
Che venga usato indipendentemente o in tandem con ONNX Runtime, ONNX offre una soluzione flessibile per la distribuzione di modelli di machine learning e per 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 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 framework che supporti ONNX.
-
Versioning e compatibilità con le versioni precedenti: ONNX mantiene un sistema di versioning per i suoi operatori. Questo assicura che, anche man mano che lo standard evolve, i modelli creati nelle versioni precedenti rimangano utilizzabili. La compatibilità con le versioni precedenti è una caratteristica 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 del modello. Questi strumenti facilitano il lavoro degli sviluppatori con i modelli ONNX e la conversione dei modelli tra diversi framework senza problemi.
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 usati su CPU, possono anche essere distribuiti sulle seguenti piattaforme:
-
Accelerazione GPU: ONNX supporta pienamente l'accelerazione GPU, in particolare NVIDIA CUDA. Per l'addestramento e l'inferenza nativi su GPU AMD, usa PyTorch ROCm; un file ONNX richiede comunque un runtime compatibile con AMD.
-
Dispositivi edge e mobili: ONNX si estende ai dispositivi edge e mobili, ideali per scenari di inferenza on-device e in tempo reale. È leggero e compatibile con l'hardware edge, e funge da base per i formati NPU dei vendor come Huawei Ascend, Qualcomm QNN per dispositivi Snapdragon e RKNN per NPU Rockchip.
-
Browser web: ONNX può essere eseguito direttamente nei browser web, alimentando applicazioni di IA interattive e dinamiche basate sul web.
Attività supportate#
L'esportazione in ONNX supporta tutti e sette i task di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include quelle teste.
Esportazione dei modelli YOLO26 in ONNX#
Puoi ampliare la compatibilità del modello e la flessibilità di distribuzione 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. Durante l'installazione dei pacchetti richiesti per YOLO26, se riscontri difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo#
Prima di immergiti nelle istruzioni d'uso, assicurati di dare un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto ai requisiti del tuo progetto.
Il formato ONNX supporta le modalità Export, Predict e Validate. Esporta il tuo modello, quindi carica il modello esportato per eseguire l'inferenza o validarne la precisione.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")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. |
quantize | int o str | None | Precisione di quantizzazione: 16 (FP16) o 8 (quantizzazione statica INT8 con ONNX Runtime utilizzando immagini di calibrazione da data, producendo un modello _int8.onnx); 32/non impostato è FP32. Sostituisce i flag deprecati half/int8. |
data | str | None | YAML del dataset utilizzato per la calibrazione INT8; la classificazione richiede invece una cartella del dataset o il nome di un dataset incorporato. Se viene omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione predefinito per il task del modello. |
fraction | float, int o list | 1.0 | Sottoinsieme di calibrazione come rapporto, conteggio di immagini o rapporti/conteggi [train, val, test]. Gli elenchi a due elementi lasciano test pieno, mentre 0 lo salta. |
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 impostato, utilizza l'ultima versione supportata. |
nms | bool | False | Aggiunge la Non-Maximum Suppression (NMS), essenziale per un post-processing del rilevamento accurato ed efficiente. |
batch | int | 1 | Specifica la dimensione dell'inferenza in batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente 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.
-
Distribuzione su dispositivi edge: Dai un'occhiata a questa pagina della documentazione per diversi esempi di distribuzione 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 Triton Inference Server di NVIDIA per distribuzioni scalabili e ad alte prestazioni.
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 di ONNX.
L'esportazione ONNX è solo uno dei tanti formati di esportazione supportati da Ultralytics YOLO26, consentendoti di distribuire i tuoi modelli in praticamente qualsiasi ambiente. A seconda delle tue specifiche esigenze, 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#
Per esportare i tuoi modelli YOLO26 nel formato ONNX utilizzando Ultralytics, segui questi passaggi:
Utilizzofrom ultralytics import YOLO # Load a 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 maggiori dettagli, visita la documentazione sull'esportazione.
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 vengano eseguiti senza problemi in diversi ambienti.
- Accelerazione hardware: ONNX Runtime può sfruttare ottimizzazioni specifiche dell'hardware per CPU, GPU e acceleratori dedicati, fornendo inferenza 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 utilizzando ONNX Runtime.
- Ottimizzazione delle prestazioni: ONNX Runtime può fornire fino a 3x 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.
I modelli YOLO26 esportati in ONNX possono essere distribuiti su varie piattaforme, tra cui:
- CPU: Utilizzo di ONNX Runtime per l'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 mobili per un'inferenza in tempo reale on-device.
- Browser web: Esecuzione di modelli direttamente all'interno dei browser web per applicazioni interattive basate sul web.
- 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 distribuzione dei modelli.
L'utilizzo del formato ONNX per i modelli Ultralytics YOLO26 offre numerosi vantaggi:
- Interoperabilità: ONNX consente ai modelli di essere trasferiti senza problemi tra diversi framework di machine learning.
- 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.
Durante l'esportazione dei 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 gli operatori e le funzionalità supportate.
- Rivedi i messaggi di errore per indizi e consulta la guida ai problemi comuni di Ultralytics.
- Prova a utilizzare argomenti di esportazione diversi come
simplify=Trueo a regolare la versione diopset. - Per problemi di dimensioni di input dinamiche, imposta
dynamic=Truedurante l'esportazione.
Se i problemi persistono, contatta il supporto di Ultralytics per ulteriore assistenza.