ONNX (Open Neural Network Exchange)
Explora el formato Open Neural Network Exchange (ONNX). Aprende a exportar Ultralytics YOLO26 a ONNX para lograr un despliegue multiplataforma rápido y optimizar el hardware.
ONNX (Intercambio de redes neuronales abiertas) es un formato de código abierto diseñado para representar modelos de aprendizaje automático, lo que permite la interoperabilidad entre distintos marcos y herramientas de IA. Actúa como un traductor universal para el aprendizaje profundo, permitiendo a los desarrolladores crear modelos en un marco —como PyTorch, TensorFlow o Scikit-learn— y desplegarlos sin problemas en otro entorno optimizado para la inferencia. Al definir un conjunto común de operadores y un formato de archivo estándar, ONNX elimina la necesidad de usar scripts de conversión complejos y personalizados, que históricamente eran necesarios para trasladar modelos de la investigación a producción. Esta flexibilidad es crucial para los flujos de trabajo modernos de IA, en los que el entrenamiento puede realizarse en potentes GPU en la nube, mientras que el despliegue se dirige a hardware diverso, como dispositivos periféricos, teléfonos móviles o navegadores web.
El papel de ONNX en la IA moderna#
En el panorama de la inteligencia artificial, que evoluciona rápidamente, los investigadores y los ingenieros suelen utilizar herramientas diferentes para cada fase del ciclo de vida del desarrollo. Un científico de datos puede preferir la flexibilidad de PyTorch para la experimentación y el entrenamiento, mientras que un ingeniero de producción necesita el rendimiento optimizado de TensorRT u OpenVINO para el despliegue. Sin un formato de intercambio estándar, trasladar un modelo entre estos ecosistemas resulta difícil y propenso a errores.
ONNX cierra esta brecha al proporcionar una definición compartida del grafo de computación. Cuando un modelo se exporta a ONNX, se serializa en un formato que captura la estructura de la red (capas, conexiones) y los parámetros (pesos, sesgos) de una forma independiente del marco. Esto permite que los motores de inferencia ajustados específicamente para la aceleración por hardware —como ONNX Runtime— ejecuten el modelo de forma eficiente en múltiples plataformas, incluidos Linux, Windows, macOS, Android e iOS.
Principales ventajas de usar ONNX#
Adoptar el formato Open Neural Network Exchange ofrece varias ventajas estratégicas para los proyectos de IA:
- Interoperabilidad entre marcos: los desarrolladores pueden cambiar de marco sin quedar atados a un único ecosistema. Puedes entrenar un modelo usando la sencilla API de Python de Ultralytics y exportarlo para utilizarlo en una aplicación de C++ o en un entorno de JavaScript basado en la web.
- Optimización del hardware: muchos fabricantes de hardware proporcionan proveedores de ejecución especializados que interactúan con ONNX. Esto significa que un único archivo
.onnxpuede acelerarse en GPU NVIDIA, CPU Intel o NPU móviles (unidades de procesamiento neuronal) mediante herramientas como OpenVINO o CoreML. - Inferencia más rápida: ONNX Runtime aplica optimizaciones del grafo —como la fusión de nodos y la reducción de constantes— que pueden reducir significativamente la latencia de inferencia. Esto es esencial para aplicaciones en tiempo real, como los vehículos autónomos o las líneas de fabricación de alta velocidad.
- Despliegue simplificado: en lugar de mantener canalizaciones de despliegue independientes para cada marco de entrenamiento, los equipos de ingeniería pueden estandarizar ONNX como formato de entrega y agilizar los procesos de ModelOps.
Aplicaciones en el mundo real#
La versatilidad de ONNX lo convierte en un elemento fundamental en diversos sectores. Estos son dos ejemplos concretos de su aplicación:
1. IA periférica en dispositivos móviles#
Considera una aplicación móvil diseñada para la supervisión en tiempo real del estado de los cultivos. El modelo podría entrenarse en un potente servidor en la nube utilizando un gran conjunto de datos de imágenes de plantas. Sin embargo, la aplicación debe funcionar sin conexión en el teléfono inteligente de un agricultor. Al exportar el modelo entrenado a ONNX, los desarrolladores pueden integrarlo en la aplicación móvil mediante ONNX Runtime Mobile. Esto permite que el procesador del teléfono ejecute la detección de objetos localmente e identifique plagas o enfermedades al instante sin necesidad de conexión a Internet.
2. Inferencia web multiplataforma#
En el comercio electrónico, una función de «prueba virtual» puede utilizar la estimación de la pose para superponer prendas sobre la imagen de la cámara web del usuario. El entrenamiento de este modelo puede realizarse en Python, pero el destino del despliegue es un navegador web. Con ONNX, el modelo puede convertirse y ejecutarse directamente en el navegador del usuario mediante ONNX Runtime Web. Esto aprovecha las capacidades del dispositivo del cliente (WebGL o WebAssembly) para realizar tareas de visión artificial, garantizando una experiencia fluida y respetuosa con la privacidad, ya que los datos de vídeo nunca salen del ordenador del usuario.
Comparación con términos relacionados#
Es útil distinguir ONNX de otros formatos y herramientas para modelos:
- vs. TensorRT: mientras que ONNX es un formato de intercambio, TensorRT es un motor de inferencia y optimizador diseñado específicamente para GPU NVIDIA. Un flujo de trabajo habitual consiste en exportar primero un modelo a ONNX y, a continuación, analizar ese archivo ONNX en TensorRT para lograr el máximo rendimiento en hardware NVIDIA.
- vs. TensorFlow SavedModel: SavedModel es el formato de serialización nativo de TensorFlow. Aunque es sólido dentro del ecosistema de Google, es menos compatible universalmente que ONNX. A menudo existen herramientas para convertir SavedModel a ONNX y obtener así una compatibilidad más amplia con distintas plataformas.
- vs. CoreML: CoreML es el marco de Apple para el aprendizaje automático en el dispositivo. Aunque son distintos, los modelos se convierten con frecuencia de PyTorch a ONNX y, después, de ONNX a CoreML (o directamente) para ejecutarse de forma eficiente en iPhones y iPads.
Exportación a ONNX con Ultralytics#
El ecosistema de Ultralytics simplifica el proceso de convertir modelos de última generación, como YOLO26, al formato ONNX. La funcionalidad de exportación está integrada directamente en la biblioteca y gestiona automáticamente el recorrido complejo del grafo y la correspondencia de operadores.
El siguiente ejemplo muestra cómo exportar un modelo Ultralytics YOLO26 preentrenado al formato ONNX para su despliegue:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Una vez exportado, este archivo .onnx puede utilizarse en la Ultralytics Platform para su gestión o desplegarse directamente en dispositivos periféricos mediante ONNX Runtime, haciendo accesible la visión artificial de alto rendimiento en prácticamente cualquier entorno.









