Scoprite come ONNX migliora la portabilità e l'interoperabilità dei modelli di AI, consentendo l'implementazione senza problemi dei modelli Ultralytics YOLO su diverse piattaforme.
ONNX (Open Neural Network Exchange) è un formato open-source per la rappresentazione di modelli di apprendimento automatico (ML). Sviluppato da aziende come Microsoft e Facebook, ONNX funge da traduttore universale, consentendo agli sviluppatori di spostare i modelli tra diversi framework e strumenti di ML. Questa interoperabilità è fondamentale per snellire il percorso dallo sviluppo del modello alla produzione. Invece di essere bloccati in un unico ecosistema, i team possono addestrare un modello in un framework, come PyTorch, e distribuirlo per l'inferenza utilizzando un altro, come TensorFlow o un motore di inferenza specializzato. I modelli Ultralytics YOLO, ad esempio, possono essere facilmente esportati nel formato ONNX, garantendo la massima flessibilità per la distribuzione su diverse piattaforme.
ONNX fornisce una definizione standard di grafo computazionale e un elenco di operatori integrati. Quando si converte un modello nel formato ONNX, la sua architettura, composta da livelli e operazioni matematiche, viene mappata su questo standard universale. Il risultato .onnx
Il file contiene sia la struttura della rete che i dati addestrati pesi del modello.
Questo file standardizzato può essere caricato da qualsiasi strumento che supporti la specifica ONNX. Questo include:
La flessibilità di ONNX lo rende prezioso in molti scenari di computer vision e ML.
Distribuzione dell'intelligenza artificiale sui dispositivi edge: Uno sviluppatore potrebbe addestrare un modello complesso di rilevamento degli oggetti come Ultralytics YOLO11 su un potente desktop con GPU NVIDIA. Per eseguire l'applicazione su un dispositivo edge a basso consumo, come un Raspberry Pi o una telecamera intelligente utilizzata per l'analisi della vendita al dettaglio, il modello viene esportato in ONNX. Può quindi essere ottimizzato da un runtime come ONNX Runtime o OpenVINO per ottenere prestazioni efficienti sull'hardware di destinazione senza dover utilizzare l'ambiente PyTorch originale.
Integrazione dei modelli in diverse applicazioni: Consideriamo un'azienda sanitaria che costruisce un modello di analisi delle immagini mediche utilizzando Python e TensorFlow. L'infrastruttura software esistente dell'ospedale è realizzata in C# e .NET. Invece di riscrivere il modello, il team lo esporta in ONNX. L'applicazione C# può quindi utilizzare ONNX Runtime for .NET per integrare direttamente le funzionalità del modello, riducendo significativamente i tempi e la complessità dello sviluppo.
È importante distinguere ONNX dai termini correlati:
.pt
o Modello salvato di TensorFlow sono nativi dei rispettivi framework. ONNX funge da intermediario, consentendo la conversione tra questi formati o la distribuzione tramite un runtime comune. TorchScript è un altro formato per la serializzazione dei modelli PyTorch, a volte usato come alternativa o precursore dell'esportazione ONNX.In sintesi, ONNX è uno standard fondamentale per garantire la flessibilità e l'interoperabilità nella pipeline delle operazioni di machine learning (MLOps), consentendo agli sviluppatori di scegliere gli strumenti migliori per l'addestramento e la distribuzione senza essere vincolati dalle limitazioni del framework. Piattaforme come Ultralytics HUB sfruttano questi formati per semplificare il percorso dallo sviluppo del modello all'applicazione nel mondo reale. Per saperne di più, visitate il sito ufficiale di ONNX ed esplorate il progetto su GitHub.