Saltar al contenido

Exportación de modelos con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

Introducción

El objetivo último de entrenar un modelo es desplegarlo para aplicaciones del mundo real. El modo Exportar de Ultralytics YOLO11 ofrece una versátil gama de opciones para exportar tu modelo entrenado a diferentes formatos, haciéndolo desplegable en diversas plataformas y dispositivos. Esta completa guía pretende guiarte a través de los matices de la exportación de modelos, mostrándote cómo conseguir la máxima compatibilidad y rendimiento.



Observa: Cómo exportar el modelo entrenado personalizado Ultralytics YOLO y ejecutar la inferencia en directo en la cámara web.

¿Por qué elegir el modo de exportación de YOLO11?

  • Versatilidad: Exporta a múltiples formatos, como ONNX, TensorRT, CoreML, y más.
  • Rendimiento: Gana hasta 5 veces la velocidad de GPU con TensorRT y 3 veces la velocidad de CPU con ONNX o OpenVINO.
  • Compatibilidad: Haz que tu modelo sea universalmente desplegable en numerosos entornos de hardware y software.
  • Facilidad de uso: API sencilla CLI y Python para exportar modelos de forma rápida y directa.

Características principales del modo Exportar

Estas son algunas de las funcionalidades más destacadas:

  • Exportación con un clic: Comandos sencillos para exportar a distintos formatos.
  • Exportación por lotes: Exporta modelos capaces de realizar inferencias por lotes.
  • Inferencia optimizada: Los modelos exportados están optimizados para agilizar los tiempos de inferencia.
  • Vídeos tutoriales: Guías y tutoriales en profundidad para una experiencia de exportación sin problemas.

Consejo

  • Exportar a ONNX o OpenVINO para acelerar hasta 3 veces CPU .
  • Exporta a TensorRT para acelerar hasta 5 veces GPU .

Ejemplos de uso

Exporta un modelo YOLO11n a un formato diferente como ONNX o TensorRT. Consulta la sección Argumentos más abajo para ver una lista completa de argumentos de exportación.

Ejemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Argumentos

Esta tabla detalla las configuraciones y opciones disponibles para exportar modelos de YOLO a distintos formatos. Estas configuraciones son fundamentales para optimizar el rendimiento, el tamaño y la compatibilidad del modelo exportado en distintas plataformas y entornos. Una configuración adecuada garantiza que el modelo esté listo para su despliegue en la aplicación prevista con una eficacia óptima.

ArgumentoTipoPor defectoDescripción
formatstr'torchscript'Formato de destino del modelo exportado, por ejemplo 'onnx', 'torchscript', 'tensorflow'u otros, definiendo la compatibilidad con diversos entornos de implantación.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas.
kerasboolFalsePermite exportar al formato Keras para TensorFlow SavedModel, proporcionando compatibilidad con el servicio y las API de TensorFlow .
optimizeboolFalseAplica la optimización para dispositivos móviles al exportar a TorchScript, reduciendo potencialmente el tamaño del modelo y mejorando el rendimiento.
halfboolFalsePermite la cuantización FP16 (media precisión), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en el hardware compatible.
int8boolFalseActiva la cuantización INT8, comprimiendo aún más el modelo y acelerando la inferencia con una pérdida mínima de precisión, principalmente para los dispositivos de borde.
dynamicboolFalsePermite tamaños de entrada dinámicos para las exportaciones de ONNX, TensorRT y OpenVINO , mejorando la flexibilidad en el manejo de dimensiones de imagen variables.
simplifyboolTrueSimplifica el gráfico del modelo para las exportaciones de ONNX con onnxslimmejorando potencialmente el rendimiento y la compatibilidad.
opsetintNoneEspecifica la versión del opset ONNX para que sea compatible con los distintos analizadores y tiempos de ejecución de ONNX . Si no se establece, utiliza la última versión compatible.
workspacefloat4.0Establece el tamaño máximo del espacio de trabajo en GiB para las optimizaciones de TensorRT , equilibrando el uso de memoria y el rendimiento.
nmsboolFalseAñade Supresión No Máxima (NMS) a la exportación de CoreML , esencial para un postprocesado de detección preciso y eficaz.
batchint1Especifica el tamaño de inferencia por lotes del modelo exportado o el número máximo de imágenes que el modelo exportado procesará simultáneamente en predict modo.
devicestrNoneEspecifica el dispositivo para exportar: GPU (device=0), CPU (device=cpu), MPS para el silicio de Apple (device=mps) o DLA para NVIDIA Jetson (device=dla:0 o device=dla:1).

Ajustar estos parámetros permite personalizar el proceso de exportación para adaptarlo a requisitos específicos, como el entorno de despliegue, las limitaciones de hardware y los objetivos de rendimiento. Seleccionar el formato y los ajustes adecuados es esencial para lograr el mejor equilibrio entre tamaño del modelo, velocidad y precisión.

Formatos de exportación

Los formatos de exportación disponibles de YOLO11 están en la tabla siguiente. Puedes exportar a cualquier formato utilizando el botón format argumento, es decir format='onnx' o format='engine'. Puedes predecir o validar directamente los modelos exportados, es decir. yolo predict model=yolo11n.onnx. Se muestran ejemplos de uso de tu modelo una vez finalizada la exportación.

Formatoformat ArgumentoModeloMetadatosArgumentos
PyTorch-yolo11n.pt-
TorchScripttorchscriptyolo11n.torchscriptimgsz, optimize, batch
ONNXonnxyolo11n.onnximgsz, half, dynamic, simplify, opset, batch
OpenVINOopenvinoyolo11n_openvino_model/imgsz, half, int8, batch
TensorRTengineyolo11n.engineimgsz, half, dynamic, simplify, workspace, int8, batch
CoreMLcoremlyolo11n.mlpackageimgsz, half, int8, nms, batch
TF SavedModelsaved_modelyolo11n_saved_model/imgsz, keras, int8, batch
TF GraphDefpbyolo11n.pbimgsz, batch
TF Litetfliteyolo11n.tfliteimgsz, half, int8, batch
TF Arista TPUedgetpuyolo11n_edgetpu.tfliteimgsz
TF.jstfjsyolo11n_web_model/imgsz, half, int8, batch
PaddlePaddlepaddleyolo11n_paddle_model/imgsz, batch
MNNmnnyolo11n.mnnimgsz, batch, int8, half
NCNNncnnyolo11n_ncnn_model/imgsz, half, batch
IMX500imxyolo11n_imx_model/imgsz, int8

PREGUNTAS FRECUENTES

¿Cómo exporto un modelo YOLO11 al formato ONNX ?

Exportar un modelo YOLO11 al formato ONNX es sencillo con Ultralytics. Proporciona los métodos Python y CLI para exportar modelos.

Ejemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Para más detalles sobre el proceso, incluyendo opciones avanzadas como el manejo de diferentes tamaños de entrada, consulta la secciónONNX .

¿Cuáles son las ventajas de utilizar TensorRT para la exportación de modelos?

El uso de TensorRT para la exportación de modelos ofrece importantes mejoras de rendimiento. Los modelos YOLO11 exportados a TensorRT pueden alcanzar hasta 5 veces la velocidad de GPU , lo que los hace ideales para aplicaciones de inferencia en tiempo real.

  • Versatilidad: Optimiza los modelos para una configuración de hardware específica.
  • Velocidad: Consigue una inferencia más rápida mediante optimizaciones avanzadas.
  • Compatibilidad: Se integra sin problemas con el hardware de NVIDIA .

Para saber más sobre la integración de TensorRT, consulta la guía de integración deTensorRT .

¿Cómo puedo activar la cuantización INT8 al exportar mi modelo YOLO11?

La cuantización INT8 es una forma excelente de comprimir el modelo y acelerar la inferencia, especialmente en dispositivos de borde. A continuación te explicamos cómo puedes activar la cuantización INT8:

Ejemplo

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True   # export TensorRT model with INT8 quantization

La cuantización INT8 puede aplicarse a varios formatos, como TensorRT y CoreML. Encontrarás más detalles en la sección Exportar.

¿Por qué es importante el tamaño de la entrada dinámica al exportar modelos?

El tamaño de entrada dinámico permite que el modelo exportado maneje dimensiones de imagen variables, proporcionando flexibilidad y optimizando la eficiencia del procesamiento para diferentes casos de uso. Al exportar a formatos como ONNX o TensorRT, la activación del tamaño de entrada dinámico garantiza que el modelo pueda adaptarse a diferentes formas de entrada sin problemas.

Para activar esta función, utiliza dynamic=True durante la exportación:

Ejemplo

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

Para más contexto, consulta la configuración del tamaño de entrada dinámico.

¿Cuáles son los principales argumentos de exportación que hay que tener en cuenta para optimizar el rendimiento del modelo?

Comprender y configurar los argumentos de exportación es crucial para optimizar el rendimiento del modelo:

  • format: El formato de destino del modelo exportado (por ejemplo, onnx, torchscript, tensorflow).
  • imgsz: Tamaño de imagen deseado para la entrada del modelo (p. ej, 640 o (height, width)).
  • half: Permite la cuantización FP16, reduciendo el tamaño del modelo y acelerando potencialmente la inferencia.
  • optimize: Aplica optimizaciones específicas para entornos móviles o con limitaciones.
  • int8: Permite la cuantización INT8, muy beneficiosa para las implantaciones de borde.

Para obtener una lista detallada y explicaciones de todos los argumentos de exportación, visita la sección Argumentos de exportación.

📅 C reado hace 1 año ✏️ Actualizado hace 27 días

Comentarios