ONNX (Open Neural Network Exchange)
Explora el formato Open Neural Network Exchange (ONNX). Aprende cómo exportar Ultralytics YOLO26 a ONNX para una implementación multiplataforma rápida y optimización de hardware.
ONNX (Open Neural Network Exchange) es un formato de código abierto diseñado para representar modelos de aprendizaje automático, lo que permite la interoperabilidad entre diversos 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) e implementarlos 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 complejos scripts de conversión personalizados que históricamente se requerían para trasladar modelos de la investigación a la producción. Esta flexibilidad es crucial para los flujos de trabajo de IA modernos, donde el entrenamiento puede realizarse en potentes GPU en la nube, mientras que la implementación se dirige a hardware diverso como dispositivos de borde, teléfonos móviles o navegadores web.
Link to this sectionEl papel de ONNX en la IA moderna#
En el panorama en rápida evolución de la inteligencia artificial, los investigadores y los ingenieros suelen utilizar diferentes herramientas para las distintas etapas del ciclo de vida del desarrollo. Un científico de datos podría 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 la implementación. Sin un formato de intercambio estándar, trasladar un modelo entre estos ecosistemas resulta difícil y propenso a errores.
ONNX cierra esta brecha proporcionando 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 red (capas, conexiones) y los parámetros (pesos, sesgos) de una manera agnóstica al marco. Esto permite que los motores de inferencia específicamente ajustados para la aceleración de hardware, como el ONNX Runtime, ejecuten el modelo de manera eficiente a través de múltiples plataformas, incluyendo Linux, Windows, macOS, Android e iOS.
Link to this sectionBeneficios clave de usar ONNX#
La adopción del formato Open Neural Network Exchange ofrece varias ventajas estratégicas para los proyectos de IA:
- Interoperabilidad entre marcos: Los desarrolladores pueden cambiar entre marcos sin quedar bloqueados en un único ecosistema. Puedes entrenar un modelo usando la intuitiva API de Python de Ultralytics y exportarlo para usarlo 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 se conectan con ONNX. Esto significa que un solo archivo
.onnxpuede acelerarse en GPU de NVIDIA, CPU de Intel o NPU (Unidades de Procesamiento Neuronal) móviles utilizando herramientas como OpenVINO o CoreML. - Inferencia más rápida: El ONNX Runtime aplica optimizaciones de grafo, como la fusión de nodos y el plegado de constantes, que pueden reducir significativamente la latencia de inferencia. Esto es esencial para aplicaciones en tiempo real como vehículos autónomos o líneas de fabricación de alta velocidad.
- Implementación simplificada: En lugar de mantener tuberías de implementación separadas para cada marco de entrenamiento, los equipos de ingeniería pueden estandarizarse en ONNX como formato de entrega, simplificando los procesos de ModelOps.
Link to this sectionAplicaciones en el mundo real#
La versatilidad de ONNX lo convierte en un elemento básico en diversas industrias. Aquí tienes dos ejemplos concretos de su aplicación:
Link to this sectionIA de borde en dispositivos móviles#
Considera una aplicación móvil diseñada para el monitoreo de la salud de los cultivos en tiempo real. 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 necesita ejecutarse 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 usando ONNX Runtime Mobile. Esto permite que el procesador del teléfono ejecute la detección de objetos localmente, identificando plagas o enfermedades al instante sin necesidad de conexión a internet.
Link to this sectionInferencia web multiplataforma#
En el comercio electrónico, una función de "probador virtual" podría usar la estimación de pose para superponer ropa en la transmisión de la cámara web del usuario. El entrenamiento de este modelo podría realizarse en Python, pero el objetivo de implementación es un navegador web. Usando ONNX, el modelo puede convertirse y ejecutarse directamente en el navegador del usuario a través de ONNX Runtime Web. Esto utiliza las capacidades del dispositivo del cliente (WebGL o WebAssembly) para realizar tareas de visión artificial, asegurando una experiencia fluida y que preserva la privacidad, ya que los datos de video nunca salen de la computadora del usuario.
Link to this sectionComparación con términos relacionados#
Es útil distinguir ONNX de otros formatos y herramientas de modelos:
- vs. TensorRT: Mientras que ONNX es un formato de intercambio, TensorRT es un motor de inferencia y optimizador específicamente para GPU de NVIDIA. Un flujo de trabajo común implica exportar primero un modelo a ONNX y, luego, analizar ese archivo ONNX en TensorRT para lograr el máximo rendimiento en hardware de NVIDIA.
- vs. TensorFlow SavedModel: SavedModel es el formato de serialización nativo para TensorFlow. Aunque es robusto dentro del ecosistema de Google, es menos compatible universalmente que ONNX. A menudo existen herramientas para convertir SavedModels en ONNX para obtener un soporte de plataforma más amplio.
- vs. CoreML: CoreML es el marco de Apple para el aprendizaje automático en el dispositivo. Aunque son distintos, los modelos se convierten frecuentemente de PyTorch a ONNX, y luego de ONNX a CoreML (o directamente) para ejecutarse de manera eficiente en iPhone y iPad.
Link to this sectionExportar a ONNX con Ultralytics#
El ecosistema de Ultralytics simplifica el proceso de conversión de modelos de última generación como YOLO26 al formato ONNX. La funcionalidad de exportación está integrada directamente en la biblioteca, manejando automáticamente el complejo recorrido del grafo y la asignación de operadores.
El siguiente ejemplo demuestra cómo exportar un modelo YOLO26 preentrenado al formato ONNX para su implementación:
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 Plataforma Ultralytics para su gestión o implementarse directamente en dispositivos de borde usando el ONNX Runtime, haciendo que la visión artificial de alto rendimiento sea accesible en prácticamente cualquier entorno.






