Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

ONNX (Open Neural Network Exchange)

ONNX es un formato abierto que almacena un modelo entrenado como un grafo de operadores estándar, de modo que un modelo entrenado en PyTorch puede ejecutarse en muchos entornos de ejecución.

ONNX (Open Neural Network Exchange) es un formato de archivo estándar abierto para modelos de aprendizaje automático. Un archivo .onnx almacena un modelo entrenado como un grafo de cálculo compuesto por operadores estándar junto con sus pesos, de modo que un modelo entrenado con un marco de trabajo, como PyTorch, pueda ejecutarse en otros entornos de ejecución y en muchos tipos de hardware. Facebook y Microsoft lanzaron ONNX en septiembre de 2017, y desde noviembre de 2019 es un proyecto graduado de LF AI & Data, la fundación de IA de Linux Foundation. ONNX suele ser el punto de transferencia entre el entrenamiento y el despliegue del modelo: un único archivo exportado puede alimentar ONNX Runtime, TensorRT, OpenVINO y los compiladores de muchos aceleradores de IA en el borde.

Qué contiene un archivo ONNX#

Un modelo ONNX se serializa con Protocol Buffers y contiene cuatro partes:

  • Grafo: Nodos que llaman a operadores como Conv, MatMul y Relu, conectados mediante tensores con nombre. Las entradas y salidas del grafo contienen tipos de datos y formas; cada dimensión puede ser fija o simbólica, como el tamaño variable del lote.
  • Inicializadores: Los pesos entrenados. Protocol Buffers limita los archivos individuales a 2 GB, por lo que los modelos más grandes almacenan sus pesos en archivos de datos externos junto al archivo .onnx.
  • Versión de opset: Los operadores se versionan en opsets, y el entorno de ejecución debe ser compatible con el opset con el que se exportó el modelo. Los opsets nuevos añaden operadores sin modificar los anteriores, como el operador Attention, añadido en el opset 23.
  • Metadatos: El nombre del productor, la versión del modelo y pares clave-valor personalizados, como los nombres de las clases.

Un segundo dominio de operadores, ONNX-ML, abarca modelos clásicos, como los conjuntos de árboles y los clasificadores lineales. Así, convertidores como skl2onnx y onnxmltools exportan modelos de scikit-learn, LightGBM y XGBoost al mismo formato. Visores como Netron muestran el grafo nodo por nodo. En la práctica, ONNX conecta muchos marcos de entrenamiento con muchos entornos de ejecución:

Ejecución de modelos ONNX#

ONNX Runtime, el motor de inferencia de código abierto de Microsoft, ejecuta archivos ONNX en servidores, ordenadores de sobremesa, teléfonos y navegadores. Optimiza el grafo al cargar un modelo, por ejemplo, plegando constantes y fusionando una convolución con la normalización por lotes que la sigue; después, asigna cada parte del grafo a un proveedor de ejecución adecuado para el hardware disponible: CUDA o TensorRT en GPU de NVIDIA, OpenVINO en hardware Intel, DirectML en GPU de Windows, Core ML en dispositivos Apple, QNN en NPU de Qualcomm y WebGPU en navegadores. Windows ML, el marco de inferencia local de Microsoft, se ejecuta sobre ONNX Runtime; otros motores, como TensorRT y OpenVINO, importan archivos ONNX y los compilan en sus propios formatos.

Ultralytics YOLO26 se exporta a ONNX con model.export(format="onnx"), y la exportación a TensorRT de Ultralytics crea su motor a partir de ese mismo archivo ONNX. El archivo exportado se ejecuta en ONNX Runtime sin PyTorch:

import onnxruntime as ort
from ultralytics import YOLO

# Exporta YOLO26n a ONNX con dimensiones simbólicas para el lote, la altura y la anchura
model = YOLO("yolo26n.pt")
onnx_path = model.export(format="onnx", dynamic=True)

# Carga el grafo en ONNX Runtime, que no necesita ni PyTorch ni Ultralytics
session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"])
for tensor in session.get_inputs() + session.get_outputs():
    print(tensor.name, tensor.shape)

Imprime la entrada del grafo, images, con dimensiones simbólicas para el lote, la altura y la anchura, y su salida de predicción sin procesar, output0, que es la firma que cualquier entorno de ejecución ONNX utiliza para alimentar el modelo y leer sus resultados.

  • ONNX Runtime: El motor de inferencia que ejecuta archivos ONNX; es un proyecto independiente liderado por Microsoft al que a menudo se hace referencia simplemente como «ONNX».
  • TensorRT: El compilador de NVIDIA convierte un archivo ONNX en un motor optimizado para un tipo de GPU y una versión de TensorRT concretos, por lo que los equipos conservan el archivo ONNX como fuente portátil y vuelven a crear los motores para cada destino.
  • Formatos de PyTorch: Los puntos de control .pt y los archivos safetensors almacenan pesos para código que reconstruye el modelo, mientras que TorchScript y torch.export capturan grafos para los propios entornos de ejecución de PyTorch.
  • Otros formatos de despliegue: IR de OpenVINO, archivos LiteRT .tflite, paquetes de Core ML y archivos GGUF para LLM cuantizados se dirigen cada uno a entornos de ejecución específicos. coremltools convierte directamente modelos de PyTorch y dejó de admitir entradas ONNX en la versión 6.

Aplicaciones en el mundo real#

  • Aplicaciones multiplataforma: Un solo archivo ONNX sirve para servidores Linux, aplicaciones de Windows mediante Windows ML y aplicaciones de Android e iOS mediante ONNX Runtime Mobile.
  • Inferencia en el navegador: ONNX Runtime Web ejecuta modelos en el dispositivo del usuario con WebGPU o WebAssembly, por lo que los fotogramas de la cámara de funciones como la estimación de pose nunca salen del navegador.
  • Aceleradores de borde: Las cadenas de herramientas NPU de fabricantes como Hailo, Qualcomm y Rockchip aceptan modelos ONNX como entrada y los compilan, a menudo con cuantización a INT8, para sus chips.
  • Modelos clásicos en producción: Los árboles potenciados por gradiente y las canalizaciones de scikit-learn convertidos a ONNX se ejecutan en servicios C#, Java y C++ mediante ONNX Runtime, sin necesidad de un intérprete de Python en la ruta de servicio.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático