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.
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.
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.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| 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:
# Install the required package for YOLO26
pip install ultralyticsPara 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.
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 mediante varios argumentos para optimizarlo según tus necesidades específicas de implementación:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'onnx' | Formato de destino del modelo exportado, que define 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 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/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. |
data | str | None | Dataset 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. |
fraction | float, int o list | 1.0 | Subconjunto 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. |
dynamic | bool | False | Permite tamaños de entrada dinámicos, lo que aporta mayor flexibilidad al gestionar dimensiones de imagen variables. |
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 de ONNX. Si no se establece, utiliza la última versión compatible. |
nms | bool, opcional | None | Selecciona la salida en bruto (None, predeterminada), la NMS integrada (True) o la cabeza 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. |