Ir al contenido

Exportación ONNX para modelos YOLO11

A menudo, al implementar modelos de visión artificial, necesitará un formato de modelo que sea flexible y compatible con múltiples plataformas.

Exportar modelos Ultralytics YOLO11 al formato ONNX agiliza la implementación y garantiza un rendimiento óptimo en diversos entornos. Esta guía le mostrará cómo convertir fácilmente sus modelos YOLO11 a ONNX y mejorar su escalabilidad y eficacia en aplicaciones del mundo real.

ONNX y ONNX Runtime

ONNX, que significa Open Neural Network Exchange (Intercambio Abierto de Redes Neuronales), es un proyecto comunitario que Facebook y Microsoft desarrollaron inicialmente. El desarrollo continuo de ONNX es un esfuerzo colaborativo apoyado 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 diferentes marcos de IA y hardware.

Los modelos ONNX se pueden utilizar para realizar transiciones entre diferentes marcos sin problemas. Por ejemplo, un modelo de aprendizaje profundo entrenado en PyTorch se puede exportar a formato ONNX y luego importarse fácilmente a TensorFlow.

ONNX

Alternativamente, los modelos ONNX se pueden utilizar con ONNX Runtime. ONNX Runtime es un acelerador multiplataforma versátil para modelos de aprendizaje automático que es compatible con marcos como PyTorch, TensorFlow, TFLite, scikit-learn, etc.

ONNX Runtime optimiza la ejecución de modelos ONNX aprovechando las capacidades específicas del hardware. Esta optimización permite que los modelos se ejecuten de manera eficiente y con alto rendimiento en varias plataformas de hardware, incluyendo CPUs, GPUs y aceleradores especializados.

ONNX con ONNX Runtime

Ya sea que se utilice de forma independiente o en conjunto con ONNX Runtime, ONNX proporciona una solución flexible para la implementación de modelos de aprendizaje automático y la compatibilidad.

Características principales de los modelos ONNX

La capacidad de ONNX para manejar varios formatos se puede atribuir a las siguientes características clave:

  • Representación común del modelo: ONNX define un conjunto común de operadores (como convoluciones, capas, etc.) y un formato de datos estándar. Cuando un modelo se convierte al formato ONNX, su arquitectura y pesos se traducen a esta representación común. Esta uniformidad garantiza que el modelo pueda ser entendido por cualquier marco que soporte ONNX.

  • Control de versiones y compatibilidad con versiones anteriores: ONNX mantiene un sistema de control de versiones para sus operadores. Esto asegura que, incluso a medida que el estándar evoluciona, los modelos creados en versiones anteriores sigan siendo utilizables. La compatibilidad con versiones anteriores es una característica crucial que evita que los modelos queden obsoletos rápidamente.

  • Representación del modelo 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 los bordes representan los tensores que fluyen entre ellos. Este formato es fácilmente adaptable a varios marcos que también representan los modelos como grafos.

  • Herramientas y ecosistema: Existe un rico ecosistema de herramientas alrededor de ONNX que ayudan en la conversión, visualización y optimización de modelos. Estas herramientas facilitan a los desarrolladores el trabajo con modelos ONNX y la conversión de modelos entre diferentes marcos sin problemas.

Uso común de ONNX

Antes de entrar en cómo exportar modelos YOLO11 al formato ONNX, echemos un vistazo a dónde se utilizan normalmente los modelos ONNX.

Implementación en CPU

Los modelos ONNX a menudo se implementan en CPUs debido a su compatibilidad con ONNX Runtime. Este runtime está optimizado para la ejecución en CPU. Mejora significativamente la velocidad de inferencia y hace que las implementaciones en CPU en tiempo real sean factibles.

Opciones de implementación admitidas

Aunque los modelos ONNX se utilizan comúnmente en las CPU, también se pueden implementar en las siguientes plataformas:

  • Aceleración por GPU: ONNX es totalmente compatible con la aceleración por GPU, especialmente NVIDIA CUDA. Esto permite una ejecución eficiente en las GPU de NVIDIA para tareas que exigen una gran potencia computacional.

  • Dispositivos Edge y móviles: ONNX se extiende a dispositivos edge y móviles, perfecto para escenarios de inferencia en el dispositivo y en tiempo real. Es ligero y compatible con hardware edge.

  • Navegadores web: ONNX puede ejecutarse directamente en navegadores web, impulsando aplicaciones de IA interactivas y dinámicas basadas en la web.

Exportación de modelos YOLO11 a ONNX

Puede ampliar la compatibilidad del modelo y la flexibilidad de implementación convirtiendo los modelos YOLO11 al formato ONNX. Ultralytics YOLO11 proporciona un proceso de exportación sencillo que puede mejorar significativamente el rendimiento de su modelo en diferentes plataformas.

Instalación

Para instalar el paquete requerido, ejecute:

Instalación

# Install the required package for YOLO11
pip install ultralytics

Para obtener instrucciones detalladas y las mejores prácticas relacionadas con el proceso de instalación, consulte nuestra guía de instalación de YOLO11. Si tiene alguna dificultad al instalar los paquetes necesarios para YOLO11, consulte nuestra guía de problemas comunes para obtener soluciones y consejos.

Uso

Antes de sumergirse en las instrucciones de uso, asegúrese de consultar la gama de modelos YOLO11 ofrecidos por Ultralytics. Esto le ayudará a elegir el modelo más apropiado para los requisitos de su proyecto.

Uso

from ultralytics import YOLO

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

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

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Argumentos de exportación

Al exportar su modelo YOLO11 al formato ONNX, puede personalizar el proceso utilizando varios argumentos para optimizarlo para sus necesidades de implementación específicas:

Argumento Tipo Predeterminado Descripción
format str 'onnx' Formato de destino para el modelo exportado, que define la compatibilidad con varios entornos de implementación.
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.
half bool False Activa la cuantización FP16 (media precisión), reduciendo el tamaño del modelo y, potencialmente, acelerando la inferencia en hardware compatible.
dynamic bool False Permite tamaños de entrada dinámicos, lo que mejora la flexibilidad en el manejo de diferentes dimensiones de imagen.
simplify bool True Simplifica el grafo del modelo con onnxslim, lo que podría mejorar el rendimiento y la compatibilidad.
opset int None Especifica la versión de ONNX opset para la compatibilidad con diferentes analizadores y tiempos de ejecución de ONNX. Si no se establece, utiliza la última versión compatible.
nms bool False Añade la supresión no máxima (NMS), esencial para un post-procesamiento de detección preciso y eficiente.
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 predict modo.
device str None Especifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps).

Para obtener más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre la exportación.

Implementación de modelos ONNX YOLO11 exportados

Una vez que haya exportado correctamente sus modelos Ultralytics YOLO11 al formato ONNX, el siguiente paso es implementar estos modelos en varios entornos. Para obtener instrucciones detalladas sobre la implementación de sus modelos ONNX, consulte los siguientes recursos:

Resumen

En esta guía, ha aprendido a exportar modelos Ultralytics YOLO11 al formato ONNX para aumentar su interoperabilidad y rendimiento en varias plataformas. También se le presentaron ONNX Runtime y las opciones de implementación de ONNX.

La exportación ONNX es solo uno de los muchos formatos de exportación compatibles con Ultralytics YOLO11, lo que te permite implementar tus modelos en prácticamente cualquier entorno. Dependiendo de tus necesidades específicas, es posible que también desees explorar otras opciones de exportación como TensorRT para obtener el máximo rendimiento de la GPU o CoreML para dispositivos Apple.

Para obtener más detalles sobre el uso, visite la documentación oficial de ONNX.

Además, si deseas obtener más información sobre otras integraciones de Ultralytics YOLO11, visita nuestra página de la guía de integración. Allí encontrarás muchos recursos e información útiles.

Preguntas frecuentes

¿Cómo exporto modelos YOLO11 al formato ONNX usando Ultralytics?

Para exportar sus modelos YOLO11 al formato ONNX utilizando Ultralytics, siga estos pasos:

Uso

from ultralytics import YOLO

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

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

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Para obtener más detalles, visite la documentación de exportación.

¿Cuáles son las ventajas de usar ONNX Runtime para implementar modelos YOLO11?

El uso de ONNX Runtime para implementar modelos YOLO11 ofrece varias ventajas:

  • Compatibilidad multiplataforma: ONNX Runtime es compatible con varias plataformas, como Windows, macOS y Linux, lo que garantiza que sus modelos se ejecuten sin problemas en diferentes entornos.
  • Aceleración de hardware: ONNX Runtime puede aprovechar las optimizaciones específicas del hardware para CPU, GPU y aceleradores dedicados, lo que proporciona una inferencia de alto rendimiento.
  • Interoperabilidad del framework: Los modelos entrenados en frameworks populares como PyTorch o TensorFlow se pueden convertir fácilmente al formato ONNX y ejecutarse utilizando ONNX Runtime.
  • Optimización del rendimiento: ONNX Runtime puede proporcionar hasta 3 veces más velocidad en la CPU en comparación con los modelos nativos de PyTorch, lo que lo hace ideal para escenarios de implementación donde los recursos de la GPU son limitados.

Obtenga más información consultando la documentación de ONNX Runtime.

¿Qué opciones de implementación están disponibles para los modelos YOLO11 exportados a ONNX?

Los modelos YOLO11 exportados a ONNX se pueden implementar en varias plataformas, incluyendo:

  • CPUs: Utilización de ONNX Runtime para la inferencia de CPU optimizada.
  • GPUs: Aprovechamiento de NVIDIA CUDA para la aceleración de GPU de alto rendimiento.
  • Dispositivos Edge: Ejecución de modelos ligeros en dispositivos edge y móviles para la inferencia en tiempo real y en el dispositivo.
  • Navegadores web: Ejecución de modelos directamente dentro de los navegadores web para aplicaciones interactivas basadas en la web.
  • Servicios en la nube: Implementación en plataformas en la nube que admiten el formato ONNX para la inferencia escalable.

Para obtener más información, explore nuestra guía sobre opciones de implementación de modelos.

¿Por qué debería usar el formato ONNX para los modelos YOLO11 de Ultralytics?

El uso del formato ONNX para los modelos Ultralytics YOLO11 ofrece numerosas ventajas:

  • Interoperabilidad: ONNX permite que los modelos se transfieran entre diferentes frameworks de aprendizaje automático sin problemas.
  • Optimización del rendimiento: ONNX Runtime puede mejorar el rendimiento del modelo utilizando optimizaciones específicas del hardware.
  • Flexibilidad: ONNX admite varios entornos de implementación, lo que le permite utilizar el mismo modelo en diferentes plataformas sin modificaciones.
  • Estandarización: ONNX proporciona un formato estandarizado que es ampliamente compatible en toda la industria, lo que garantiza la compatibilidad a largo plazo.

Consulte la guía completa sobre cómo exportar modelos YOLO11 a ONNX.

¿Cómo puedo solucionar problemas al exportar modelos YOLO11 a ONNX?

Al exportar modelos YOLO11 a ONNX, es posible que encuentre problemas comunes, como dependencias no coincidentes u operaciones no admitidas. Para solucionar estos problemas:

  1. Verifique que tenga instalada la versión correcta de las dependencias necesarias.
  2. Consulte la documentación oficial de ONNX para conocer los operadores y las características admitidas.
  3. Revise los mensajes de error para obtener pistas y consulte la guía de problemas comunes de Ultralytics.
  4. Pruebe a utilizar diferentes argumentos de exportación como simplify=True o ajustando el opset versión.
  5. Para problemas de tamaño de entrada dinámico, configure dynamic=True durante la exportación.

Si los problemas persisten, póngase en contacto con el soporte técnico de Ultralytics para obtener más ayuda.



📅 Creado hace 1 año ✏️ Actualizado hace 3 meses

Comentarios