Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

ONNX (Intercambio abierto de redes neuronales)

Descubra cómo ONNX mejora la portabilidad y la interoperabilidad de los modelos de IA, lo que permite un despliegue perfecto de los modelosYOLO Ultralytics en diversas plataformas.

Open Neural Network ExchangeONNX) es un estándar de código abierto diseñado para representar modelos de aprendizaje automático (ML) de forma que manera que garantice la portabilidad entre distintos marcos y hardware. Desarrollado originalmente por empresas como Microsoft y Facebook, ONNX sirve de "traductor universal" para la IA. Permite a los desarrolladores entrenar un modelo en un ecosistema, como PyTorchy desplegarlo sin problemas en otro, como TensorFlow o un motor de especializado. Esta interoperabilidad elimina la necesidad de reconstruir o volver a entrenar redes cuando se pasa de entornos de investigación a aplicaciones de producción, agilizando significativamente de despliegue de modelos.

Cómo funciona ONNX

En esencia, ONNX define un conjunto común de operadores -los componentes básicos del del aprendizaje profundo (DL) y los modelos de aprendizaje un formato de archivo estándar. Cuando un modelo se convierte a ONNX, su estructura computacional se asigna a un grafo computacional estático. estático. En este gráfico, los nodos representan operaciones matemáticas matemáticas (como convoluciones o funciones de activación), y las aristas representan el flujo de tensores de datos entre ellos.

Dado que esta representación gráfica está estandarizada, los fabricantes de hardware pueden construir proveedores de ejecución optimizados para ONNX. Esto significa que un único .onnx puede acelerarse en hardware diverso, incluido un CPU, GPU (unidad de procesamiento gráfico)o especializado TPU Tensor Unidad de procesamiento deTensor )a menudo utilizando el Tiempo de ejecución de ONNX.

Exportación de modelos a ONNX

Para los usuarios del ultralytics convertir un modelo entrenado al formato ONNX es un proceso sencillo. sencillo. La biblioteca gestiona automáticamente la compleja asignación de capas al estándar ONNX . El siguiente fragmento de código muestra cómo exportar un modelo YOLO11 modelo, preparándolo para un despliegue más amplio.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

Aplicaciones en el mundo real

La flexibilidad de ONNX lo convierte en un componente esencial de la infraestructura moderna de IA, en particular para tareas de visión computerizada (CV).

  1. Despliegue móvil multiplataforma: Un desarrollador puede entrenar un un modelo de detección de objetos con PyTorch en una potente estación de trabajo. Sin embargo, la aplicación final debe ejecutarse en dispositivos iOS y Android . Al exportar el modelo modelo a ONNX, el desarrollador puede integrar el mismo archivo de modelo en aplicaciones móviles utilizando el ONNX Runtime for Mobile, asegurando un comportamiento consistente a través de diferentes sistemas operativos sin mantener bases de código separadas.
  2. Integración con sistemas heredados: Muchas aplicaciones industriales se construyen utilizando lenguajes como C++ o C# por su rendimiento y estabilidad. Aunque Python es el estándar para la formación, la integración de un modelo Python en un entorno de producción Python C++ puede ser lenta y propensa a errores. C++ puede ser lenta y propensa a errores. ONNX salva esta distancia. Una planta de fabricación que utiliza visión por ordenador en robótica puede entrenar un modelo en Python, exportarlo a ONNX y, a continuación, cargarlo directamente en su software de control C++ para inferencia de alta velocidad en tiempo real en tiempo real.

ONNX frente a conceptos relacionados

Comprender cómo interactúa ONNX con otras herramientas ayuda a seleccionar la estrategia de implantación adecuada.

  • ONNX vs. TensorRT: Mientras que ONNX es un formato de archivo para representar modelos, TensorRT es un SDK de optimización de alto rendimiento desarrollado por NVIDIA específicamente para las GPU NVIDIA . Los dos suelen trabajar juntos; los desarrolladores exportan modelos a ONNX y ONNX y, a continuación, utilizan TensorRT para ingerir el archivo ONNX y optimización de modelos técnicas agresivas de optimización de modelos como la fusión y calibración de capas para obtener la máxima velocidad en el hardware NVIDIA .
  • ONNX frente a formatos marco (por ejemplo, .pt, .h5): Formatos nativos como el de PyTorch .pt o de Keras .h5 son excelentes para entrenar y ahorrar pesos del modelo dentro de sus ecosistemas específicos. Sin embargo, a menudo requieren la instalación del marco original para ejecutar el modelo. ONNX desacopla el modelo de del marco de formación, lo que facilita IA de borde cuando la instalación de una biblioteca de es poco práctica debido a limitaciones de almacenamiento o memoria.
  • ONNX vs. Cuantización: ONNX es un formato, mientras que cuantificación del modelo es una técnica para reducir tamaño del modelo y aumentar la velocidad reduciendo la precisión (por ejemplo, de float32 a int8). El estándar ONNX admite operadores cuantizados, lo que permite a los desarrolladores almacenar y ejecutar modelos cuantizados de forma eficiente.

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora