Ultralytics YOLO27:

Exportación de modelos YOLO26 a ONNX#

Inferencia de ONNX en CPU ~43 % más rápida: YOLO26n frente a YOLO11n
  • YOLO26n funciona hasta un 43 % más rápido que YOLO11n en inferencia de 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 implementar modelos de visión por ordenador, necesitarás un formato de modelo que sea flexible y compatible con varias plataformas.

Exportar modelos 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 🚀

ONNX y ONNX Runtime#

ONNX, cuyas siglas corresponden a 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 aprendizaje automático de forma que puedan utilizarse en distintos frameworks de IA y hardware.

Los modelos ONNX se pueden utilizar para pasar de un framework a otro sin problemas. Por ejemplo, un modelo de aprendizaje profundo entrenado en PyTorch se puede exportar al formato ONNX y después importar fácilmente en TensorFlow.

ONNX model portability across deep learning frameworks

Como alternativa, puedes utilizar los 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 los 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 diversas plataformas de hardware, incluidas CPU, GPU y aceleradores especializados.

ONNX Runtime cross-platform inference acceleration

Tanto si se utiliza de forma independiente como junto con ONNX Runtime, ONNX proporciona una solución flexible para la implementación de modelos de aprendizaje automático y la compatibilidad entre plataformas.

Características principales de los modelos ONNX#

La capacidad de ONNX para gestionar diversos 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.

  • Versionado y compatibilidad con versiones anteriores: ONNX mantiene un sistema de versionado para sus operadores. Esto garantiza que, aunque el estándar evolucione, los modelos creados con versiones anteriores sigan siendo utilizables. La compatibilidad con versiones anteriores es una característica esencial 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 se adapta fácilmente a diversos frameworks que también representan los modelos como grafos.

  • Herramientas y ecosistema: Existe un amplio 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 los conviertan sin problemas entre distintos frameworks.

Usos habituales de ONNX#

Antes de explicar cómo exportar modelos YOLO26 al formato ONNX, veamos dónde se suelen utilizar los modelos ONNX.

Implementación en CPU#

Los modelos ONNX se suelen implementar en CPU debido a su compatibilidad con ONNX Runtime. Este entorno de ejecución está optimizado para ejecutarse en CPU. Mejora considerablemente la velocidad de inferencia y hace viables las implementaciones en CPU en tiempo real.

Opciones de implementación compatibles#

Aunque los modelos ONNX se utilizan habitualmente en CPU, también se pueden implementar en las siguientes plataformas:

  • Aceleración de GPU: ONNX es totalmente compatible con la aceleración de GPU, especialmente con NVIDIA CUDA. Para el entrenamiento y la inferencia nativos en GPU AMD, utiliza PyTorch ROCm; un archivo ONNX sigue necesitando un entorno de ejecución compatible con AMD.

  • Dispositivos periféricos y móviles: ONNX también se utiliza en dispositivos periféricos y móviles, ideales para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con hardware periférico, y sirve de base para formatos NPU de proveedores, como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon y RKNN para NPU Rockchip.

  • Navegadores web: ONNX puede ejecutarse directamente en navegadores web y hacer posibles 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.

TareaYOLOv8YOLO11YOLO26
Detección
Segmentación
Semántica
Profundidad
Clasificación
Pose
OBB

Exportación de modelos YOLO26 a ONNX#

Puedes ampliar la compatibilidad y la flexibilidad de implementación de los modelos YOLO26 convirtiéndolos al formato ONNX. Ultralytics YOLO26 proporciona un proceso de exportación sencillo que puede mejorar significativamente el rendimiento de tu modelo en distintas plataformas.

Instalación#

Para instalar el paquete necesario, ejecuta:

Instalación
# Install the required package for YOLO26
pip install ultralytics

Para consultar instrucciones detalladas y buenas prácticas relacionadas con el proceso de instalación, revisa nuestra guía de instalación de YOLO26. Si encuentras dificultades al instalar los paquetes necesarios para YOLO26, consulta nuestra guía de problemas comunes para obtener soluciones y consejos.

Uso#

Antes de consultar las instrucciones de uso, no olvides revisar la variedad de modelos YOLO26 que ofrece 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 Export, Predict y Validate. Exporta tu modelo y, después, carga el modelo exportado para ejecutar la inferencia o validar su precisión.

Exportar
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'
Predecir
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validar
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 mediante varios argumentos para optimizarlo según tus necesidades específicas de implementación:

