ONNX (Open Neural Network Exchange)
Esplora il formato Open Neural Network Exchange (ONNX). Scopri come esportare Ultralytics YOLO26 in ONNX per un deployment rapido e multipiattaforma e per l'ottimizzazione hardware.
ONNX (Scambio aperto di reti neurali) è un formato open source progettato per rappresentare i modelli di machine learning, consentendo l'interoperabilità tra diversi framework e strumenti di intelligenza artificiale. Funge da traduttore universale per il deep learning, permettendo agli sviluppatori di creare modelli in un framework, come PyTorch, TensorFlow o Scikit-learn, e distribuirli senza problemi in un altro ambiente ottimizzato per l'inferenza. Definendo un insieme comune di operatori e un formato di file standard, ONNX elimina la necessità di complessi script di conversione personalizzati, storicamente necessari per trasferire i modelli dalla ricerca alla produzione. Questa flessibilità è fondamentale per i moderni flussi di lavoro di intelligenza artificiale, in cui l'addestramento può avvenire su potenti GPU cloud mentre la distribuzione è destinata a hardware diversi, come dispositivi edge, telefoni cellulari o browser web.
Il ruolo di ONNX nell'intelligenza artificiale moderna#
Nel panorama in rapida evoluzione dell'intelligenza artificiale, ricercatori e ingegneri utilizzano spesso strumenti diversi per le varie fasi del ciclo di vita dello sviluppo. Un data scientist potrebbe preferire la flessibilità di PyTorch per la sperimentazione e l'addestramento, mentre un ingegnere di produzione ha bisogno delle prestazioni ottimizzate di TensorRT o OpenVINO per la distribuzione. Senza un formato di scambio standard, trasferire un modello tra questi ecosistemi è difficile e soggetto a errori.
ONNX colma questa lacuna fornendo una definizione condivisa del grafo computazionale. Quando un modello viene esportato in ONNX, viene serializzato in un formato che acquisisce la struttura della rete (livelli, connessioni) e i parametri (pesi, bias) in modo indipendente dal framework. Ciò consente ai motori di inferenza ottimizzati specificamente per l'accelerazione hardware, come ONNX Runtime, di eseguire il modello in modo efficiente su più piattaforme, tra cui Linux, Windows, macOS, Android e iOS.
Vantaggi principali dell'utilizzo di ONNX#
L'adozione del formato Open Neural Network Exchange offre diversi vantaggi strategici per i progetti di intelligenza artificiale:
- Interoperabilità tra framework: gli sviluppatori possono passare da un framework all'altro senza rimanere vincolati a un singolo ecosistema. Puoi addestrare un modello utilizzando la Ultralytics Python API, intuitiva per l'utente, ed esportarlo per utilizzarlo in un'applicazione C++ o in un ambiente JavaScript basato sul web.
- Ottimizzazione hardware: molti produttori di hardware forniscono execution provider specializzati che interagiscono con ONNX. Ciò significa che un singolo file
.onnxpuò essere accelerato su GPU NVIDIA, CPU Intel o NPU mobili utilizzando strumenti come OpenVINO o CoreML. - Inferenza più rapida: ONNX Runtime applica ottimizzazioni al grafo, come la fusione dei nodi e la propagazione delle costanti, che possono ridurre significativamente la latenza di inferenza. Questo è essenziale per applicazioni in tempo reale, come i veicoli autonomi o le linee di produzione ad alta velocità.
- Distribuzione semplificata: invece di gestire pipeline di distribuzione separate per ogni framework di addestramento, i team di ingegneria possono standardizzare ONNX come formato di distribuzione, semplificando i processi di ModelOps.
Applicazioni nel mondo reale#
La versatilità di ONNX lo rende uno standard in diversi settori. Ecco due esempi concreti delle sue applicazioni:
1. IA edge su dispositivi mobili#
Considera un'applicazione mobile progettata per il monitoraggio in tempo reale della salute delle colture. Il modello potrebbe essere addestrato su un potente server cloud utilizzando un ampio set di dati di immagini di piante. Tuttavia, l'app deve funzionare offline sullo smartphone di un agricoltore. Esportando il modello addestrato in ONNX, gli sviluppatori possono integrarlo nell'app mobile utilizzando ONNX Runtime Mobile. In questo modo il processore del telefono può eseguire localmente il rilevamento degli oggetti, identificando istantaneamente parassiti o malattie senza bisogno di una connessione Internet.
2. Inferenza web multipiattaforma#
Nel commercio elettronico, una funzionalità di "prova virtuale" potrebbe utilizzare la stima della posa per sovrapporre gli abiti al feed della webcam dell'utente. L'addestramento di questo modello potrebbe avvenire in Python, ma la destinazione della distribuzione è un browser web. Utilizzando ONNX, il modello può essere convertito ed eseguito direttamente nel browser dell'utente tramite ONNX Runtime Web. Ciò sfrutta le capacità del dispositivo del cliente (WebGL o WebAssembly) per eseguire attività di visione artificiale, garantendo un'esperienza fluida e rispettosa della privacy, poiché i dati video non lasciano mai il computer dell'utente.
Confronto con i termini correlati#
È utile distinguere ONNX da altri formati e strumenti per modelli:
- vs. TensorRT: mentre ONNX è un formato di scambio, TensorRT è un motore di inferenza e un ottimizzatore progettato specificamente per le GPU NVIDIA. Un flusso di lavoro comune prevede prima l'esportazione di un modello in ONNX e poi l'analisi di quel file ONNX con TensorRT per ottenere il throughput massimo sull'hardware NVIDIA.
- vs. TensorFlow SavedModel: SavedModel è il formato di serializzazione nativo di TensorFlow. Sebbene sia robusto all'interno dell'ecosistema Google, è meno compatibile universalmente rispetto a ONNX. Spesso sono disponibili strumenti per convertire i SavedModel in ONNX e ottenere un supporto più ampio per le piattaforme.
- vs. CoreML: CoreML è il framework di Apple per il machine learning on-device. Sebbene sia distinto, i modelli vengono spesso convertiti da PyTorch a ONNX e poi da ONNX a CoreML (o direttamente) per essere eseguiti in modo efficiente su iPhone e iPad.
Esportazione in ONNX con Ultralytics#
L'ecosistema Ultralytics semplifica il processo di conversione di modelli all'avanguardia come YOLO26 nel formato ONNX. La funzionalità di esportazione è integrata direttamente nella libreria e gestisce automaticamente l'attraversamento complesso del grafo e la mappatura degli operatori.
L'esempio seguente mostra come esportare un modello Ultralytics YOLO26 preaddestrato nel formato ONNX per la distribuzione:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Una volta esportato, questo file .onnx può essere utilizzato nella Ultralytics Platform per la gestione oppure distribuito direttamente sui dispositivi edge utilizzando ONNX Runtime, rendendo la visione artificiale ad alte prestazioni accessibile praticamente in qualsiasi ambiente.









