Exportación ONNX para modelos YOLO26#
Inferencia ONNX en CPU ~43 % más rápida: YOLO26n frente a YOLO11n
- YOLO26n se ejecuta hasta un 43 % más rápido que YOLO11n en inferencias ONNX en CPU (Intel Xeon CPU @ 2.00 GHz). Consulta la página del modelo YOLO26 para ver la comparación completa.
A menudo, al desplegar modelos de visión artificial, necesitas un formato de modelo flexible y compatible con varias plataformas.
Exportar modelos Ultralytics YOLO26 al formato ONNX simplifica el despliegue y garantiza un rendimiento óptimo en distintos entornos. Esta guía te mostrará cómo convertir fácilmente tus modelos YOLO26 a ONNX y mejorar su escalabilidad y eficacia en aplicaciones reales.
Ver: Prueba de inferencia ONNX: Ultralytics YOLO26 frente a Ultralytics YOLO11 | YOLO26 ofrece una inferencia ~43 % más rápida 🚀
ONNX y ONNX Runtime#
ONNX, sigla de Open Neural Network Exchange (intercambio abierto de redes neuronales), es un proyecto comunitario desarrollado inicialmente por Facebook y Microsoft. El desarrollo continuo de ONNX es un esfuerzo colaborativo respaldado por varias organizaciones, como IBM, Amazon (a través de AWS) y Google. El objetivo del proyecto es crear un formato de archivo abierto para representar modelos de aprendizaje automático de forma que puedan utilizarse en distintos frameworks de IA y hardware.
Los modelos ONNX permiten pasar fácilmente de un framework a otro. Por ejemplo, puedes exportar a ONNX un modelo de aprendizaje profundo entrenado en PyTorch e importarlo después a TensorFlow.
También puedes usar modelos ONNX con ONNX Runtime. ONNX Runtime es un acelerador multiplataforma versátil para modelos de aprendizaje automático, compatible con frameworks como PyTorch, TensorFlow, 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 forma eficiente y con un alto rendimiento en distintas plataformas de hardware, como CPU, GPU y aceleradores especializados.
Tanto si se usa de forma independiente como junto con ONNX Runtime, ONNX ofrece una solución flexible para el despliegue de modelos de aprendizaje automático y la compatibilidad.
Características principales de los modelos ONNX#
La capacidad de ONNX para gestionar distintos formatos se debe a las siguientes características principales:
-
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. Al convertir un modelo al formato ONNX, su arquitectura y sus pesos se traducen a esta representación común. Esta uniformidad garantiza que cualquier framework compatible con ONNX pueda interpretar el modelo.
-
Control de versiones y compatibilidad con versiones anteriores: ONNX mantiene un sistema de versiones para sus operadores. Así, aunque el estándar evolucione, los modelos creados con versiones anteriores siguen siendo utilizables. La compatibilidad con versiones anteriores es fundamental para evitar 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 aprendizaje automático: los nodos representan operaciones o cálculos y las aristas representan los tensores que fluyen entre ellos. Este formato se adapta fácilmente a distintos frameworks que también representan los modelos como grafos.
-
Herramientas y ecosistema: ONNX cuenta con un amplio ecosistema de herramientas que facilitan la conversión, la visualización y la optimización de modelos. Estas herramientas permiten a los desarrolladores trabajar con modelos ONNX y convertirlos fácilmente entre distintos frameworks.
Usos habituales de ONNX#
Antes de explicar cómo exportar modelos YOLO26 al formato ONNX, veamos dónde suelen usarse los modelos ONNX.
Despliegue en CPU#
Los modelos ONNX suelen desplegarse en CPU por su compatibilidad con ONNX Runtime, un entorno de ejecución optimizado para CPU. Mejora considerablemente la velocidad de inferencia y hace viables los despliegues en tiempo real en CPU.
Opciones de despliegue compatibles#
Aunque los modelos ONNX se utilizan habitualmente en CPU, también pueden desplegarse en las siguientes plataformas:
-
Aceleración por GPU: ONNX admite plenamente la aceleración por GPU en GPU NVIDIA mediante CUDA y en GPU AMD mediante ROCm y MIGraphX.
-
Dispositivos edge y móviles: ONNX también funciona en dispositivos edge y móviles, ideales para inferencias en el dispositivo y en tiempo real. Es ligero y compatible con hardware edge, y sirve de base para formatos de NPU de distintos fabricantes, como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon y RKNN para NPU Rockchip.
-
Navegadores web: ONNX puede ejecutarse directamente en navegadores web y permitir aplicaciones de IA interactivas y dinámicas.
Tareas compatibles#
La exportación ONNX admite las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esas cabezas.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportación de modelos YOLO26 a ONNX#
Puedes ampliar la compatibilidad de los modelos y la flexibilidad de despliegue convirtiendo modelos YOLO26 al formato ONNX. Ultralytics YOLO26 ofrece un proceso de exportación sencillo que puede mejorar considerablemente el rendimiento de tu modelo en distintas plataformas.
Instalación#
Para instalar el paquete necesario, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y buenas prácticas sobre el proceso de instalación, consulta nuestra guía de instalación de YOLO26. Si tienes dificultades al instalar los paquetes necesarios para YOLO26, consulta nuestra guía de problemas habituales, donde encontrarás soluciones y consejos.
Uso#
Antes de consultar las instrucciones de uso, echa un vistazo a la gama de modelos YOLO26 que ofrece Ultralytics. Así podrás elegir el modelo más adecuado para los requisitos de tu proyecto.
El formato ONNX admite los modos Export, Predict y Validate. Exporta tu modelo y, a continuación, carga el modelo exportado para ejecutar inferencias o validar su precisión.
from ultralytics import YOLO
# Carga un modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta el modelo al formato ONNX
model.export(format="onnx") # crea 'yolo26n.onnx'
# Exporta un modelo ONNX cuantizado a INT8 con datos de calibración
model.export(format="onnx", quantize=8, data="coco8.yaml") # crea 'yolo26n_int8.onnx'from ultralytics import YOLO
# Carga el modelo ONNX exportado
model = YOLO("yolo26n.onnx")
# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carga el modelo ONNX exportado
model = YOLO("yolo26n.onnx")
# Valida la precisión con el conjunto de datos COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportación#
Al exportar tu modelo YOLO26 al formato ONNX, puedes personalizar el proceso con distintos argumentos para adaptarlo a tus necesidades de despliegue:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'onnx' | Formato de destino del modelo exportado, que define su compatibilidad con distintos 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. |
quantize | int o str | None | Precisión de cuantización: 16 (FP16) o 8 (cuantización estática INT8 con ONNX Runtime y las imágenes de calibración de data, que genera un modelo _int8.onnx); 32/sin especificar equivale a FP32. Un punto de control entrenado con quantize=8 siempre se exporta a INT8 como nodos Q/DQ a partir de los rangos que contiene, sin calibración y con el nombre simple .onnx. Sustituye a los indicadores obsoletos half/int8. |
data | str | None | Archivo YAML del conjunto de datos utilizado para la calibración INT8; en clasificación, en su lugar se acepta un directorio de conjunto de datos o el nombre de un conjunto de datos integrado. Si se omite con quantize=8, Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo; si el punto de control se ha entrenado con quantize=8, no hace falta. |
fraction | float, int o list | 1.0 | Subconjunto de calibración expresado como proporción, número de imágenes o proporciones/recuentos [train, val, test]. Las listas de dos elementos dejan completo test, mientras que 0 lo omite. |
dynamic | bool | False | Permite tamaños de entrada dinámicos, lo que aumenta la flexibilidad para trabajar con imágenes de distintas dimensiones. |
simplify | bool | True | Simplifica el grafo del modelo con onnxslim, lo que puede mejorar el rendimiento y la compatibilidad. |
opset | int | None | Especifica la versión de opset de ONNX para garantizar la compatibilidad con distintos analizadores y entornos de ejecución ONNX. Si no se establece, se utiliza la última versión compatible. |
nms | bool, opcional | None | Selecciona la salida sin procesar (None, predeterminada), NMS integrada (True) o el cabezal sin NMS (False). |
batch | int | 1 | Especifica el tamaño del lote de inferencia del modelo exportado o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el 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 obtener más información 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 desplegarlos en distintos entornos. Para obtener instrucciones detalladas sobre cómo desplegar tus modelos ONNX, consulta estos recursos:
-
Documentación de la API de Python de ONNX Runtime: esta guía ofrece información esencial para cargar y ejecutar modelos ONNX con ONNX Runtime.
-
Despliegue en dispositivos edge: consulta esta página de la documentación para ver distintos ejemplos de despliegue de modelos ONNX en dispositivos edge.
-
Tutoriales de ONNX en GitHub: colección de tutoriales exhaustivos que abordan distintos aspectos del uso y la implementación de modelos ONNX en diversos escenarios.
-
Triton Inference Server: aprende a desplegar tus modelos ONNX con Triton Inference Server de NVIDIA para conseguir despliegues escalables y de alto rendimiento.
Inferencia en GPU AMD con MIGraphX#
Ultralytics ejecuta modelos ONNX exportados en GPU AMD mediante el proveedor de ejecución MIGraphX de ONNX Runtime. En un sistema ROCm (HIP), el backend ONNX instala el complemento onnxruntime-ep-migraphx al primer uso y selecciona automáticamente MIGraphXExecutionProvider sin necesidad de cambiar el código; además, admite todas las tareas de YOLO26. Consulta la guía de inferencia en GPU AMD para conocer los requisitos previos, la instalación, el uso, las evaluaciones comparativas y la caché de programas compilados.
Resumen#
En esta guía has aprendido a exportar modelos Ultralytics YOLO26 al formato ONNX para mejorar su interoperabilidad y rendimiento en distintas plataformas. También has conocido ONNX Runtime y las opciones de despliegue de ONNX.
La exportación ONNX es solo uno de los muchos formatos de exportación compatibles con Ultralytics YOLO26, que te permiten desplegar tus modelos en prácticamente cualquier entorno. Según tus necesidades, quizá también quieras explorar otras opciones de exportación, como TensorRT para obtener el máximo rendimiento de GPU o CoreML para dispositivos Apple.
Para obtener más información sobre el uso, visita la documentación oficial de ONNX.
Además, si quieres saber más sobre otras integraciones de Ultralytics YOLO26, visita nuestra página de la guía de integración. Allí encontrarás muchos recursos e ideas útiles.
Preguntas frecuentes#
Para exportar tus modelos YOLO26 al formato ONNX con Ultralytics, sigue estos pasos:
Usofrom ultralytics import YOLO # Carga un modelo YOLO26 model = YOLO("yolo26n.pt") # Exporta el modelo al formato ONNX model.export(format="onnx") # crea 'yolo26n.onnx' # Carga el modelo ONNX exportado onnx_model = YOLO("yolo26n.onnx") # Ejecutar inferencia results = onnx_model("https://ultralytics.com/images/bus.jpg")Para obtener más información, visita la documentación de exportación.
Usar ONNX Runtime para desplegar modelos YOLO26 ofrece varias ventajas:
- Compatibilidad multiplataforma: ONNX Runtime es compatible con distintas plataformas, como Windows, macOS y Linux, lo que garantiza que tus modelos se ejecuten sin problemas en distintos entornos.
- Aceleración por hardware: ONNX Runtime puede aprovechar optimizaciones específicas del hardware para CPU, GPU y aceleradores dedicados, lo que permite realizar inferencias de alto rendimiento.
- Interoperabilidad entre frameworks: los modelos entrenados con frameworks populares, como PyTorch o TensorFlow, se pueden convertir fácilmente al formato ONNX y ejecutar con ONNX Runtime.
- Optimización del rendimiento: ONNX Runtime puede ofrecer hasta 3 veces más velocidad en CPU que los modelos PyTorch nativos, por lo que resulta ideal para situaciones de despliegue con recursos de GPU limitados.
Obtén más información en la documentación de ONNX Runtime.
Los modelos YOLO26 exportados a ONNX se pueden implementar en diversas plataformas, entre ellas:
- CPU: utiliza ONNX Runtime para optimizar la inferencia en CPU.
- GPU NVIDIA: aprovecha NVIDIA CUDA para acelerar la GPU y obtener un alto rendimiento.
- GPU AMD: utiliza AMD ROCm y el proveedor de ejecución MIGraphX para acelerar la GPU con un alto rendimiento en Linux.
- Dispositivos edge: ejecuta modelos ligeros en dispositivos edge y móviles para realizar inferencias en tiempo real directamente en el dispositivo.
- Navegadores web: ejecuta los modelos directamente en los navegadores web para crear aplicaciones web interactivas.
- Servicios en la nube: implementa los modelos en plataformas en la nube compatibles con el formato ONNX para escalar la inferencia.
Para obtener más información, consulta nuestra guía sobre opciones de implementación de modelos.
El uso del formato ONNX para los modelos Ultralytics YOLO26 ofrece numerosas ventajas:
- Interoperabilidad: ONNX permite transferir modelos fácilmente entre distintos frameworks de aprendizaje automático.
- Optimización del rendimiento: ONNX Runtime puede mejorar el rendimiento de los modelos mediante optimizaciones específicas del hardware.
- Flexibilidad: ONNX es compatible con diversos entornos de implementación, por lo que puedes utilizar el mismo modelo en distintas plataformas sin modificarlo.
- Estandarización: ONNX ofrece un formato estandarizado con amplia compatibilidad en el sector, lo que garantiza la compatibilidad a largo plazo.
Consulta la guía completa sobre cómo exportar modelos YOLO26 a ONNX.
Al exportar modelos YOLO26 a ONNX, puedes encontrarte con problemas habituales, como dependencias incompatibles u operaciones no admitidas. Para solucionar estos problemas:
- Comprueba que tienes instalada la versión correcta de las dependencias necesarias.
- Consulta la documentación oficial de ONNX para conocer los operadores y las funciones compatibles.
- Revisa los mensajes de error en busca de pistas y consulta la guía de problemas habituales de Ultralytics.
- Prueba a utilizar otros argumentos de exportación, como
simplify=True, o a cambiar la versión deopset. - Si tienes problemas con el tamaño dinámico de entrada, establece
dynamic=Truedurante la exportación.
Si el problema persiste, ponte en contacto con el servicio de asistencia de Ultralytics para obtener más ayuda.