ArgumentoTipoPredeterminadoDescripción
formatstr'onnx'Formato de destino del modelo exportado, que define la compatibilidad con diversos entornos de despliegue.
imgszint o tuple640Tamañ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.
quantizeint o strNonePrecisió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/no definido es FP32. Un punto de control entrenado con quantize=8 siempre exporta INT8 como nodos Q/DQ a partir de los rangos que contiene, sin calibración y bajo el nombre simple .onnx. Reemplaza las banderas obsoletas half/int8.
datastrNoneDataset YAML usado para la calibración INT8; la clasificación en su lugar toma un directorio de dataset o un nombre de dataset integrado. Si se omite con quantize=8, Ultralytics selecciona el dataset de calibración predeterminado para la tarea del modelo; un punto de control entrenado con quantize=8 no necesita ninguno.
fractionfloat, int o list1.0Subconjunto de calibración como proporción, número de imágenes o proporciones/números de [train, val, test]. Las listas de dos elementos dejan test completo, mientras que 0 lo omite.
dynamicboolFalsePermite tamaños de entrada dinámicos, lo que aporta mayor flexibilidad al gestionar dimensiones de imagen variables.
simplifyboolTrueSimplifica el grafo del modelo con onnxslim, lo que puede mejorar el rendimiento y la compatibilidad.
opsetintNoneEspecifica la versión de opset de ONNX para garantizar la compatibilidad con distintos analizadores y entornos de ejecución de ONNX. Si no se establece, utiliza la última versión compatible.
nmsbool, opcionalNoneSelecciona la salida en bruto (None, predeterminada), la NMS integrada (True) o la cabeza sin NMS (False).
batchint1Especifica 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.
devicestrNoneEspecifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu) o MPS para Apple silicon (device=mps).

Para obtener más información sobre el proceso de exportación, visita la página de la documentación de Ultralytics sobre exportación.

Implementación de modelos YOLO26 ONNX exportados#

Una vez que hayas exportado correctamente tus modelos Ultralytics YOLO26 al formato ONNX, el siguiente paso es implementarlos en distintos entornos. Para obtener instrucciones detalladas sobre cómo implementar tus modelos ONNX, consulta los siguientes recursos:

Resumen#

En esta guía has aprendido a exportar modelos Ultralytics YOLO26 al formato ONNX para aumentar su interoperabilidad y rendimiento en distintas plataformas. También has conocido 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 compatibles con Ultralytics YOLO26, lo que te permite implementar tus modelos prácticamente en cualquier entorno. Según tus necesidades específicas, también puedes 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, consulta la documentación oficial de ONNX.

Además, si quieres obtener más información sobre otras integraciones de Ultralytics YOLO26, visita nuestra página de la guía de integraciones. Allí encontrarás muchos recursos y conocimientos útiles.

Preguntas frecuentes#

  • Para exportar tus modelos YOLO26 al formato ONNX con Ultralytics, sigue estos pasos:

    Uso
    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 información, visita la documentación de exportación.

  • Utilizar ONNX Runtime para implementar modelos YOLO26 ofrece varias ventajas:

    • Compatibilidad multiplataforma: ONNX Runtime es compatible con diversas plataformas, como Windows, macOS y Linux, lo que garantiza que tus modelos se ejecuten sin problemas en distintos entornos.
    • Aceleración de hardware: ONNX Runtime puede aprovechar optimizaciones específicas del hardware para CPU, GPU 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 mediante ONNX Runtime.
    • Optimización del rendimiento: ONNX Runtime puede proporcionar hasta 3 veces más velocidad en CPU que los modelos PyTorch nativos, lo que lo hace ideal para escenarios de implementación en los que los recursos de GPU son limitados.

    Obtén más información consultando 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 una inferencia optimizada en CPU.
    • GPU: Aprovecha NVIDIA CUDA para obtener una aceleración de GPU de alto rendimiento.
    • Dispositivos periféricos: Ejecuta modelos ligeros en dispositivos periféricos y móviles para realizar inferencia en el dispositivo y en tiempo real.
    • Navegadores web: Ejecuta los modelos directamente en navegadores web para utilizar aplicaciones web interactivas.
    • Servicios en la nube: Implementa los modelos en plataformas en la nube compatibles con el formato ONNX para realizar inferencias escalables.

    Para obtener más información, consulta nuestra guía sobre opciones de implementación de modelos.

  • Utilizar el formato ONNX para los modelos Ultralytics YOLO26 ofrece numerosas ventajas:

    • Interoperabilidad: ONNX permite transferir modelos entre distintos frameworks de aprendizaje automático sin problemas.
    • Optimización del rendimiento: ONNX Runtime puede mejorar el rendimiento de los modelos utilizando optimizaciones específicas del hardware.
    • Flexibilidad: ONNX es compatible con diversos entornos de implementación, lo que te permite utilizar el mismo modelo en distintas plataformas sin modificarlo.
    • Estandarización: ONNX proporciona un formato estandarizado ampliamente compatible 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 compatibles. Para solucionar estos problemas:

    1. Comprueba que tienes instalada la versión correcta de las dependencias necesarias.
    2. Consulta la documentación oficial de ONNX para conocer los operadores y las características compatibles.
    3. Revisa los mensajes de error para encontrar pistas y consulta la guía de problemas habituales de Ultralytics.
    4. Prueba a utilizar distintos argumentos de exportación, como simplify=True, o ajusta la versión de opset.
    5. Si tienes problemas con el tamaño de entrada dinámico, establece dynamic=True durante la exportación.

    Si los problemas persisten, contacta con el equipo de soporte de Ultralytics para obtener más ayuda.

Comentarios