Ultralytics YOLO27:
Get Started

Esportazione ONNX per i modelli YOLO26#

Inferenza CPU ONNX circa il 43% più veloce: YOLO26n rispetto a YOLO11n
  • YOLO26n esegue l'inferenza CPU ONNX fino al 43% più velocemente di YOLO11n (Intel Xeon CPU @ 2.00 GHz). Consulta la pagina del modello YOLO26 per il confronto completo.

Spesso, quando distribuisci modelli di visione artificiale, ti serve un formato di modello flessibile e compatibile con più piattaforme.

Esportare i modelli Ultralytics YOLO26 nel formato ONNX semplifica la distribuzione e garantisce prestazioni ottimali in diversi 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.



Guarda: Test di inferenza ONNX: Ultralytics YOLO26 a confronto con Ultralytics YOLO11 | Inferenza ~43% più veloce con YOLO26 🚀

ONNX e ONNX Runtime#

ONNX, acronimo di Open Neural Network Exchange, è un progetto della community inizialmente sviluppato da Facebook e Microsoft. Lo sviluppo continuo di ONNX è un impegno collaborativo sostenuto da diverse organizzazioni, tra cui IBM, Amazon (tramite AWS) e Google. Il progetto mira a creare un formato di file aperto per rappresentare i modelli di machine learning in modo da poterli usare con diversi framework di intelligenza artificiale e hardware.

I modelli ONNX permettono di passare agevolmente da un framework all'altro. Per esempio, un modello di deep learning addestrato in PyTorch può essere esportato nel formato ONNX e poi importato facilmente in TensorFlow.

ONNX model portability across deep learning frameworks

In alternativa, i modelli ONNX possono essere usati con ONNX Runtime. ONNX Runtime è un acceleratore versatile e multipiattaforma 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 varie piattaforme hardware, incluse CPU, GPU e acceleratori specializzati.

ONNX Runtime cross-platform inference acceleration

Usato da solo o insieme a ONNX Runtime, ONNX offre una soluzione flessibile per la compatibilità e la distribuzione dei modelli di machine learning.

Caratteristiche principali dei modelli ONNX#

La capacità di ONNX di gestire diversi formati si basa sulle seguenti caratteristiche principali:

  • Rappresentazione comune dei modelli: ONNX definisce un insieme comune di operatori (come convoluzioni, layer e così via) 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 qualsiasi framework compatibile con ONNX possa interpretare il modello.

  • Controllo delle versioni e compatibilità con le versioni precedenti: ONNX mantiene un sistema di versionamento per i suoi operatori. In questo modo, anche con l'evoluzione dello standard, i modelli creati con le versioni precedenti restano utilizzabili. La compatibilità con le versioni precedenti è una caratteristica fondamentale che evita che i modelli diventino obsoleti rapidamente.

  • Rappresentazione dei modelli basata su grafi: ONNX rappresenta i modelli come grafi computazionali. Questa struttura a grafo è un metodo universale per rappresentare i modelli di machine learning: i nodi rappresentano operazioni o calcoli, mentre gli archi rappresentano i tensori che fluiscono tra i nodi. Questo formato si adatta facilmente ai vari framework che rappresentano anch'essi i modelli come grafi.

  • Strumenti ed ecosistema: ONNX dispone di un ricco ecosistema di strumenti che supportano la conversione, la visualizzazione e l'ottimizzazione dei modelli. Questi strumenti semplificano il lavoro degli sviluppatori con i modelli ONNX e la conversione agevole dei modelli tra diversi framework.

Usi comuni di ONNX#

Prima di vedere come esportare i modelli YOLO26 nel formato ONNX, diamo un'occhiata agli usi più comuni dei modelli ONNX.

Distribuzione su CPU#

I modelli ONNX vengono spesso distribuiti su CPU grazie alla compatibilità con ONNX Runtime. Questo runtime è ottimizzato per l'esecuzione su CPU. Migliora notevolmente la velocità di inferenza e rende fattibili le distribuzioni in tempo reale su CPU.

Opzioni di distribuzione supportate#

Sebbene i modelli ONNX siano usati comunemente sulle CPU, possono essere distribuiti anche sulle seguenti piattaforme:

  • Accelerazione GPU: ONNX supporta pienamente l'accelerazione GPU sulle GPU NVIDIA tramite CUDA e sulle GPU AMD tramite ROCm e MIGraphX.

  • Dispositivi edge e mobili: ONNX supporta dispositivi edge e mobili, ideali per scenari di inferenza in tempo reale e direttamente sul dispositivo. È leggero e compatibile con l'hardware edge, oltre a costituire la base per formati NPU specifici dei produttori, 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, consentendo applicazioni di intelligenza artificiale 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àYOLOv8YOLO11YOLO26
Rilevamento✅✅✅
Segmentazione✅✅✅
Semantica❌❌✅
Profondità❌❌✅
Classificazione✅✅✅
Stima della 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 notevolmente le prestazioni del tuo modello su diverse piattaforme.

Installazione#

Per installare il pacchetto richiesto, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Per istruzioni dettagliate e buone pratiche relative al processo di installazione, consulta la nostra guida all'installazione di YOLO26. Se durante l'installazione dei pacchetti necessari per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.

Utilizzo#

Prima di approfondire le istruzioni per l'uso, dai un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Ti aiuterà a scegliere il modello più adatto ai requisiti del tuo progetto.

Il formato ONNX supporta le modalità Esportazione, Predizione e Validazione. Esporta il modello, quindi carica il modello esportato per eseguire inferenze o convalidarne l'accuratezza.

Esporta
from ultralytics import YOLO

# Carica un modello YOLO26
model = YOLO("yolo26n.pt")

# Esporta il modello in formato ONNX
model.export(format="onnx")  # crea 'yolo26n.onnx'

# Esporta un modello ONNX quantizzato INT8 con dati di calibrazione
model.export(format="onnx", quantize=8, data="coco8.yaml")  # crea 'yolo26n_int8.onnx'
Predici
from ultralytics import YOLO

# Carica il modello ONNX esportato
model = YOLO("yolo26n.onnx")

# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")
Convalida
from ultralytics import YOLO

# Carica il modello ONNX esportato
model = YOLO("yolo26n.onnx")

# # Convalida l'accuratezza sul dataset COCO8
metrics = model.val(data="coco8.yaml")

Argomenti di esportazione#

Quando esporti il tuo modello YOLO26 nel formato ONNX, puoi personalizzare il processo usando vari argomenti per ottimizzarlo in base alle esigenze specifiche di distribuzione:

ArgomentoTipoPredefinitoDescrizione
formatstr'onnx'Formato di destinazione del modello esportato, che definisce la compatibilità con i vari ambienti di distribuzione.
imgszint o tuple640Dimensione dell'immagine desiderata per l'input del modello. Può essere un intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione della quantizzazione: 16 (FP16) o 8 (quantizzazione statica INT8 con ONNX Runtime usando immagini di calibrazione da data, che produce un modello _int8.onnx); 32/non impostato corrisponde a FP32. Un checkpoint addestrato con quantize=8 esporta sempre INT8 come nodi Q/DQ usando gli intervalli che contiene, senza calibrazione e con il semplice nome .onnx. Sostituisce i flag deprecati half/int8.
datastrNoneFile YAML del dataset usato per la calibrazione INT8; per la classificazione si usa 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 l'attività del modello; un checkpoint addestrato con quantize=8 non ne ha bisogno.
fractionfloat, int o list1.0Sottoinsieme di calibrazione espresso come rapporto, numero di immagini o rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo esclude.
dynamicboolFalseConsente dimensioni di input dinamiche, aumentando la flessibilità nella gestione di immagini con dimensioni diverse.
simplifyboolTrueSemplifica il grafo del modello con onnxslim, migliorando potenzialmente prestazioni e compatibilità.
opsetintNoneSpecifica la versione dell'opset ONNX per garantire la compatibilità con diversi parser e runtime ONNX. Se non viene impostata, viene usata la versione più recente supportata.
nmsbool, facoltativoNoneSeleziona l'output grezzo (None, predefinito), NMS integrato (True) oppure la testa senza NMS (False).
batchint1Specifica la dimensione batch per l'inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict.
devicestrNoneSpecifica 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 dedicata all'esportazione.

Distribuzione dei modelli YOLO26 ONNX esportati#

