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 YOLOv8 ofrece una gama versátil de opciones para exportar tu modelo entrenado a diferentes formatos, haciéndolo desplegable en varias 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 YOLOv8 y ejecutar la inferencia en directo en la cámara web.

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

  • Versatilidad: Exporta a múltiples formatos, como ONNX, TensorRT, CoreML, y más.
  • Rendimiento: Consigue hasta 5 veces más velocidad de la GPU con TensorRT y 3 veces más velocidad de la 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 aumentar hasta 3 veces la velocidad de la CPU.
  • Exporta a TensorRT para acelerar hasta 5 veces la GPU.

Ejemplos de uso

Exporta un modelo de YOLOv8n 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('yolov8n.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=yolov8n.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.

Argumento Tipo Por defecto Descripción
format str 'torchscript' Formato de destino del modelo exportado, por ejemplo 'onnx', 'torchscript', 'tensorflow'u otros, definiendo la compatibilidad con diversos entornos de implantación.
imgsz int o tuple 640 Tamañ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.
keras bool False Permite la exportación al formato Keras para TensorFlow SavedModel , proporcionando compatibilidad con el servicio y las API de TensorFlow .
optimize bool False Aplica la optimización para dispositivos móviles al exportar a TorchScript, reduciendo potencialmente el tamaño del modelo y mejorando el rendimiento.
half bool False Permite la cuantización FP16 (media precisión), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en el hardware compatible.
int8 bool False Activa 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.
dynamic bool False Permite tamaños de entrada dinámicos para las exportaciones de ONNX y TensorRT , mejorando la flexibilidad en el manejo de dimensiones de imagen variables.
simplify bool False Simplifica el gráfico del modelo para las exportaciones a ONNX , mejorando potencialmente el rendimiento y la compatibilidad.
opset int None Especifica 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.
workspace float 4.0 Establece el tamaño máximo del espacio de trabajo en GiB para las optimizaciones de TensorRT , equilibrando el uso de memoria y el rendimiento.
nms bool False Añade Supresión No Máxima (NMS) a la exportación de CoreML , esencial para un postprocesado de detección preciso y eficaz.
batch int 1 Especifica 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.

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 YOLOv8 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=yolov8n.onnx. Se muestran ejemplos de uso de tu modelo una vez finalizada la exportación.

Formato format Argumento Modelo Metadatos Argumentos
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Arista TPU edgetpu yolov8n_edgetpu.tflite imgsz, batch
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch


Creado 2023-11-12, Actualizado 2024-05-08
Autores: Burhan-Q (3), glenn-jocher (11)

Comentarios