ONNX Exportación para modelos YOLO11
A menudo, al desplegar modelos de visión por ordenador, necesitará un formato de modelo que sea flexible y compatible con múltiples plataformas.
La exportación de modelos Ultralytics YOLO11 al formato ONNX agiliza la implantación y garantiza un rendimiento óptimo en distintos entornos. Esta guía le mostrará cómo convertir fácilmente sus modelos YOLO11 a ONNX y mejorar su escalabilidad y eficacia en aplicaciones del mundo real.
ONNX y ONNX Runtime
ONNX, acrónimo de Open Neural Network Exchange (Intercambio abierto de redes neuronales ), es un proyecto comunitario que Facebook y Microsoft desarrollaron inicialmente. El desarrollo continuo de ONNX es un esfuerzo de colaboración apoyado por varias organizaciones como IBM, Amazon (a través de AWS) y Google. El objetivo del proyecto es crear un formato de archivo abierto diseñado para representar modelos de aprendizaje automático de forma que puedan utilizarse en diferentes marcos y hardware de IA.
ONNX pueden utilizarse para pasar de un marco a otro sin problemas. Por ejemplo, un modelo de aprendizaje profundo entrenado en PyTorch puede exportarse al formato ONNX e importarse fácilmente a TensorFlow.
Alternativamente, los modelos de ONNX pueden utilizarse con ONNX Runtime. ONNX Runtime es un versátil acelerador multiplataforma para modelos de aprendizaje automático compatible con marcos de trabajo como PyTorch, TensorFlowTFLite, scikit-learn, etc.
ONNX Runtime optimiza la ejecución de los modelos ONNX aprovechando las capacidades específicas del hardware. Esta optimización permite que los modelos se ejecuten con eficacia y alto rendimiento en diversas plataformas de hardware, incluidas CPU, GPU y aceleradores especializados.
Tanto si se utiliza de forma independiente como en tándem con ONNX Runtime, ONNX proporciona una solución flexible para la implantación y compatibilidad de modelos de aprendizaje automático.
Características principales de los modelos ONNX
La capacidad de ONNX para manejar diversos formatos puede atribuirse a las siguientes características clave:
-
Representación común del modelo: ONNX define un conjunto común de operadores (como convoluciones, capas, etc.) y un formato de datos estándar. Cuando un modelo se convierte al formato ONNX , su arquitectura y sus pesos se traducen a esta representación común. Esta uniformidad garantiza que el modelo pueda ser comprendido por cualquier marco compatible con ONNX.
-
Versiones y compatibilidad con versiones anteriores: ONNX mantiene un sistema de versiones para sus operadores. Esto garantiza que, aunque la norma evolucione, los modelos creados con versiones anteriores sigan siendo utilizables. La compatibilidad con versiones anteriores es una característica crucial que evita que los modelos se queden obsoletos rápidamente.
-
Representación de modelos basada en grafos: ONNX representa los modelos como grafos computacionales. Esta estructura basada en grafos es una forma universal de representar modelos de aprendizaje automático, donde los nodos representan operaciones o cálculos, y las aristas representan los tensores que fluyen entre ellos. Este formato es fácilmente adaptable a varios marcos que también representan modelos como grafos.
-
Herramientas y ecosistema: Existe un rico ecosistema de herramientas en torno a ONNX que ayudan en la conversión, visualización y optimización de modelos. Estas herramientas facilitan a los desarrolladores el trabajo con los modelos de ONNX y la conversión de modelos entre distintos marcos sin problemas.
Uso común de ONNX
Antes de pasar a cómo exportar modelos YOLO11 al formato ONNX , veamos dónde se suelen utilizar los modelos ONNX .
CPU Despliegue
ONNX suelen implantarse en CPU gracias a su compatibilidad con ONNX Runtime. Este runtime está optimizado para la ejecución en CPU . Mejora significativamente la velocidad de inferencia y hace posible la implantación de CPU en tiempo real.
Opciones de implantación compatibles
Aunque los modelos ONNX se utilizan habitualmente en CPU, también pueden implantarse en las siguientes plataformas:
-
GPU Aceleración: ONNX es totalmente compatible con la aceleración de GPU , en particular NVIDIA CUDA . Esto permite una ejecución eficiente en las GPU de NVIDIA para tareas que exigen una gran potencia de cálculo.
-
Dispositivos periféricos y móviles: ONNX se extiende a dispositivos periféricos y móviles, perfectos para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con el hardware Edge.
-
Navegadores web: ONNX puede ejecutarse directamente en navegadores web, impulsando aplicaciones de IA interactivas y dinámicas basadas en la web.
Exportación de modelos YOLO11 a ONNX
Puede ampliar la compatibilidad de los modelos y la flexibilidad de despliegue convirtiendo los modelos YOLO11 al formato ONNX . Ultralytics YOLO11 ofrece un proceso de exportación sencillo que puede mejorar significativamente el rendimiento de su modelo en diferentes plataformas.
Instalación
Para instalar el paquete necesario, ejecute
Para obtener instrucciones detalladas y buenas prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalaciónYOLO11 . Mientras instala los paquetes necesarios para YOLO11, si encuentra alguna dificultad, consulte nuestra guía de problemas comunes para obtener soluciones y consejos.
Utilización
Antes de sumergirse en las instrucciones de uso, asegúrese de consultar la gama de modelos deYOLO11 que ofrece Ultralytics. Esto le ayudará a elegir el modelo más apropiado para los requisitos de su proyecto.
Utilización
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")
Argumentos de exportación
Al exportar su modelo YOLO11 al formato ONNX , puede personalizar el proceso utilizando varios argumentos para optimizarlo según sus necesidades específicas de despliegue:
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
format |
str |
'onnx' |
Formato de destino para el modelo exportado, que define la compatibilidad con varios entornos de despliegue. |
imgsz |
int o tuple |
640 |
Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas. |
half |
bool |
False |
Permite la cuantización FP16 (media precisión), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en hardware compatible. |
dynamic |
bool |
False |
Permite tamaños de entrada dinámicos, lo que aumenta la flexibilidad a la hora de manejar dimensiones de imagen variables. |
simplify |
bool |
True |
Simplifica el gráfico del modelo con onnxslim mejorando potencialmente el rendimiento y la compatibilidad. |
opset |
int |
None |
Especifica la versión de ONNX opset para la compatibilidad con diferentes ONNX analizadores y tiempos de ejecución. Si no se establece, utiliza la última versión compatible. |
nms |
bool |
False |
Añade supresión no máxima (NMS), esencial para un postprocesado de detección preciso y eficaz. |
batch |
int |
1 |
Especifica el tamaño de la inferencia por lotes del modelo de exportación o el número máximo de imágenes que el modelo exportado procesará simultáneamente en predict modo. |
Para más detalles sobre el proceso de exportación, visite la página de documentaciónUltralytics sobre exportación.
Despliegue de modelos exportados de YOLO11 ONNX
Una vez que haya exportado correctamente sus modelos Ultralytics YOLO11 al formato ONNX , el siguiente paso es desplegar estos modelos en varios entornos. Para obtener instrucciones detalladas sobre el despliegue de sus modelos ONNX , eche un vistazo a los siguientes recursos:
-
ONNX Runtime Python Documentación de la API: Esta guía proporciona información esencial para cargar y ejecutar modelos ONNX utilizando ONNX Runtime.
-
Despliegue en dispositivos Edge: Consulte esta página de documentación para ver distintos ejemplos de despliegue de modelos ONNX en dispositivos periféricos.
-
ONNX Tutoriales en GitHub: Una colección de tutoriales completos que cubren varios aspectos del uso y la implementación de modelos ONNX en diferentes escenarios.
-
Servidor de inferenciaTriton : Aprenda a implantar sus modelos ONNX con el servidor de inferencia Triton de NVIDIA para conseguir implantaciones escalables y de alto rendimiento.
Resumen
En esta guía, ha aprendido a exportar modelos Ultralytics YOLO11 al formato ONNX para aumentar su interoperabilidad y rendimiento en varias plataformas. También se le han presentado las opciones de despliegue ONNX Runtime y ONNX .
La exportación ONNX es sólo uno de los muchos formatos de exportación compatibles con Ultralytics YOLO11, lo que le permite desplegar sus modelos en prácticamente cualquier entorno. Dependiendo de sus necesidades específicas, también puede explorar otras opciones de exportación como TensorRT para obtener el máximo rendimiento GPU o CoreML para dispositivos Apple.
Para más detalles sobre su uso, visite la documentación oficial deONNX .
Además, si quieres saber más sobre otras integraciones de Ultralytics YOLO11 , visita nuestra página de guía de integración. Allí encontrarás un montón de recursos e información útiles.
PREGUNTAS FRECUENTES
¿Cómo puedo exportar modelos de YOLO11 al formato ONNX utilizando Ultralytics?
Para exportar sus modelos YOLO11 al formato ONNX utilizando Ultralytics, siga estos pasos:
Utilización
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")
Para más detalles, consulte la documentación sobre exportación.
¿Cuáles son las ventajas de utilizar ONNX Runtime para desplegar modelos YOLO11 ?
La utilización de ONNX Runtime para desplegar los modelos YOLO11 ofrece varias ventajas:
- Compatibilidad multiplataforma: ONNX El tiempo de ejecución es compatible con varias plataformas, como Windows, macOS y Linux, lo que garantiza que sus modelos se ejecuten sin problemas en distintos entornos.
- Aceleración por hardware: ONNX El tiempo de ejecución puede aprovechar las optimizaciones específicas del hardware para CPU, GPU y aceleradores dedicados, lo que proporciona una inferencia de alto rendimiento.
- Interoperabilidad de marcos: Los modelos entrenados en marcos populares como PyTorch o TensorFlow pueden convertirse fácilmente al formato ONNX y ejecutarse con ONNX Runtime.
- Optimización del rendimiento: ONNX Runtime puede proporcionar hasta 3 veces más velocidad de CPU en comparación con los modelos nativos PyTorch , por lo que es ideal para escenarios de despliegue donde los recursos de GPU son limitados.
Para más información, consulte la documentación deONNX Runtime.
¿Qué opciones de despliegue existen para los modelos de YOLO11 exportados a ONNX?
YOLO11 Los modelos exportados a ONNX pueden implantarse en varias plataformas, entre ellas
- CPU: Utilización de ONNX Runtime para la inferencia optimizada de CPU .
- GPU: Aprovechamiento de NVIDIA CUDA para aceleración de alto rendimiento GPU .
- Dispositivos periféricos: Ejecución de modelos ligeros en dispositivos periféricos y móviles para la inferencia en tiempo real y en el dispositivo.
- Navegadores web: Ejecución de modelos directamente en navegadores web para aplicaciones interactivas basadas en web.
- Servicios en la nube: Despliegue en plataformas en la nube compatibles con el formato ONNX para una inferencia escalable.
Para más información, consulte nuestra guía sobre opciones de implantación de modelos.
¿Por qué debo utilizar el formato ONNX para los modelos Ultralytics YOLO11 ?
El uso del formato ONNX para los modelos Ultralytics YOLO11 ofrece numerosas ventajas:
- Interoperabilidad: ONNX permite transferir modelos entre distintos marcos de aprendizaje automático sin problemas.
- Optimización del rendimiento: ONNX El tiempo de ejecución puede mejorar el rendimiento del modelo utilizando optimizaciones específicas del hardware.
- Flexibilidad: ONNX admite varios entornos de implantación, lo que le permite utilizar el mismo modelo en distintas plataformas sin necesidad de modificarlo.
- Normalización: ONNX proporciona un formato estandarizado que cuenta con un amplio respaldo en todo el sector, lo que garantiza la compatibilidad a largo plazo.
Consulte la guía completa para exportar modelos de YOLO11 a ONNX.
¿Cómo puedo solucionar problemas al exportar modelos de YOLO11 a ONNX?
Al exportar modelos de YOLO11 a ONNX, puede encontrarse con problemas comunes, como dependencias no coincidentes u operaciones no compatibles. Para solucionar estos problemas:
- Compruebe que tiene instalada la versión correcta de las dependencias necesarias.
- Consulte la documentación oficial deONNX para conocer los operadores y funciones compatibles.
- Revise los mensajes de error en busca de pistas y consulte la guíaUltralytics Common Issues.
- Pruebe a utilizar argumentos de exportación diferentes como
simplify=True
o ajustando elopset
versión. - Para cuestiones de tamaño de entrada dinámico, establezca
dynamic=True
durante la exportación.
Si el problema persiste, póngase en contacto con el servicio de asistencia de Ultralytics para obtener más ayuda.