Link to this sectionExportación a ONNX para modelos YOLO26#
~43% más rápido en inferencia.
- Exportar el modelo YOLO26 de Ultralytics a ONNX puede ofrecer hasta un 43% de mejora en la velocidad de inferencia, lo que permite una implementación más rápida y eficiente.
A menudo, al implementar 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 agiliza la implementación 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 que desarrollaron inicialmente 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 manera que permita su uso en diferentes marcos de trabajo de IA y hardware.
Los modelos ONNX se pueden usar para realizar la transición entre diferentes marcos de trabajo sin problemas. Por ejemplo, un modelo de aprendizaje profundo entrenado en PyTorch se puede exportar al formato ONNX y luego importarse fácilmente en TensorFlow.
Alternativamente, los modelos ONNX se pueden utilizar 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 alto rendimiento en diversas plataformas de hardware, incluyendo CPUs, GPUs y aceleradores especializados.
Ya sea utilizado de forma independiente o junto con ONNX Runtime, ONNX proporciona una solución flexible para la implementación 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 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 marco que admita ONNX.
-
Control de versiones y compatibilidad con versiones anteriores: ONNX mantiene un sistema de control 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 las aristas representan los tensores que fluyen entre ellos. Este formato es fácilmente adaptable a diversos marcos de trabajo que también representan los modelos como grafos.
-
Herramientas y ecosistema: Existe un rico ecosistema de herramientas alrededor de 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 de trabajo sin problemas.
Link to this sectionUso común de ONNX#
Antes de entrar en cómo exportar modelos YOLO26 al formato ONNX, echemos un vistazo a dónde se suelen utilizar los modelos ONNX.
Link to this sectionImplementación en CPU#
Los modelos ONNX se implementan a menudo 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 las implementaciones en CPU en tiempo real.
Link to this sectionOpciones de implementación compatibles#
Aunque los modelos ONNX se utilizan comúnmente en CPUs, también se pueden implementar 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 requieren una alta potencia computacional.
-
Dispositivos móviles y de borde (Edge): ONNX se extiende a dispositivos de borde y móviles, perfectos para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con hardware de borde, y sirve como base para formatos de NPU de proveedores tales como Qualcomm QNN para dispositivos Snapdragon y RKNN para NPUs de Rockchip.
-
Navegadores web: ONNX puede ejecutarse directamente en navegadores web, impulsando 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 y la flexibilidad de implementación del modelo 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 obtener soluciones y consejos.
Link to this sectionUso#
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.
El formato ONNX es compatible con los modos Exportar, Predecir y Validar. Exporta tu modelo, luego carga el modelo exportado 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", int8=True, 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 de implementación específicas:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'onnx' | Formato de destino para el modelo exportado, definiendo 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 entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas. |
half | bool | False | Habilita la cuantización FP16 (precisión media), reduciendo el tamaño del modelo y potencialmente acelerando la inferencia en hardware compatible. |
int8 | bool | False | Habilita la cuantización estática INT8 con ONNX Runtime usando imágenes de calibración de data, produciendo un modelo _int8.onnx. |
data | str | None | YAML del conjunto de datos utilizado para la calibración INT8. Si se omite con int8=True, 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 utilizar para la cuantización INT8. |
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 potencialmente mejora el rendimiento y la compatibilidad. |
opset | int | None | Especifica la versión del 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 admitida. |
nms | bool | False | Añade la supresión de no máximos (NMS), esencial para el 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 silicio de Apple (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 sectionImplementación de modelos YOLO26 ONNX exportados#
Una vez que hayas exportado con éxito tus modelos YOLO26 de Ultralytics al formato ONNX, el siguiente paso es implementar estos modelos en varios entornos. Para obtener instrucciones detalladas sobre cómo implementar 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.
-
Implementación en dispositivos de borde: Consulta esta página de documentación para ver diferentes ejemplos de implementación de modelos ONNX en el borde.
-
Tutoriales de ONNX en GitHub: Una colección de tutoriales exhaustivos 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 servidor de inferencia Triton de NVIDIA para implementaciones escalables y de alto rendimiento.
Link to this sectionResumen#
En esta guía, has aprendido cómo exportar modelos YOLO26 de Ultralytics al formato ONNX para aumentar su interoperabilidad y rendimiento en varias plataformas. También te presentamos ONNX Runtime y las opciones de implementación 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 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 un rendimiento máximo de 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. Allí encontrarás muchos recursos e ideas útiles.
Link to this sectionPreguntas frecuentes#
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 implementar modelos YOLO26?#
Usar ONNX Runtime para implementar modelos YOLO26 ofrece varias ventajas:
- Compatibilidad multiplataforma: ONNX Runtime admite varias plataformas, como Windows, macOS y Linux, asegurando que tus modelos se ejecuten sin problemas en diferentes entornos.
- Aceleración de hardware: ONNX Runtime puede aprovechar las optimizaciones específicas de hardware para CPUs, GPUs y aceleradores dedicados, proporcionando una inferencia de alto rendimiento.
- Interoperabilidad de marcos de trabajo: 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 3 veces más velocidad en CPU en comparación con los modelos nativos de PyTorch, lo que lo hace ideal para escenarios de implementación donde los recursos de GPU son limitados.
Obtén más información consultando la documentación de ONNX Runtime.
Link to this section¿Qué opciones de implementación están disponibles para los modelos YOLO26 exportados a ONNX?#
Los modelos YOLO26 exportados a ONNX se pueden implementar en varias plataformas, incluyendo:
- CPUs: Utilizando ONNX Runtime para una inferencia optimizada en CPU.
- GPUs: Aprovechando NVIDIA CUDA para una aceleración de GPU de alto rendimiento.
- Dispositivos de borde: Ejecutando modelos ligeros en dispositivos de borde 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: Implementando en plataformas en la nube que admitan el formato ONNX para una inferencia escalable.
Para obtener más información, explora nuestra guía sobre opciones de implementación 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 proporciona 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 de hardware.
- Flexibilidad: ONNX admite varios entornos de implementación, 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, asegurando la compatibilidad a largo plazo.
Consulta la guía completa sobre exportación de 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 admitidas. Para solucionar estos problemas:
- Verifica que tienes instalada la versión correcta de las dependencias necesarias.
- 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 deopset. - 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.