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 IA. Funge da traduttore universale per il deep learning, permettendo agli sviluppatori di creare modelli in un framework — come PyTorch, TensorFlow o Scikit-learn — e di implementarli 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 richiesti per trasferire i modelli dalla ricerca alla produzione. Questa flessibilità è cruciale per i moderni flussi di lavoro di IA, dove l'addestramento può avvenire su potenti GPU nel cloud mentre l'implementazione mira a hardware diversificato come dispositivi edge, telefoni cellulari o browser web.
Link to this sectionIl ruolo di ONNX nell'IA moderna#
Nel panorama in rapida evoluzione dell'intelligenza artificiale, ricercatori e ingegneri utilizzano spesso strumenti diversi per le varie fasi del ciclo di 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 l'implementazione. Senza un formato di scambio standard, trasferire 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 messi a punto per l'accelerazione hardware — come l' ONNX Runtime — di eseguire il modello in modo efficiente su più piattaforme, inclusi Linux, Windows, macOS, Android e iOS.
Link to this sectionPrincipali vantaggi dell'utilizzo di ONNX#
L'adozione del formato Open Neural Network Exchange offre diversi vantaggi strategici per i progetti di IA:
- Interoperabilità tra framework: Gli sviluppatori possono passare da un framework all'altro senza restare bloccati in un unico ecosistema. Puoi addestrare un modello utilizzando l'intuitiva API Python di Ultralytics ed esportarlo per l'uso in un'applicazione C++ o in un ambiente JavaScript basato su 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 Units) mobili utilizzando strumenti come OpenVINO o CoreML. - Inferenza più rapida: L'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 i veicoli autonomi o le linee di produzione ad alta velocità.
- Implementazione semplificata: Invece di mantenere pipeline di implementazione separate per ogni framework di addestramento, i team di ingegneria possono standardizzare su ONNX come formato di distribuzione, snellendo i processi di ModelOps.
Link to this sectionApplicazioni nel mondo reale#
La versatilità di ONNX lo rende un punto fermo in diversi settori. Ecco due esempi concreti della sua applicazione:
Link to this sectionIA Edge su dispositivi mobili#
Consider a mobile application designed for real-time crop health monitoring. The model might be trained on a powerful cloud server using a large dataset of plant images. However, the app needs to run offline on a farmer's smartphone. By exporting the trained model to ONNX, developers can integrate it into the mobile app using ONNX Runtime Mobile. This allows the phone's processor to run object detection locally, identifying pests or diseases instantly without needing an internet connection.
Link to this sectionInferenza web multipiattaforma#
In e-commerce, a "virtual try-on" feature might use pose estimation to overlay clothing on a user's webcam feed. Training this model might happen in Python, but the deployment target is a web browser. Using ONNX, the model can be converted and run directly in the user's browser via ONNX Runtime Web. This utilizes the client's device capabilities (WebGL or WebAssembly) to perform computer vision tasks, ensuring a smooth, privacy-preserving experience since video data never leaves the user's computer.
Link to this sectionConfronto con termini correlati#
È utile distinguere ONNX da altri formati e strumenti di modellazione:
- vs. TensorRT: Mentre ONNX è un formato di scambio, TensorRT è un motore di inferenza e ottimizzatore specifico per GPU NVIDIA. Un flusso di lavoro comune prevede l'esportazione di un modello in ONNX, per poi analizzare 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 robusto all'interno dell'ecosistema Google, è meno universalmente compatibile rispetto a ONNX. Esistono spesso strumenti per convertire i 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 spesso convertiti da PyTorch a ONNX, e poi da ONNX a CoreML (o direttamente) per essere eseguiti in modo efficiente su iPhone e iPad.
Link to this sectionEsportazione 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 la complessa analisi del grafo e la mappatura degli operatori.
Il seguente esempio dimostra come esportare un modello YOLO26 pre-addestrato nel formato ONNX per l'implementazione:
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 piattaforma Ultralytics per la gestione o implementato direttamente su dispositivi edge utilizzando l'ONNX Runtime, rendendo la computer vision ad alte prestazioni accessibile praticamente in qualsiasi ambiente.






