Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

ONNX (Scambio aperto di reti neurali)

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.

Open Neural Network ExchangeONNX) è uno standard open-source progettato per rappresentare modelli di modelli di apprendimento automatico (ML) in un modo che in modo da garantire la portabilità tra diversi framework e hardware. Originariamente sviluppato da aziende come Microsoft e Facebook, ONNX funge da "traduttore universale" per l'IA. Permette agli sviluppatori di addestrare un modello in un ecosistema, come PyTorche di distribuirlo senza problemi in un altro, come TensorFlow o un motore di motore di inferenza. Questa interoperabilità elimina la necessità di ricostruire o riqualificare le reti quando si passa da ambienti di ricerca ad applicazioni di produzione, semplificare in modo significativo la pipeline di di distribuzione dei modelli.

Come funziona ONNX

Nel suo nucleo, ONNX definisce un insieme comune di operatori, gli elementi costitutivi di modelli di modelli di deep learning (DL) e di apprendimento automatico, e un formato di file standard. Quando un modello viene convertito in ONNX, la sua struttura computazionale viene mappata in un grafo di calcolo statico. grafico di calcolo statico. In questo grafo, i nodi rappresentano operazioni operazioni matematiche (come le convoluzioni o le funzioni di attivazione) e i bordi rappresentano il flusso di tensori di dati tra di essi.

Poiché la rappresentazione del grafo è standardizzata, i produttori di hardware possono costruire fornitori di esecuzione ottimizzati per ONNX. Ciò significa che un singolo .onnx può essere accelerato su diversi tipi di hardware, tra cui un CPU, GPU (Unità di elaborazione grafica)o specializzato TPU Tensor Unità di elaborazioneTensor )spesso utilizzando il sistema ad alte prestazioni Runtime ONNX.

Esportazione di modelli in ONNX

Per gli utenti di ultralytics conversione di un modello addestrato nel formato ONNX è un processo semplice. processo semplice. La libreria gestisce automaticamente la complessa mappatura dei livelli allo standard ONNX . Il seguente frammento di codice dimostra come esportare un modello YOLO11 modello, preparandolo per per una più ampia diffusione.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

Applicazioni nel mondo reale

La flessibilità di ONNX lo rende un componente fondamentale nelle moderne infrastrutture di IA, in particolare per i compiti di visione artificiale (CV).

  1. Distribuzione mobile multipiattaforma: Uno sviluppatore potrebbe addestrare un modello di rilevamento degli oggetti utilizzando PyTorch su una potente workstation. Tuttavia, l'applicazione finale deve essere eseguita su dispositivi iOS e Android . Esportando il modello esportando il modello in ONNX, lo sviluppatore può integrare lo stesso file di modello nelle applicazioni mobili utilizzando il Runtime ONNX per Mobile. ONNX Runtime for Mobile, assicurando un comportamento coerente tra i diversi sistemi operativi senza tra i diversi sistemi operativi senza dover mantenere codebase separate.
  2. Integrazione con i sistemi legacy: Molte applicazioni industriali sono costruite utilizzando linguaggi come il C++ o il C# per garantire prestazioni e stabilità. C# per garantire prestazioni e stabilità. Sebbene Python sia lo standard per la formazione, l'integrazione di un modello Python in un ambiente di produzione in C++ può essere lenta e soggetta a errori. C# può essere lenta e soggetta a errori. ONNX colma questo divario. Un impianto di produzione che utilizza la visione artificiale nella robotica può addestrare un modello in Python, esportarlo in ONNX e poi caricarlo direttamente nel software di controllo C++ per per un'inferenza in tempo reale e ad alta velocità fabbrica.

ONNX vs. concetti correlati

Capire come ONNX interagisce con altri strumenti aiuta a selezionare la giusta strategia di distribuzione.

  • ONNX vs. TensorRT: mentre ONNX è un formato di file per la rappresentazione dei modelli, TensorRT è un SDK di ottimizzazione ad alte prestazioni sviluppato da NVIDIA specificamente per le GPU NVIDIA . Le due cose lavorano spesso insieme; gli sviluppatori esportano i modelli in ONNX e poi usano TensorRT per e poi usano TensorRT per ingerire il file ONNX , applicando un'ottimizzazione aggressiva del modello. ottimizzazione del modello tecniche di ottimizzazione dei modelli, come la fusione e la calibrazione dei livelli, per ottenere la massima velocità sull'hardware NVIDIA .
  • ONNX vs. Formati quadro (es. .pt, .h5): Formati nativi come quello di PyTorch .pt o Keras .h5 sono eccellenti per la formazione e il risparmio pesi del modello all'interno dei loro specifici ecosistemi. Tuttavia, spesso richiedono l'installazione del framework originale per eseguire il modello. ONNX disaccoppia il modello dal framework di dal framework di addestramento, rendendo più facile l'esecuzione bordo AI Quando l'installazione di una libreria di formazione completa è impraticabile a causa di limiti di memoria o di archiviazione.
  • ONNX vs. quantizzazione: ONNX è un formato, mentre quantizzazione del modello è una tecnica per ridurre dimensioni del modello e aumentare la velocità riducendo la precisione (ad esempio, da float32 a int8). Lo standard ONNX supporta operatori quantizzati, consentendo agli sviluppatori di memorizzare ed eseguire modelli quantizzati in modo efficiente.

Unitevi alla comunità di Ultralytics

Entra nel futuro dell'AI. Connettiti, collabora e cresci con innovatori globali

Iscriviti ora