ONNX Export for YOLO11 Models
Often, when deploying computer vision models, you'll need a model format that's both flexible and compatible with multiple platforms.
Exporting Ultralytics YOLO11 models to ONNX format streamlines deployment and ensures optimal performance across various environments. This guide will show you how to easily convert your YOLO11 models to ONNX and enhance their scalability and effectiveness in real-world applications.
ONNX e ONNX Runtime
ONNX, which stands for Open Neural Network Exchange, is a community project that Facebook and Microsoft initially developed. The ongoing development of ONNX is a collaborative effort supported by various organizations like IBM, Amazon (through AWS), and Google. The project aims to create an open file format designed to represent machine learning models in a way that allows them to be used across different AI frameworks and hardware.
ONNX models can be used to transition between different frameworks seamlessly. For instance, a deep learning model trained in PyTorch can be exported to ONNX format and then easily imported into TensorFlow.
Alternatively, ONNX models can be used with ONNX Runtime. ONNX Runtime is a versatile cross-platform accelerator for machine learning models that is compatible with frameworks like PyTorch, TensorFlow, TFLite, scikit-learn, etc.
ONNX Runtime ottimizza l'esecuzione dei modelli di ONNX sfruttando le capacità specifiche dell'hardware. Questa ottimizzazione permette ai modelli di essere eseguiti in modo efficiente e con prestazioni elevate su diverse piattaforme hardware, tra cui CPU, GPU e acceleratori specializzati.
Whether used independently or in tandem with ONNX Runtime, ONNX provides a flexible solution for machine learning model deployment and compatibility.
Caratteristiche principali dei modelli ONNX
La capacità di ONNX di gestire diversi formati è dovuta alle seguenti caratteristiche principali:
-
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. Questo garantisce che, anche se lo standard si evolve, i modelli creati con le 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 i calcoli e gli spigoli rappresentano i tensori che scorrono tra di loro. Questo formato è facilmente adattabile a diversi framework che rappresentano 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
Before we jump into how to export YOLO11 models to the ONNX format, let's take a look at where ONNX models are usually used.
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 notevolmente 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 GPU , in particolare 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, dando vita ad applicazioni di intelligenza artificiale interattive e dinamiche basate sul web.
Exporting YOLO11 Models to ONNX
You can expand model compatibility and deployment flexibility by converting YOLO11 models to ONNX format.
Installazione
Per installare il pacchetto richiesto, esegui:
For detailed instructions and best practices related to the installation process, check our YOLO11 Installation guide. While installing the required packages for YOLO11, if you encounter any difficulties, consult our Common Issues guide for solutions and tips.
Utilizzo
Before diving into the usage instructions, be sure to check out the range of YOLO11 models offered by Ultralytics. This will help you choose the most appropriate model for your project requirements.
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, visita la pagina di documentazione diUltralytics sull'esportazione.
Deploying Exported YOLO11 ONNX Models
Once you've successfully exported your Ultralytics YOLO11 models to ONNX format, the next step is deploying these models in various environments. For detailed instructions on deploying your ONNX models, take a look at the following resources:
-
ONNX Documentazione dell'API Runtime Python : Questa guida fornisce informazioni essenziali per caricare ed eseguire i modelli di ONNX utilizzando ONNX Runtime.
-
Distribuzione su dispositivi Edge: Dai un'occhiata a questa pagina di documenti per vedere diversi esempi di implementazione dei modelli ONNX su dispositivi edge.
-
ONNX Tutorial su GitHub: Una raccolta di tutorial completi che coprono vari aspetti dell'utilizzo e dell'implementazione dei modelli di ONNX in diversi scenari.
Sommario
In this guide, you've learned how to export Ultralytics YOLO11 models to ONNX format to increase their interoperability and performance across various platforms. You were also introduced to the ONNX Runtime and ONNX deployment options.
Per ulteriori dettagli sull'uso, visita la documentazione ufficiale di ONNX .
Also, if you'd like to know more about other Ultralytics YOLO11 integrations, visit our integration guide page. You'll find plenty of useful resources and insights there.
DOMANDE FREQUENTI
How do I export YOLO11 models to ONNX format using Ultralytics?
To export your YOLO11 models to ONNX format using Ultralytics, follow these steps:
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, visita la documentazione sull'esportazione.
What are the advantages of using ONNX Runtime for deploying YOLO11 models?
Using ONNX Runtime for deploying YOLO11 models offers several advantages:
- Compatibilità multipiattaforma: ONNX Il runtime supporta diverse piattaforme, come Windows, macOS e Linux, assicurando che i tuoi modelli funzionino senza problemi in diversi ambienti.
- Accelerazione hardware: ONNX Il runtime può sfruttare le ottimizzazioni specifiche per CPU, GPU e acceleratori dedicati, fornendo inferenze ad alte prestazioni.
- Framework interoperability: Models trained in popular frameworks like PyTorch or TensorFlow can be easily converted to ONNX format and run using ONNX Runtime.
Per saperne di più, consulta la documentazione di ONNX Runtime.
What deployment options are available for YOLO11 models exported to ONNX?
YOLO11 models exported to ONNX can be deployed on various platforms including:
- 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 un'inferenza in tempo reale sul dispositivo.
- Browser web: Esecuzione di modelli direttamente nei browser web per applicazioni interattive basate sul web.
Per maggiori informazioni, esplora la nostra guida sulle opzioni di distribuzione dei modelli.
Why should I use ONNX format for Ultralytics YOLO11 models?
Using ONNX format for Ultralytics YOLO11 models provides numerous benefits:
- Interoperabilità: ONNX permette 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, consentendoti di utilizzare lo stesso modello su piattaforme diverse senza alcuna modifica.
Refer to the comprehensive guide on exporting YOLO11 models to ONNX.
How can I troubleshoot issues when exporting YOLO11 models to ONNX?
When exporting YOLO11 models to ONNX, you might encounter common issues such as mismatched dependencies or unsupported operations. To troubleshoot these problems:
- Verifica che sia installata la versione corretta delle dipendenze richieste.
- Controlla la documentazione ufficiale di ONNX per conoscere gli operatori e le funzioni supportate.
- Esamina i messaggi di errore per trovare qualche indizio e consulta la guida ai problemi comuni diUltralytics .
Se i problemi persistono, contatta il supporto di Ultralytics per ricevere ulteriore assistenza.