ONNX Esportazione per i modelli YOLO11
Spesso, quando si distribuiscono modelli di computer vision, è necessario un formato di modello che sia flessibile e compatibile con più piattaforme.
L'esportazione dei Ultralytics YOLO11 in formato ONNX semplifica la distribuzione e garantisce prestazioni ottimali in vari ambienti. Questa guida mostra come convertire facilmente i modelli YOLO11 in ONNX e migliorarne la scalabilità e l'efficacia nelle applicazioni reali.
ONNX e ONNX Runtime
ONNX, acronimo di Open Neural Network Exchange, è un progetto comunitario che Facebook e Microsoft hanno inizialmente sviluppato. Lo sviluppo in corso di ONNX è uno sforzo collaborativo sostenuto da varie organizzazioni come IBM, Amazon (attraverso AWS) e Google. Il progetto mira a creare un formato di file aperto progettato per rappresentare i modelli di apprendimento automatico in modo da poterli utilizzare in diversi framework e hardware di IA.
ONNX possono essere utilizzati per passare da un framework all'altro senza problemi. Ad esempio, un modello di deep learning addestrato in PyTorch può essere esportato nel formato ONNX e poi importato facilmente in TensorFlow.
In alternativa, i modelli di ONNX possono essere utilizzati con ONNX Runtime. ONNX Runtime è un versatile acceleratore multipiattaforma per modelli di apprendimento automatico, compatibile con framework come PyTorch, TensorFlow, TFLite, scikit-learn, ecc.
ONNX Runtime ottimizza l'esecuzione dei modelli di ONNX sfruttando le capacità specifiche dell'hardware. Questa ottimizzazione consente ai modelli di essere eseguiti in modo efficiente e con prestazioni elevate su varie piattaforme hardware, tra cui CPU, GPU e acceleratori specializzati.
Utilizzato indipendentemente o in tandem con ONNX Runtime, ONNX offre una soluzione flessibile per la distribuzione e la compatibilità dei modelli di apprendimento automatico.
Caratteristiche principali dei modelli ONNX
La capacità di ONNX di gestire diversi formati può essere attribuita alle seguenti caratteristiche chiave:
-
Rappresentazione comune del modello: ONNX definisce un insieme comune di operatori (come convoluzioni, strati, ecc.) e un formato di dati standard. Quando un modello viene convertito nel formato ONNX , la sua architettura e i suoi pesi vengono tradotti in questa rappresentazione comune. Questa uniformità garantisce che il modello possa essere compreso da qualsiasi struttura che supporti ONNX.
-
Versioning e retrocompatibilità: ONNX mantiene un sistema di versioning per i suoi operatori. Ciò garantisce che, anche se lo standard si evolve, i modelli creati nelle versioni precedenti rimangano utilizzabili. La retrocompatibilità è una caratteristica fondamentale che impedisce ai modelli di diventare rapidamente obsoleti.
-
Rappresentazione dei modelli basata su grafi: ONNX rappresenta i modelli come grafi computazionali. Questa struttura a grafo è un modo universale di rappresentare i modelli di apprendimento automatico, dove i nodi rappresentano le operazioni o le computazioni e gli spigoli rappresentano i tensori che scorrono tra di loro. Questo formato è facilmente adattabile a vari framework che rappresentano anch'essi i modelli come grafi.
-
Strumenti ed ecosistema: Intorno a ONNX esiste un ricco ecosistema di strumenti che aiutano a convertire i modelli, a visualizzarli e a ottimizzarli. Questi strumenti rendono più facile per gli sviluppatori lavorare con i modelli di ONNX e convertire i modelli tra diversi framework senza problemi.
Uso comune di ONNX
Prima di passare ad analizzare come esportare i modelli YOLO11 nel formato ONNX , diamo un'occhiata a dove vengono solitamente utilizzati i modelli ONNX .
CPU Distribuzione
ONNX I modelli sono spesso distribuiti su CPU grazie alla loro compatibilità con il runtime ONNX . Questo runtime è ottimizzato per l'esecuzione di CPU . Migliora significativamente la velocità di inferenza e rende possibile l'implementazione di CPU in tempo reale.
Opzioni di distribuzione supportate
Sebbene i modelli ONNX siano comunemente utilizzati sulle CPU, possono essere implementati anche sulle seguenti piattaforme:
-
GPU Accelerazione: ONNX supporta pienamente l'accelerazione di GPU , in particolare di NVIDIA CUDA . Ciò consente un'esecuzione efficiente sulle GPU di NVIDIA per i compiti che richiedono un'elevata potenza di calcolo.
-
Dispositivi edge e mobili: ONNX si estende ai dispositivi edge e mobili, perfetto per scenari di inferenza on-device e in tempo reale. È leggero e compatibile con l'hardware edge.
-
Browser web: ONNX può essere eseguito direttamente nei browser web, alimentando applicazioni di intelligenza artificiale interattive e dinamiche basate sul web.
Esportazione dei modelli YOLO11 in ONNX
È possibile espandere la compatibilità dei modelli e la flessibilità di distribuzione convertendo i modelli YOLO11 nel formato ONNX .
Installazione
Per installare il pacchetto richiesto, eseguire:
Per istruzioni dettagliate e buone pratiche relative al processo di installazione, consultare la nostra guida all'installazione diYOLO11 . Durante l'installazione dei pacchetti necessari per YOLO11, se si incontrano difficoltà, consultare la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.
Utilizzo
Prima di immergersi nelle istruzioni per l'uso, assicuratevi di controllare la gamma di modelliYOLO11 offerti da Ultralytics. Questo vi aiuterà a scegliere il modello più adatto alle esigenze del vostro progetto.
Utilizzo
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Per maggiori dettagli sul processo di esportazione, visitare la pagina di documentazioneUltralytics sull'esportazione.
Distribuzione dei modelli esportati di YOLO11 ONNX
Una volta esportati con successo i modelli Ultralytics YOLO11 nel formato ONNX , il passo successivo è la distribuzione di questi modelli in vari ambienti. Per istruzioni dettagliate sulla distribuzione dei modelli ONNX , consultare le seguenti risorse:
-
ONNX Documentazione dell'API di runtime Python : Questa guida fornisce informazioni essenziali per il caricamento e l'esecuzione dei modelli ONNX utilizzando ONNX Runtime.
-
Distribuzione su dispositivi edge: Consultate questa pagina di documenti per diversi esempi di distribuzione dei modelli ONNX su dispositivi edge.
-
ONNX Tutorial su GitHub: Una raccolta di tutorial completi che coprono vari aspetti dell'uso e dell'implementazione dei modelli ONNX in diversi scenari.
Sintesi
In questa guida si è appreso come esportare i modelli Ultralytics YOLO11 nel formato ONNX per aumentarne l'interoperabilità e le prestazioni su varie piattaforme. Sono state anche introdotte le opzioni di distribuzione ONNX Runtime e ONNX .
Per ulteriori dettagli sull'uso, visitare la documentazione ufficiale di ONNX .
Inoltre, se desiderate saperne di più su altre integrazioni di Ultralytics YOLO11 , visitate la nostra pagina della guida alle integrazioni. Troverete molte risorse e approfondimenti utili.
FAQ
Come posso esportare i modelli YOLO11 nel formato ONNX utilizzando Ultralytics?
Per esportare i modelli di YOLO11 nel formato ONNX utilizzando Ultralytics, procedere come segue:
Utilizzo
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Per maggiori dettagli, visitate la documentazione sull'esportazione.
Quali sono i vantaggi dell'utilizzo di ONNX Runtime per la distribuzione dei modelli YOLO11 ?
L'uso di ONNX Runtime per la distribuzione dei modelli YOLO11 offre diversi vantaggi:
- Compatibilità multipiattaforma: ONNX Il runtime supporta diverse piattaforme, come Windows, macOS e Linux, assicurando che i modelli funzionino senza problemi in ambienti diversi.
- Accelerazione hardware: ONNX Il runtime può sfruttare le ottimizzazioni specifiche dell'hardware per CPU, GPU e acceleratori dedicati, fornendo inferenze ad alte prestazioni.
- Interoperabilità dei framework: I modelli addestrati in framework popolari come PyTorch o TensorFlow possono essere facilmente convertiti nel formato ONNX ed eseguiti con il runtime ONNX .
Per saperne di più, consultate la documentazione di ONNX Runtime.
Quali sono le opzioni di distribuzione disponibili per i modelli YOLO11 esportati in ONNX?
YOLO11 I modelli esportati in ONNX possono essere distribuiti su varie piattaforme, tra cui:
- CPU: Utilizzo di ONNX Runtime per l'inferenza ottimizzata di CPU .
- GPU: Sfruttare NVIDIA CUDA per l'accelerazione di GPU ad alte prestazioni.
- Dispositivi edge: Esecuzione di modelli leggeri su dispositivi edge e mobili per l'inferenza in tempo reale sul dispositivo.
- Browser web: Esecuzione di modelli direttamente all'interno dei browser web per applicazioni interattive basate sul web.
Per ulteriori informazioni, consultate la nostra guida sulle opzioni di distribuzione dei modelli.
Perché utilizzare il formato ONNX per i modelli Ultralytics YOLO11 ?
L'uso del formato ONNX per i modelli Ultralytics YOLO11 offre numerosi vantaggi:
- Interoperabilità: ONNX consente di trasferire i modelli tra diversi framework di apprendimento automatico senza problemi.
- Ottimizzazione delle prestazioni: ONNX Il runtime può migliorare le prestazioni del modello utilizzando ottimizzazioni specifiche per l'hardware.
- Flessibilità: ONNX supporta diversi ambienti di distribuzione, consentendo di utilizzare lo stesso modello su piattaforme diverse senza alcuna modifica.
Consultare la guida completa sull'esportazione dei modelli YOLO11 in ONNX.
Come si possono risolvere i problemi quando si esportano i modelli di YOLO11 in ONNX?
Quando si esportano i modelli di YOLO11 in ONNX, si possono incontrare problemi comuni come dipendenze non corrispondenti o operazioni non supportate. Per risolvere questi problemi:
- Verificare che sia installata la versione corretta delle dipendenze richieste.
- Controllare la documentazione ufficiale di ONNX per gli operatori e le funzioni supportate.
- Esaminare i messaggi di errore per individuare eventuali indizi e consultare la guidaUltralytics Common Issues.
Se i problemi persistono, contattare il supporto Ultralytics per ulteriore assistenza.