Exportación a ONNX para modelos YOLO26
~43% más rápido en inferencia.
- Exportar el modelo YOLO26 de Ultralytics a ONNX puede ofrecer un aumento de hasta el 43% en la velocidad de inferencia, lo que permite un despliegue más rápido y eficiente.
A menudo, al desplegar modelos de visión artificial, necesitarás un formato de modelo que sea flexible y compatible con múltiples plataformas.
Exportar modelos de Ultralytics YOLO26 al formato ONNX simplifica el despliegue y garantiza un rendimiento óptimo en diversos entornos. Esta guía te mostrará cómo convertir fácilmente tus modelos YOLO26 a ONNX y mejorar su escalabilidad y eficacia en aplicaciones del mundo real.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX y ONNX Runtime
ONNX, que significa Open Neural Network Exchange, es un proyecto comunitario desarrollado inicialmente por Facebook y Microsoft. El desarrollo continuo de ONNX es un esfuerzo colaborativo apoyado por diversas organizaciones como IBM, Amazon (a través de AWS) y Google. El proyecto tiene como objetivo crear un formato de archivo abierto diseñado para representar modelos de machine learning de manera que puedan utilizarse en diferentes frameworks de IA y hardware.
Los modelos ONNX pueden utilizarse para realizar la transición entre diferentes frameworks sin problemas. Por ejemplo, un modelo de deep learning entrenado en PyTorch puede exportarse a formato ONNX e importarse fácilmente en TensorFlow.
Alternativamente, los modelos ONNX pueden utilizarse con ONNX Runtime. ONNX Runtime es un acelerador multiplataforma versátil para modelos de machine learning que es compatible con frameworks como PyTorch, TensorFlow, TFLite, scikit-learn, etc.
ONNX Runtime optimiza la ejecución de modelos ONNX aprovechando las capacidades específicas del hardware. Esta optimización permite que los modelos se ejecuten de manera eficiente y con un alto rendimiento en varias plataformas de hardware, incluidos CPUs, GPUs y aceleradores especializados.
Ya sea que se utilice de forma independiente o junto con ONNX Runtime, ONNX proporciona una solución flexible para el despliegue de modelos de machine learning y su compatibilidad.
Características clave de los modelos ONNX
La capacidad de ONNX para manejar varios formatos puede atribuirse a las siguientes características clave:
-
Representación común de modelos: 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 pesos se traducen a esta representación común. Esta uniformidad garantiza que el modelo pueda ser entendido por cualquier framework que admita ONNX.
-
Versiones y compatibilidad con versiones anteriores: ONNX mantiene un sistema de versiones para sus operadores. Esto garantiza que, incluso a medida que el estándar evoluciona, los modelos creados en versiones anteriores sigan siendo utilizables. La compatibilidad con versiones anteriores es una característica crucial que evita que los modelos 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 machine learning, donde los nodos representan operaciones o cálculos, y los bordes representan los tensores que fluyen entre ellos. Este formato es fácilmente adaptable a varios frameworks 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 que los desarrolladores trabajen con modelos ONNX y conviertan modelos entre diferentes frameworks sin problemas.
Uso común de ONNX
Antes de pasar a cómo exportar modelos YOLO26 al formato ONNX, echemos un vistazo a dónde se utilizan habitualmente los modelos ONNX.
Despliegue en CPU
Los modelos ONNX se despliegan a menudo en CPUs debido a su compatibilidad con ONNX Runtime. Este tiempo de ejecución está optimizado para la ejecución en CPU. Mejora significativamente la velocidad de inferencia y hace factibles los despliegues en CPU en tiempo real.
Opciones de despliegue compatibles
Aunque los modelos ONNX se utilizan habitualmente en CPUs, también pueden desplegarse en las siguientes plataformas:
-
Aceleración por GPU: ONNX admite completamente la aceleración por GPU, particularmente NVIDIA CUDA. Esto permite una ejecución eficiente en GPUs de NVIDIA para tareas que exigen una alta potencia computacional.
-
Dispositivos Edge y móviles: ONNX se extiende a dispositivos edge y móviles, siendo perfecto para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con hardware edge.
-
Navegadores web: ONNX puede ejecutarse directamente en navegadores web, potenciando aplicaciones de IA interactivas y dinámicas basadas en la web.
Exportación de modelos YOLO26 a ONNX
Puedes ampliar la compatibilidad y la flexibilidad de despliegue de tus modelos convirtiendo los modelos YOLO26 al formato ONNX. Ultralytics YOLO26 proporciona un proceso de exportación sencillo que puede mejorar significativamente el rendimiento de tu modelo en diferentes plataformas.
Instalación
Para instalar el paquete requerido, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y las mejores prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de YOLO26. Si encuentras alguna dificultad al instalar los paquetes necesarios para YOLO26, consulta nuestra guía de problemas comunes para ver soluciones y consejos.
Uso
Antes de sumergirte en las instrucciones de uso, asegúrate de echar un vistazo a la gama de modelos YOLO26 ofrecidos por Ultralytics. Esto te ayudará a elegir el modelo más adecuado para los requisitos de tu proyecto.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Argumentos de exportación
Al exportar tu modelo YOLO26 al formato ONNX, puedes personalizar el proceso utilizando varios argumentos para optimizarlo según tus necesidades de despliegue específicas:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'onnx' | Formato de destino para el modelo exportado, que define la compatibilidad con varios entornos de implementación. |
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 | Activa la cuantización FP16 (precisión media), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en hardware compatible. |
dynamic | bool | False | Permite tamaños de entrada dinámicos, mejorando la flexibilidad en el manejo de dimensiones de imagen variables. |
simplify | bool | True | Simplifica el grafo del modelo con onnxslim, lo que mejora potencialmente el rendimiento y la compatibilidad. |
opset | int | None | Especifica la versión del opset de ONNX para garantizar la compatibilidad con diferentes analizadores y tiempos de ejecución de ONNX. Si no se establece, utiliza la última versión compatible. |
nms | bool | False | Añade la supresión de no máximos (NMS), esencial para un posprocesamiento de detección preciso y eficiente. |
batch | int | 1 | Especifica el tamaño de 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 modo predict. |
device | str | None | Especifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps). |
Para más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.
Despliegue de modelos YOLO26 ONNX exportados
Una vez que hayas exportado correctamente tus modelos Ultralytics YOLO26 al formato ONNX, el siguiente paso es desplegar estos modelos en diversos entornos. Para obtener instrucciones detalladas sobre cómo desplegar tus modelos ONNX, consulta los siguientes recursos:
-
Documentación de la API de Python de ONNX Runtime: Esta guía proporciona información esencial para cargar y ejecutar modelos ONNX utilizando ONNX Runtime.
-
Despliegue en dispositivos Edge: Consulta esta página de documentación para ver diferentes ejemplos de despliegue de modelos ONNX en edge.
-
Tutoriales de ONNX en GitHub: Una colección de tutoriales completos que cubren varios aspectos del uso y la implementación de modelos ONNX en diferentes escenarios.
-
Triton Inference Server: Aprende a desplegar tus modelos ONNX con el servidor de inferencia Triton de NVIDIA para despliegues escalables y de alto rendimiento.
Resumen
En esta guía, has aprendido a exportar modelos Ultralytics YOLO26 al formato ONNX para aumentar su interoperabilidad y rendimiento en diversas plataformas. También te hemos presentado ONNX Runtime y las opciones de despliegue de ONNX.
La exportación a ONNX es solo uno de los muchos formatos de exportación admitidos por Ultralytics YOLO26, lo que te permite desplegar tus modelos en prácticamente cualquier entorno. Dependiendo de tus necesidades específicas, también puedes explorar otras opciones de exportación como TensorRT para un rendimiento máximo en GPU o CoreML para dispositivos Apple.
Para obtener más detalles sobre el uso, visita la documentación oficial de ONNX.
Además, si deseas saber más sobre otras integraciones de Ultralytics YOLO26, visita nuestra página de guía de integración. Encontrarás muchos recursos e ideas útiles allí.
Preguntas frecuentes
¿Cómo exporto modelos YOLO26 al formato ONNX usando Ultralytics?
Para exportar tus modelos YOLO26 al formato ONNX usando Ultralytics, sigue estos pasos:
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Para más detalles, visita la documentación de exportación.
¿Cuáles son las ventajas de utilizar ONNX Runtime para desplegar modelos YOLO26?
El uso de ONNX Runtime para desplegar modelos YOLO26 ofrece varias ventajas:
- Compatibilidad multiplataforma: ONNX Runtime es compatible con varias plataformas, como Windows, macOS y Linux, lo que garantiza que tus modelos se ejecuten sin problemas en diferentes entornos.
- Aceleración por hardware: ONNX Runtime puede aprovechar las optimizaciones específicas del hardware para CPUs, GPUs y aceleradores dedicados, proporcionando una inferencia de alto rendimiento.
- Interoperabilidad de frameworks: Los modelos entrenados en frameworks populares como PyTorch o TensorFlow pueden convertirse fácilmente al formato ONNX y ejecutarse usando ONNX Runtime.
- Optimización del rendimiento: ONNX Runtime puede proporcionar hasta 3 veces más velocidad en CPU en comparación con los modelos nativos de PyTorch, lo que lo hace ideal para escenarios de despliegue donde los recursos de GPU son limitados.
Obtén más información consultando la documentación de ONNX Runtime.
¿Qué opciones de despliegue hay disponibles para modelos YOLO26 exportados a ONNX?
Los modelos YOLO26 exportados a ONNX pueden desplegarse en varias plataformas, incluyendo:
- CPUs: Utilizando ONNX Runtime para una inferencia optimizada en CPU.
- GPUs: Aprovechando NVIDIA CUDA para la aceleración de alto rendimiento en GPU.
- Dispositivos Edge: Ejecutando modelos ligeros en dispositivos edge y móviles para una inferencia en tiempo real en el dispositivo.
- Navegadores web: Ejecutando modelos directamente dentro de navegadores web para aplicaciones interactivas basadas en la web.
- Servicios en la nube: Desplegando en plataformas en la nube que admiten el formato ONNX para una inferencia escalable.
Para más información, explora nuestra guía sobre opciones de despliegue de modelos.
¿Por qué debería usar el formato ONNX para los modelos Ultralytics YOLO26?
Usar el formato ONNX para los modelos Ultralytics YOLO26 proporciona numerosos beneficios:
- Interoperabilidad: ONNX permite transferir modelos entre diferentes frameworks de machine learning sin problemas.
- Optimización del rendimiento: ONNX Runtime puede mejorar el rendimiento del modelo utilizando optimizaciones específicas de hardware.
- Flexibilidad: ONNX admite varios entornos de despliegue, lo que te permite usar el mismo modelo en diferentes plataformas sin modificaciones.
- Estandarización: ONNX proporciona un formato estandarizado que es ampliamente compatible en toda la industria, lo que garantiza la compatibilidad a largo plazo.
Consulta la guía completa sobre exportación de modelos YOLO26 a ONNX.
¿Cómo puedo solucionar problemas al exportar modelos YOLO26 a ONNX?
Al exportar modelos YOLO26 a ONNX, puedes encontrar problemas comunes como dependencias no coincidentes u operaciones no compatibles. Para solucionar estos problemas:
- Verifica que tienes instalada la versión correcta de las dependencias requeridas.
- Consulta la documentación oficial de ONNX para conocer los operadores y características compatibles.
- Revisa los mensajes de error en busca de pistas y consulta la guía de problemas comunes de Ultralytics.
- Intenta usar diferentes argumentos de exportación como
simplify=Trueo ajusta la versión delopset. - Para problemas de tamaño de entrada dinámico, establece
dynamic=Truedurante la exportación.
Si los problemas persisten, contacta con el soporte de Ultralytics para obtener más ayuda.