Esportazione ONNX per i modelli YOLO26#
Inferenza ONNX su CPU ~43% più veloce: YOLO26n rispetto a YOLO11n
- YOLO26n è fino al 43% più veloce di YOLO11n nell'inferenza ONNX su CPU (Intel Xeon CPU @ 2.00 GHz). Consulta la pagina del modello YOLO26 per il confronto completo.
Spesso, quando distribuisci modelli di computer vision, hai bisogno di un formato del modello flessibile e compatibile con più piattaforme.
L'esportazione dei 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 migliorarne la scalabilità e l'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, acronimo di Open Neural Network Exchange, è un progetto della community sviluppato inizialmente da Facebook e Microsoft. Lo sviluppo continuo di ONNX è uno sforzo collaborativo supportato da diverse organizzazioni, tra cui IBM, Amazon (attraverso AWS) e Google. Il progetto mira a creare un formato di file aperto progettato per rappresentare modelli di machine learning in modo da poterli utilizzare con diversi framework di AI e hardware.
I modelli ONNX possono essere utilizzati per passare facilmente da un framework all'altro. 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 ONNX possono essere utilizzati con ONNX Runtime. ONNX Runtime è un acceleratore multipiattaforma versatile per modelli di machine learning, compatibile con framework come PyTorch, TensorFlow, scikit-learn e altri.
ONNX Runtime ottimizza l'esecuzione dei modelli ONNX sfruttando le funzionalità specifiche dell'hardware. Questa ottimizzazione consente ai modelli di funzionare in modo efficiente e con prestazioni elevate su diverse piattaforme hardware, tra cui CPU, GPU e acceleratori specializzati.
Utilizzato autonomamente o insieme a ONNX Runtime, ONNX offre una soluzione flessibile per la distribuzione dei modelli 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 principali:
-
Rappresentazione comune dei modelli: ONNX definisce un insieme comune di operatori (come convoluzioni, layer e così via) e un formato standard per i dati. 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 interpretato da qualsiasi framework che supporti ONNX.
-
Versionamento e compatibilità con le versioni precedenti: ONNX mantiene un sistema di versionamento per i propri operatori. Ciò garantisce che, anche quando lo standard evolve, i modelli creati nelle versioni precedenti rimangano utilizzabili. La compatibilità con le versioni precedenti è 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 basata su grafi è un modo universale di rappresentare i modelli di machine learning, in cui i nodi rappresentano operazioni o calcoli e gli archi 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: intorno a ONNX esiste un ricco ecosistema di strumenti che assistono nella conversione, visualizzazione e ottimizzazione dei modelli. Questi strumenti semplificano il lavoro degli sviluppatori con i modelli ONNX e la conversione dei modelli tra diversi framework.
Utilizzi comuni di ONNX#
Prima di vedere come esportare i modelli YOLO26 nel formato ONNX, diamo un'occhiata a dove vengono solitamente utilizzati i modelli ONNX.
Distribuzione su CPU#
I modelli ONNX vengono 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 praticabile la distribuzione in tempo reale su CPU.
Opzioni di distribuzione supportate#
Sebbene i modelli ONNX siano comunemente utilizzati sulle CPU, possono essere distribuiti anche sulle seguenti piattaforme:
-
Accelerazione GPU: ONNX supporta completamente 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 sul dispositivo e in tempo reale. È leggero e compatibile con l'hardware edge e costituisce la base per i formati NPU dei vendor, come Huawei Ascend, Qualcomm QNN per i dispositivi Snapdragon e RKNN per le NPU Rockchip.
-
Browser web: ONNX può essere eseguito direttamente nei browser web, alimentando applicazioni AI interattive e dinamiche basate sul web.
Attività supportate#
L'esportazione ONNX supporta tutte e sette le attività di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.
| Attività | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Rilevamento | ✅ | ✅ | ✅ |
| Segmentazione | ✅ | ✅ | ✅ |
| Semantica | ❌ | ❌ | ✅ |
| Profondità | ❌ | ❌ | ✅ |
| Classificazione | ✅ | ✅ | ✅ |
| Posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Esportazione dei modelli YOLO26 in ONNX#
Puoi ampliare la compatibilità dei modelli e la flessibilità di distribuzione convertendo i modelli YOLO26 nel formato ONNX. Ultralytics YOLO26 offre un processo di esportazione semplice 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 durante l'installazione dei pacchetti richiesti per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.
Utilizzo#
Prima di passare alle istruzioni per l'utilizzo, dai 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 modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.
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 usando diversi argomenti per ottimizzarlo in base alle tue specifiche esigenze di distribuzione:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'onnx' | Formato di destinazione del modello esportato, che definisce la compatibilità con diversi ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione desiderata dell'immagine 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 che utilizza immagini di calibrazione da data, producendo un modello _int8.onnx); 32/non impostato è FP32. Un checkpoint addestrato con quantize=8 esporta sempre INT8 come nodi Q/DQ dagli intervalli che trasporta, senza calibrazione e con il semplice nome .onnx. Sostituisce i flag deprecati half/int8. |
data | str | None | YAML del dataset utilizzato per la calibrazione INT8; la classificazione richiede invece una directory del dataset o il nome di un dataset integrato. Se omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione predefinito per il task del modello; un checkpoint addestrato con quantize=8 non ne richiede alcuno. |
fraction | float, int o list | 1.0 | Sottoinsieme di calibrazione espresso come rapporto, numero di immagini oppure rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo salta. |
dynamic | bool | False | Consente dimensioni di input dinamiche, aumentando la flessibilità nella gestione di immagini con dimensioni variabili. |
simplify | bool | True | Semplifica il grafo del modello con onnxslim, migliorando potenzialmente prestazioni e compatibilità. |
opset | int | None | Specifica la versione dell'opset ONNX per la compatibilità con diversi parser e runtime ONNX. Se non impostata, viene utilizzata l'ultima versione supportata. |
nms | bool, facoltativo | None | Seleziona l'output grezzo (None, predefinito), l'NMS integrato (True) o la testa senza NMS (False). |
batch | int | 1 | Specifica la dimensione del batch di inferenza del modello esportato 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 Ultralytics sull'esportazione.
Distribuzione dei modelli YOLO26 ONNX esportati#
Dopo aver esportato correttamente i tuoi modelli Ultralytics YOLO26 nel formato ONNX, il passaggio successivo consiste nel distribuirli in vari ambienti. Per istruzioni dettagliate sulla distribuzione dei tuoi modelli ONNX, consulta le seguenti risorse:
-
Documentazione dell'API Python di ONNX Runtime: questa guida fornisce informazioni essenziali per caricare ed eseguire modelli ONNX usando ONNX Runtime.
-
Distribuzione su dispositivi edge: consulta questa pagina della documentazione per diversi esempi di distribuzione di modelli ONNX su dispositivi edge.
-
Tutorial ONNX su GitHub: una raccolta di tutorial completi che trattano vari aspetti dell'utilizzo e dell'implementazione dei 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 a esportare i modelli Ultralytics YOLO26 nel formato ONNX per aumentarne l'interoperabilità e le prestazioni su diverse piattaforme. Hai anche conosciuto ONNX Runtime e le opzioni di distribuzione di ONNX.
L'esportazione ONNX è solo uno dei numerosi formati di esportazione supportati da Ultralytics YOLO26 e ti consente di distribuire i tuoi modelli praticamente in qualsiasi ambiente. In base alle tue esigenze specifiche, potresti anche voler esplorare altre opzioni di esportazione, come TensorRT per ottenere le massime prestazioni GPU o CoreML per i dispositivi Apple.
Per ulteriori dettagli sull'utilizzo, consulta la documentazione ufficiale di ONNX.
Inoltre, se vuoi saperne di più sulle altre integrazioni di Ultralytics YOLO26, visita la nostra pagina della guida alle integrazioni. Troverai numerose risorse e informazioni utili.
FAQ#
Per esportare i tuoi modelli YOLO26 nel formato ONNX usando 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 ulteriori dettagli, consulta la documentazione sull'esportazione.
L'utilizzo di ONNX Runtime per distribuire i modelli YOLO26 offre diversi vantaggi:
- Compatibilità multipiattaforma: ONNX Runtime supporta diverse piattaforme, come Windows, macOS e Linux, garantendo il corretto funzionamento dei tuoi modelli in ambienti diversi.
- Accelerazione hardware: ONNX Runtime può sfruttare ottimizzazioni specifiche dell'hardware per CPU, GPU e acceleratori dedicati, offrendo inferenza ad alte prestazioni.
- Interoperabilità tra framework: i modelli addestrati con framework diffusi come PyTorch o TensorFlow possono essere facilmente convertiti nel formato ONNX ed eseguiti usando ONNX Runtime.
- Ottimizzazione delle prestazioni: ONNX Runtime può offrire un'accelerazione della CPU fino a 3 volte superiore rispetto ai modelli PyTorch nativi, rendendolo ideale negli scenari di distribuzione 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 diverse piattaforme, tra cui:
- CPU: utilizzando ONNX Runtime per un'inferenza ottimizzata su CPU.
- GPU: sfruttando NVIDIA CUDA per un'accelerazione GPU ad alte prestazioni.
- Dispositivi edge: eseguendo modelli leggeri su dispositivi edge e mobili per l'inferenza in tempo reale sul dispositivo.
- Browser web: eseguendo i modelli direttamente nei browser web per applicazioni interattive basate sul web.
- Servizi cloud: distribuendo i modelli su piattaforme cloud che supportano il formato ONNX per un'inferenza scalabile.
Per ulteriori informazioni, consulta 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 di trasferire facilmente i modelli tra diversi framework di machine learning.
- Ottimizzazione delle prestazioni: ONNX Runtime può migliorare le prestazioni dei modelli utilizzando ottimizzazioni specifiche dell'hardware.
- Flessibilità: ONNX supporta diversi ambienti di distribuzione, consentendoti di usare lo stesso modello su piattaforme diverse senza modificarlo.
- Standardizzazione: ONNX offre un formato standardizzato ampiamente supportato nel settore, garantendo la compatibilità a lungo termine.
Consulta la guida completa sull'esportazione dei 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.
- Consulta la documentazione ufficiale di ONNX per verificare gli operatori e le funzionalità supportati.
- Esamina i messaggi di errore per trovare indizi e consulta la guida di Ultralytics sui problemi comuni.
- Prova a usare argomenti di esportazione diversi, come
simplify=True, o a modificare la versioneopset. - Per i problemi relativi alle dimensioni dinamiche dell'input, imposta
dynamic=Truedurante l'esportazione.
Se i problemi persistono, contatta il supporto Ultralytics per ricevere ulteriore assistenza.