Dopo aver esportato correttamente i tuoi modelli Ultralytics YOLO26 nel formato ONNX, il passo successivo consiste nel distribuirli in vari ambienti. Per istruzioni dettagliate sulla distribuzione dei modelli ONNX, consulta le seguenti risorse:

Inferenza su GPU AMD con MIGraphX#

Ultralytics esegue i modelli ONNX esportati sulle GPU AMD tramite il provider di esecuzione MIGraphX di ONNX Runtime. Su un sistema ROCm (HIP), il backend ONNX installa il plugin onnxruntime-ep-migraphx al primo utilizzo e seleziona automaticamente MIGraphXExecutionProvider, senza richiedere modifiche al codice; sono supportate tutte le attività YOLO26. Consulta la guida all'inferenza su GPU AMD per conoscere i prerequisiti, l'installazione, l'utilizzo, i benchmark e la cache dei programmi compilati.

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 scoperto ONNX Runtime e le opzioni di distribuzione ONNX.

L'esportazione ONNX è solo uno dei molti formati di esportazione supportati da Ultralytics YOLO26, che ti consentono di distribuire i modelli praticamente in qualsiasi ambiente. In base alle tue esigenze specifiche, potresti voler esplorare anche altre opzioni di esportazione, come TensorRT per ottenere le massime prestazioni GPU o CoreML per i dispositivi Apple.

Per ulteriori dettagli sull'utilizzo, visita 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 molte risorse e informazioni utili.

Domande frequenti#

  • Per esportare i tuoi modelli YOLO26 nel formato ONNX usando Ultralytics, segui questi passaggi:

    Utilizzo
    from ultralytics import YOLO
    
    # Carica un modello YOLO26
    model = YOLO("yolo26n.pt")
    
    # Esporta il modello in formato ONNX
    model.export(format="onnx")  # crea 'yolo26n.onnx'
    
    # Carica il modello ONNX esportato
    onnx_model = YOLO("yolo26n.onnx")
    
    # Esegui l'inferenza
    results = onnx_model("https://ultralytics.com/images/bus.jpg")

    Per ulteriori dettagli, visita la documentazione sull'esportazione.

  • Usare 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 modelli in ambienti diversi.
    • Accelerazione hardware: ONNX Runtime può sfruttare ottimizzazioni specifiche dell'hardware per CPU, GPU e acceleratori dedicati, offrendo inferenze ad alte prestazioni.
    • Interoperabilità tra framework: i modelli addestrati con framework diffusi come PyTorch o TensorFlow possono essere convertiti facilmente nel formato ONNX ed eseguiti con 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 per gli 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: usa ONNX Runtime per un'inferenza ottimizzata sulla CPU.
    • GPU NVIDIA: sfrutta NVIDIA CUDA per un'accelerazione GPU ad alte prestazioni.
    • GPU AMD: usa AMD ROCm e il provider di esecuzione MIGraphX per un'accelerazione GPU ad alte prestazioni su Linux.
    • Dispositivi edge: esegui modelli leggeri su dispositivi edge e mobili per un'inferenza in tempo reale direttamente sul dispositivo.
    • Browser web: esegui i modelli direttamente nei browser web per applicazioni web interattive.
    • Servizi cloud: distribuisci 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'uso 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 sfruttando le ottimizzazioni specifiche per l'hardware.
    • Flessibilità: ONNX supporta diversi ambienti di distribuzione, permettendoti di usare lo stesso modello su piattaforme differenti senza modificarlo.
    • Standardizzazione: ONNX offre un formato standardizzato, ampiamente supportato nel settore, che garantisce la compatibilità a lungo termine.

    Consulta la guida completa all'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 risolverli:

    1. Verifica di aver installato la versione corretta delle dipendenze richieste.
    2. Consulta la documentazione ufficiale di ONNX per verificare gli operatori e le funzionalità supportati.
    3. Esamina i messaggi di errore per trovare indizi e consulta la guida Ultralytics ai problemi comuni.
    4. Prova a usare argomenti di esportazione diversi, come simplify=True, oppure a modificare la versione di opset.
    5. Se hai problemi con le dimensioni dinamiche dell'input, imposta dynamic=True durante l'esportazione.

    Se i problemi persistono, contatta l'assistenza Ultralytics per ricevere ulteriore aiuto.

Commenti