Exportación a ONNX para modelos YOLO26#
~43% de inferencia más rápida.
- Exportar el modelo Ultralytics YOLO26 a ONNX puede proporcionar hasta un 43% de aumento en la velocidad de inferencia, lo que permite un despliegue más rápido y eficiente.
A menudo, al implementar modelos de computer vision, necesitas un formato de modelo que sea flexible y compatible con múltiples plataformas.
Exportar modelos de Ultralytics YOLO26 al formato ONNX agiliza la implementación y garantiza un rendimiento óptimo en diversos entornos. Esta guía te muestra 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 respaldado por varias 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 usarse en diferentes frameworks de IA y hardware.
Los modelos ONNX se pueden usar para realizar la transición entre diferentes frameworks sin problemas. Por ejemplo, un modelo de deep learning entrenado en PyTorch se puede exportar al formato ONNX y luego importar fácilmente a TensorFlow.
Alternativamente, los modelos ONNX se pueden usar con ONNX Runtime. ONNX Runtime es un acelerador versátil multiplataforma para modelos de machine learning que es 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 manera eficiente y con un alto rendimiento en varias plataformas de hardware, incluyendo CPUs, GPUs y aceleradores especializados.
Ya sea que se use de forma independiente o junto con ONNX Runtime, ONNX proporciona una solución flexible para la model deployment y la compatibilidad en machine learning.
Características clave de los modelos ONNX#
La capacidad de ONNX para manejar varios formatos se puede atribuir 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 entendido por cualquier marco que admita ONNX.
-
Control de 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 aprendizaje automático, 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 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 que los desarrolladores trabajen con modelos ONNX y conviertan modelos entre diferentes marcos 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 suelen utilizar los modelos ONNX.
Despliegue en CPU#
Los modelos ONNX suelen desplegarse en CPUs debido a su compatibilidad con ONNX Runtime. Este motor 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 admitidas#
Si bien los modelos ONNX se utilizan comúnmente en CPUs, también pueden desplegarse en las siguientes plataformas:
-
Aceleración por GPU: ONNX es totalmente compatible con la aceleración por GPU, particularmente con NVIDIA CUDA. Para el entrenamiento e inferencia nativos en GPUs de AMD, usa PyTorch ROCm; un archivo ONNX sigue requiriendo un entorno de ejecución compatible con AMD.
-
Dispositivos Edge y móviles: ONNX se extiende a dispositivos edge y móviles, lo cual es perfecto para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con hardware edge, y sirve como base para formatos de NPU de proveedores como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon y RKNN para NPUs de Rockchip.
-
Navegadores web: ONNX puede ejecutarse directamente en navegadores web, potenciando aplicaciones de IA interactivas y dinámicas basadas en la web.
Tareas compatibles#
La exportación a ONNX es compatible con 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.
Exportación de modelos YOLO26 a ONNX#
Puedes ampliar la compatibilidad del modelo y la flexibilidad de implementación 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 necesario, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y mejores prácticas relacionadas con el proceso de instalación, consulta nuestra YOLO26 Installation guide. Si encuentras alguna dificultad al instalar los paquetes necesarios para YOLO26, consulta nuestra Common Issues guide para ver soluciones y consejos.
Uso#
Antes de sumergirte en las instrucciones de uso, asegúrate de echar un vistazo a la gama de YOLO26 models offered by Ultralytics. Esto te ayudará a 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 luego cárgalo para ejecutar la inferencia o validar su precisión.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")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 específicas de despliegue:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'onnx' | Formato de destino para el modelo exportado, definiendo la compatibilidad con diversos 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. |
quantize | int o str | None | Precisión de cuantización: 16 (FP16) o 8 (cuantización estática INT8 con ONNX Runtime usando imágenes de calibración de data, produciendo un modelo _int8.onnx); 32/sin establecer es FP32. Reemplaza los indicadores obsoletos half/int8. |
data | str | None | Dataset en formato YAML utilizado para la calibración INT8; la clasificación, por su parte, requiere un directorio de dataset o el nombre de un dataset integrado. Si se omite junto con quantize=8, Ultralytics selecciona el dataset de calibración predeterminado para la tarea del modelo. |
fraction | float, int o list | 1.0 | Subconjunto de calibración como proporción, recuento de imágenes o proporciones/recuentos de [train, val, test]. Las listas de dos elementos dejan test completo, mientras que 0 lo omite. |
dynamic | bool | False | Permite tamaños de entrada dinámicos, mejorando la flexibilidad al manejar diferentes dimensiones de imagen. |
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 la compatibilidad con diferentes analizadores y motores 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 el posprocesamiento preciso y eficiente de detecciones. |
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 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 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 exportados a ONNX#
Una vez que hayas exportado con éxito tus modelos Ultralytics YOLO26 al formato ONNX, el siguiente paso es desplegarlos en varios entornos. Para obtener instrucciones detalladas sobre cómo desplegar tus modelos ONNX, echa un vistazo a los siguientes recursos:
-
ONNX Runtime Python API Documentation: Esta guía proporciona información esencial para cargar y ejecutar modelos ONNX utilizando ONNX Runtime.
-
Deploying on Edge Devices: Consulta esta página de documentación para ver diferentes ejemplos de implementación de modelos ONNX en edge.
-
ONNX Tutorials on GitHub: Una colección de tutoriales completos que cubren varios aspectos del uso e implementación de modelos ONNX en diferentes escenarios.
-
Triton Inference Server: Aprende a implementar tus modelos ONNX con el Triton Inference Server de NVIDIA para implementaciones escalables de alto rendimiento.
Resumen#
En esta guía, has aprendido cómo exportar modelos Ultralytics YOLO26 al formato ONNX para aumentar su interoperabilidad y rendimiento en varias plataformas. También se te presentaron las opciones de despliegue de ONNX Runtime y ONNX.
La exportación a ONNX es solo uno de los muchos export formats compatibles con Ultralytics YOLO26, lo que te permite implementar tus modelos en prácticamente cualquier entorno. Dependiendo de tus necesidades específicas, es posible que también quieras explorar otras opciones de exportación como TensorRT para obtener el máximo rendimiento de la GPU o CoreML para dispositivos Apple.
Para obtener más detalles sobre el uso, visita la ONNX official documentation.
Asimismo, si deseas saber más sobre otras integraciones de Ultralytics YOLO26, visita nuestra integration guide page. Allí encontrarás una gran cantidad de recursos y perspectivas útiles.
FAQ#
Para exportar tus modelos YOLO26 al formato ONNX usando Ultralytics, sigue estos pasos:
Usofrom ultralytics import YOLO # Load a 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 obtener más detalles, visita la export documentation.
El uso de ONNX Runtime para desplegar modelos YOLO26 ofrece varias ventajas:
- Compatibilidad multiplataforma: ONNX Runtime admite 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 entre frameworks: Los modelos entrenados en frameworks populares como PyTorch o TensorFlow se pueden convertir fácilmente al formato ONNX y ejecutar usando ONNX Runtime.
- Optimización del rendimiento: ONNX Runtime puede proporcionar hasta 3x de aceleración 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 ONNX Runtime documentation.
Los modelos YOLO26 exportados a ONNX se pueden desplegar en varias plataformas, incluyendo:
- CPUs: Utilizando ONNX Runtime para una inferencia optimizada en CPU.
- GPUs: Aprovechando NVIDIA CUDA para una aceleración por GPU de alto rendimiento.
- Dispositivos de borde: Ejecutando modelos ligeros en dispositivos móviles y de borde para una inferencia en tiempo real y en el dispositivo.
- Navegadores web: Ejecutando modelos directamente dentro de los 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 obtener más información, explora nuestra guía sobre model deployment options.
Usar el formato ONNX para los modelos Ultralytics YOLO26 ofrece numerosos beneficios:
- Interoperabilidad: ONNX permite que los modelos se transfieran entre diferentes marcos de aprendizaje automático sin problemas.
- Optimización del rendimiento: ONNX Runtime puede mejorar el rendimiento del modelo utilizando optimizaciones específicas del 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 cuenta con un amplio apoyo en toda la industria, lo que garantiza la compatibilidad a largo plazo.
Consulta la guía completa sobre exporting YOLO26 models to ONNX.
Al exportar modelos YOLO26 a ONNX, es posible que encuentres 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 ONNX documentation oficial para ver los operadores y características compatibles.
- Revisa los mensajes de error en busca de pistas y consulta la Ultralytics Common Issues guide.
- Prueba a utilizar diferentes argumentos de exportación como
simplify=Trueo a ajustar la versión deopset. - Para problemas con tamaños de entrada dinámicos, establece
dynamic=Truedurante la exportación.
Si los problemas persisten, contacta al soporte de Ultralytics para obtener más ayuda.