Link to this sectionExportació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 desplegar modelos de visión artificial, necesitarás un formato de modelo que sea a la vez flexible y compatible con múltiples plataformas.
Exportar modelos Ultralytics YOLO26 al formato ONNX agiliza 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 🚀
Link to this sectionONNX 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 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 aprendizaje automático de forma que permita su uso en diferentes marcos de IA y hardware.
Los modelos ONNX se pueden utilizar para realizar la transición entre diferentes marcos sin problemas. Por ejemplo, un modelo de aprendizaje profundo entrenado en PyTorch puede exportarse al formato ONNX y luego importarse fácilmente en TensorFlow.
Alternativamente, los modelos ONNX se pueden usar con ONNX Runtime. ONNX Runtime es un acelerador multiplataforma versátil para modelos de aprendizaje automático que es compatible con marcos 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, incluyendo 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 aprendizaje automático y su compatibilidad.
Link to this sectionCaracterí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.
Link to this sectionUso 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.
Link to this sectionDespliegue 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.
Link to this sectionOpciones 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 admite completamente la aceleración por GPU, particularmente NVIDIA CUDA. Esto permite una ejecución eficiente en GPUs NVIDIA para tareas que exigen una alta potencia computacional.
-
Dispositivos móviles y de borde (Edge): ONNX se extiende a dispositivos móviles y de borde, lo que resulta perfecto para escenarios de inferencia en tiempo real y en el dispositivo. Es ligero y compatible con hardware de borde, y sirve como base para formatos NPU de proveedores como 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.
Link to this sectionExportación de modelos YOLO26 a ONNX#
Puedes ampliar la compatibilidad del modelo y la flexibilidad de despliegue 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.
Link to this sectionInstalació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 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 encontrar soluciones y consejos.
Link to this sectionUso#
Antes de profundizar 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.
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")Link to this sectionArgumentos 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 utilizando imágenes de calibración de data, produciendo un modelo _int8.onnx); 32/no configurado es FP32. Reemplaza las banderas obsoletas half/int8. |
data | str | None | YAML del conjunto de datos utilizado para la calibración INT8. Si se omite con quantize=8, Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo. |
fraction | float | 1.0 | Fracción de imágenes de calibración a usar para la cuantización INT8. |
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 potencialmente mejora 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 lote del modelo exportado o el número máximo de imágenes que el modelo 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 detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre la exportación.
Link to this sectionDespliegue 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:
-
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 de borde: Consulta esta página de documentación para ver diferentes ejemplos de despliegue de modelos ONNX en el borde.
-
Tutoriales de ONNX en 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 desplegar tus modelos ONNX con Triton Inference Server de NVIDIA para despliegues escalables y de alto rendimiento.
Link to this sectionResumen#
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 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, es posible que también quieras explorar otras opciones de exportación como TensorRT para un rendimiento máximo de GPU o CoreML para dispositivos Apple.
Para obtener más detalles sobre su 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 útiles e información allí.
Link to this sectionFAQ#
Link to this section¿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 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 documentación de exportación.
Link to this section¿Cuáles son las ventajas de usar ONNX Runtime para desplegar modelos YOLO26?#
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 marcos: Los modelos entrenados en marcos populares como PyTorch o TensorFlow se pueden convertir fácilmente al formato ONNX y ejecutarse 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.
Aprende más consultando la documentación de ONNX Runtime.
Link to this section¿Qué opciones de despliegue están disponibles para los modelos YOLO26 exportados a ONNX?#
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 opciones de despliegue de modelos.
Link to this section¿Por qué debería usar el formato ONNX para los modelos Ultralytics YOLO26?#
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 cómo exportar modelos YOLO26 a ONNX.
Link to this section¿Cómo puedo solucionar problemas al exportar modelos YOLO26 a 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 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 al soporte de Ultralytics para obtener más ayuda.