Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

ONNX (Open Neural Network Exchange)

ONNX è un formato aperto che memorizza un modello addestrato come grafo di operatori standard, così un modello addestrato in PyTorch può essere eseguito su molti ambienti di runtime.

ONNX (scambio aperto di reti neurali) è un formato di file standard aperto per i modelli di apprendimento automatico. Un file .onnx memorizza un modello addestrato come grafo di calcolo composto da operatori standard, insieme ai suoi pesi; in questo modo, un modello addestrato con un framework, come PyTorch, può essere eseguito con altri runtime e su molti tipi di hardware. Facebook e Microsoft hanno lanciato ONNX nel settembre 2017; dal novembre 2019 è un progetto ufficiale di LF AI & Data, la fondazione per l'IA della Linux Foundation. ONNX è il consueto punto di passaggio tra il training e la distribuzione del modello: un unico file esportato può essere usato da ONNX Runtime, TensorRT, OpenVINO e dai compilatori di molti acceleratori per IA edge.

Contenuto di un file ONNX#

Un modello ONNX viene serializzato con Protocol Buffers e contiene quattro parti:

  • Grafo: nodi che richiamano operatori come Conv, MatMul e Relu, collegati da tensori con nome. Gli input e gli output del grafo includono tipi di dati e forme; ogni dimensione può essere fissa o simbolica, come nel caso di una dimensione del batch variabile.
  • Inizializzatori: i pesi appresi. Protocol Buffers limita a 2 GB le dimensioni di un singolo file, quindi i modelli più grandi memorizzano i pesi in file di dati esterni accanto al file .onnx.
  • Versione dell'opset: gli operatori sono organizzati in opset versionati e un runtime deve supportare l'opset con cui è stato esportato il modello. I nuovi opset aggiungono operatori senza modificare quelli precedenti, come l'operatore Attention, aggiunto nell'opset 23.
  • Metadati: nome del produttore, versione del modello e coppie chiave-valore personalizzate, come i nomi delle classi.

Un secondo dominio di operatori, ONNX-ML, copre i modelli classici, come gli ensemble di alberi e i classificatori lineari; convertitori come skl2onnx e onnxmltools esportano quindi i modelli scikit-learn, LightGBM e XGBoost nello stesso formato. I visualizzatori, come Netron, mostrano il grafo nodo per nodo. In pratica, ONNX si colloca tra molti framework di training e numerosi runtime:

Esecuzione dei modelli ONNX#

ONNX Runtime, il motore di inferenza open source di Microsoft, esegue file ONNX su server, computer desktop, telefoni e browser. Quando carica un modello, ottimizza il grafo, per esempio ripiegando le costanti e fondendo una convoluzione con la normalizzazione batch che la segue; quindi assegna ogni parte del grafo a un provider di esecuzione adatto all'hardware disponibile: CUDA o TensorRT sulle GPU NVIDIA, OpenVINO sull'hardware Intel, DirectML sulle GPU Windows, Core ML sui dispositivi Apple, QNN sulle NPU Qualcomm e WebGPU nei browser. Windows ML, il framework di inferenza locale di Microsoft, si basa su ONNX Runtime; altri motori, come TensorRT e OpenVINO, importano file ONNX e li compilano nei propri formati.

Ultralytics YOLO26 esporta in ONNX con model.export(format="onnx"), e l'esportazione TensorRT di Ultralytics crea il proprio engine a partire dallo stesso file ONNX. Il file esportato viene eseguito in ONNX Runtime senza PyTorch:

import onnxruntime as ort
from ultralytics import YOLO

# Esporta YOLO26n in ONNX con dimensioni simboliche per batch, altezza e larghezza
model = YOLO("yolo26n.pt")
onnx_path = model.export(format="onnx", dynamic=True)

# Carica il grafo in ONNX Runtime, che non richiede né PyTorch né Ultralytics
session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"])
for tensor in session.get_inputs() + session.get_outputs():
    print(tensor.name, tensor.shape)

Stampa l'input del grafo, images, con dimensioni simboliche per batch, altezza e larghezza, e il relativo output di predizione grezzo, output0, che costituisce la firma usata da qualsiasi runtime ONNX per fornire i dati al modello e leggerne i risultati.

  • ONNX Runtime: il motore di inferenza che esegue i file ONNX; è un progetto distinto, guidato da Microsoft, che spesso viene abbreviato in "ONNX".
  • TensorRT: il compilatore di NVIDIA, che converte un file ONNX in un engine ottimizzato per un tipo specifico di GPU e una versione specifica di TensorRT. Per questo i team conservano il file ONNX come sorgente portabile e ricompilano gli engine per ogni destinazione.
  • Formati PyTorch: i checkpoint .pt e i file safetensors memorizzano i pesi per codice che ricrea il modello, mentre TorchScript e torch.export acquisiscono grafi destinati ai runtime di PyTorch.
  • Altri formati di distribuzione: IR di OpenVINO, file LiteRT .tflite, pacchetti Core ML e file GGUF per LLM quantizzati sono destinati ciascuno a runtime specifici. coremltools di Apple converte direttamente i modelli PyTorch e dalla versione 6 non supporta più l'input ONNX.

Applicazioni nel mondo reale#

  • App multipiattaforma: un unico file ONNX può essere usato su server Linux, app Windows tramite Windows ML e app Android e iOS tramite ONNX Runtime Mobile.
  • Inferenza nel browser: ONNX Runtime Web esegue i modelli sul dispositivo dell'utente con WebGPU o WebAssembly, così i fotogrammi della videocamera per funzionalità come la stima della posa non escono mai dal browser.
  • Acceleratori edge: le toolchain NPU di fornitori come Hailo, Qualcomm e Rockchip accettano modelli ONNX come input e li compilano, spesso applicando la quantizzazione a INT8, per i loro chip.
  • Modelli classici in produzione: gli alberi con boosting del gradiente e le pipeline scikit-learn convertiti in ONNX vengono eseguiti nei servizi C#, Java e C++ tramite ONNX Runtime, senza interprete Python nel percorso di serving.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning