ONNX (Open Neural Network Exchange)
Esplora il formato Open Neural Network Exchange (ONNX). Impara a esportare Ultralytics YOLO26 in ONNX per una distribuzione veloce, multipiattaforma e l'ottimizzazione hardware.
ONNX (Open Neural Network Exchange) è un formato open-source progettato per rappresentare modelli di machine learning, consentendo l'interoperabilità tra vari framework e strumenti di intelligenza artificiale. Funziona come un traduttore universale per il deep learning, consentendo 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 script di conversione complessi e personalizzati che storicamente erano richiesti 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 punta a diverse hardware come dispositivi edge, telefoni cellulari o browser web.
Il ruolo di ONNX nell'IA moderna#
Nel panorama in rapida evoluzione dell'intelligenza artificiale, ricercatori e ingegneri utilizzano spesso strumenti diversi per le diverse 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 necessita delle prestazioni ottimizzate di TensorRT o OpenVINO per la distribuzione. Senza un formato di interscambio standard, il trasferimento di un modello tra questi ecosistemi è difficile e soggetto a errori.
ONNX colma questo divario fornendo una definizione condivisa del grafo di calcolo. Quando un modello viene esportato in ONNX, viene serializzato in un formato che cattura la struttura della rete (strati, connessioni) e i parametri (pesi, bias) in modo indipendente dal framework. Ciò consente ai motori di inferenza specificamente sintonizzati per l'accelerazione hardware, come ONNX Runtime, di eseguire il modello in modo efficiente su più piattaforme, inclusi Linux, Windows, macOS, Android e iOS.
Principali vantaggi dell'utilizzo di ONNX#
L'adozione del formato Open Neural Network Exchange offre diversi vantaggi strategici per i progetti di IA:
- Interoperabilità dei framework: Gli sviluppatori possono passare da un framework all'altro senza rimanere vincolati a un singolo ecosistema. Puoi addestrare un modello utilizzando la intuitiva Ultralytics Python API ed esportarlo per l'uso in un'applicazione C++ o in un ambiente JavaScript basato sul web.
- Ottimizzazione hardware: Molti produttori di hardware forniscono provider di esecuzione specializzati che si interfacciano con ONNX. Ciò significa che un singolo file
.onnxpuò essere accelerato su GPU NVIDIA, CPU Intel o NPU (Neural Processing Unit) mobili utilizzando strumenti come OpenVINO o CoreML. - Inferenza più rapida: ONNX Runtime applica ottimizzazioni del grafo, come la fusione dei nodi e il ripiegamento delle costanti, che possono ridurre significativamente la latenza di inferenza. Questo è essenziale per applicazioni in tempo reale come veicoli autonomi o linee di produzione ad alta velocità.
- Distribuzione semplificata: Invece di mantenere pipeline di distribuzione separate per ogni framework di addestramento, i team di ingegneria possono standardizzare su ONNX come formato di consegna, semplificando i processi di ModelOps.
Applicazioni nel mondo reale#
La versatilità di ONNX lo rende un punto fermo in diversi settori. Ecco due esempi concreti della sua applicazione:
IA Edge su dispositivi mobili#
Considera un'applicazione mobile progettata per il monitoraggio della salute delle colture in tempo reale. Il modello potrebbe essere addestrato su un potente server cloud utilizzando un ampio set di dati di immagini di piante. Tuttavia, l'app deve essere eseguita offline sullo smartphone di un agricoltore. Esportando il modello addestrato in ONNX, gli sviluppatori possono integrarlo nell'app mobile utilizzando ONNX Runtime Mobile. Ciò consente al processore del telefono di eseguire il rilevamento di oggetti localmente, identificando parassiti o malattie all'istante senza bisogno di una connessione a Internet.
Inferenza web multipiattaforma#
Nell'e-commerce, una funzione di "prova virtuale" potrebbe utilizzare la stima della posa per sovrapporre i vestiti sul feed della webcam di un 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. Questo sfrutta le capacità del dispositivo del client (WebGL o WebAssembly) per eseguire attività di computer vision, garantendo un'esperienza fluida e rispettosa della privacy poiché i dati video non lasciano mai il computer dell'utente.
Confronto con termini correlati#
È utile distinguere ONNX da altri formati e strumenti di modellazione:
- vs. TensorRT: Mentre ONNX è un formato di interscambio, TensorRT è un motore di inferenza e ottimizzatore specifico per GPU NVIDIA. Un flusso di lavoro comune prevede l'esportazione di un modello in ONNX prima e l'analisi di quel file ONNX in TensorRT per ottenere il massimo throughput su hardware NVIDIA.
- vs. TensorFlow SavedModel: SavedModel è il formato di serializzazione nativo per TensorFlow. Sebbene sia robusto all'interno dell'ecosistema Google, è meno universalmente compatibile rispetto a ONNX. Spesso esistono strumenti per convertire i file SavedModel in ONNX per ottenere un supporto di piattaforma più ampio.
- vs. CoreML: CoreML è il framework di Apple per il machine learning on-device. Sebbene distinti, i modelli vengono frequentemente 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, gestendo automaticamente la complessa traversata del grafo e la mappatura degli operatori.
Il seguente esempio dimostra come esportare un modello Ultralytics YOLO26 preaddestrato in formato ONNX per il deployment:
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 o distribuito direttamente su dispositivi edge utilizzando ONNX Runtime, rendendo la computer vision ad alte prestazioni accessibile praticamente in qualsiasi ambiente.






