Link to this sectionEsportazione ONNX per modelli YOLO26#
~43% di inferenza più veloce.
- Esportare il modello Ultralytics YOLO26 in ONNX può offrire un incremento fino al 43% nella velocità di inferenza, consentendo un deployment più rapido ed efficiente.
Spesso, quando esegui il deployment di modelli di computer vision, avrai bisogno di un formato di modello che sia flessibile e compatibile con molteplici piattaforme.
Esportare i 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 nelle applicazioni del mondo reale.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
Link to this sectionONNX e ONNX Runtime#
ONNX, che sta per Open Neural Network Exchange, è un progetto della community sviluppato inizialmente 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 un modo che permetta loro di essere utilizzati attraverso diversi framework di IA e hardware.
I modelli ONNX possono essere utilizzati per la transizione tra diversi framework senza soluzione di continuità. 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 versatile multipiattaforma per modelli di machine learning che è compatibile con framework come PyTorch, TensorFlow, TFLite, scikit-learn, ecc.
ONNX Runtime ottimizza l'esecuzione dei modelli ONNX sfruttando le capacità specifiche dell'hardware. Questa ottimizzazione consente ai modelli di funzionare in modo efficiente e con prestazioni elevate su varie piattaforme hardware, inclusi CPU, GPU e acceleratori specializzati.
Sia utilizzato in modo indipendente che in tandem con ONNX Runtime, ONNX fornisce una soluzione flessibile per il model deployment di machine learning e la compatibilità.
Link to this sectionCaratteristiche chiave 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.
-
Versionamento e retrocompatibilità: ONNX mantiene un sistema di versionamento per i suoi operatori. Questo garantisce che, anche con l'evoluzione dello standard, i modelli creati in versioni precedenti rimangano utilizzabili. La retrocompatibilità è una caratteristica cruciale che impedisce ai modelli di diventare obsoleti rapidamente.
-
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 loro. 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 rendono più facile per gli sviluppatori lavorare con i modelli ONNX e convertire i modelli tra diversi framework senza soluzione di continuità.
Link to this sectionUtilizzo 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.
Link to this sectionDeployment 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.
Link to this sectionOpzioni 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 a dispositivi edge e mobile, perfetti 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 fornitori come 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.
Link to this sectionEsportazione dei 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 semplice che può migliorare significativamente le prestazioni del tuo modello su diverse piattaforme.
Link to this sectionInstallazione#
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.
Link to this sectionUtilizzo#
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ù appropriato per i 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 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", int8=True, 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")Link to this sectionArgomenti 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 deployment. |
imgsz | int o tuple | 640 | Desired image size for the model input. Can be an integer for square images or a tuple (height, width) for specific dimensions. |
half | bool | False | Abilita la quantizzazione FP16 (precisione dimezzata), riducendo la dimensione del modello e potenzialmente accelerando l'inferenza su hardware supportato. |
int8 | bool | False | Abilita la quantizzazione statica INT8 con ONNX Runtime utilizzando immagini di calibrazione da data, producendo un modello _int8.onnx. |
data | str | None | YAML del dataset utilizzato per la calibrazione INT8. Se omesso con int8=True, Ultralytics seleziona il dataset di calibrazione predefinito per l'attività del modello. |
fraction | float | 1.0 | Frazione di immagini di calibrazione da utilizzare per la quantizzazione INT8. |
dynamic | bool | False | Consente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di dimensioni di immagine variabili. |
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 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.
Link to this sectionDeployment dei modelli ONNX YOLO26 esportati#
Una volta esportati con successo i tuoi modelli Ultralytics YOLO26 nel formato ONNX, il passo successivo è il deployment di questi modelli in vari ambienti. Per istruzioni dettagliate sul deployment dei tuoi modelli ONNX, dai un'occhiata alle seguenti risorse:
-
Documentazione dell'API Python di ONNX Runtime: Questa guida fornisce informazioni essenziali per caricare ed eseguire modelli ONNX utilizzando ONNX Runtime.
-
Deployment su dispositivi Edge: Dai un'occhiata a 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 Triton Inference Server di NVIDIA per deployment scalabili e ad alte prestazioni.
Link to this sectionSommario#
In questa guida, hai imparato come esportare i modelli Ultralytics YOLO26 nel formato ONNX per aumentare la loro interoperabilità e 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ù sulle altre integrazioni di Ultralytics YOLO26, visita la nostra pagina delle guide all'integrazione. Troverai molte risorse e approfondimenti utili.
Link to this sectionFAQ#
Link to this sectionCome 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 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, visita la documentazione sull'esportazione.
Link to this sectionQuali sono i vantaggi dell'utilizzo di ONNX Runtime per il deployment dei modelli YOLO26?#
L'utilizzo di ONNX Runtime per il deployment dei 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à 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 un incremento di velocità della CPU fino a 3 volte 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.
Link to this sectionQuali 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 CPU ottimizzata.
- GPU: Sfruttamento di NVIDIA CUDA per un'accelerazione GPU ad alte prestazioni.
- Dispositivi edge: Esecuzione di modelli leggeri su dispositivi edge e mobile per inferenza on-device in tempo reale.
- Browser Web: Esecuzione dei 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 maggiori informazioni, esplora la nostra guida sulle opzioni di deployment del modello.
Link to this sectionPerché dovrei utilizzare il formato ONNX per i modelli Ultralytics YOLO26?#
L'utilizzo del formato ONNX per i modelli Ultralytics YOLO26 offre numerosi vantaggi:
- Interoperabilità: ONNX consente ai modelli di essere trasferiti tra diversi framework di machine learning senza soluzione di continuità.
- 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 che è ampiamente supportato in tutto il settore, garantendo la compatibilità a lungo termine.
Fai riferimento alla guida completa sull'esportazione dei modelli YOLO26 in ONNX.
Link to this sectionCome posso risolvere i problemi durante l'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 avere installato la versione corretta delle dipendenze richieste.
- Controlla la documentazione ufficiale di ONNX per gli operatori e le funzionalità supportate.
- Rivedi i messaggi di errore per trovare indizi e consulta la guida ai problemi comuni di Ultralytics.
- Prova a utilizzare diversi argomenti di esportazione come
simplify=Trueo a regolare la versione dell'opset. - Per problemi di dimensioni di input dinamiche, imposta
dynamic=Truedurante l'esportazione.
Se i problemi persistono, contatta il supporto Ultralytics per ulteriore assistenza.