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 Simplifies the model graph for ONNX exports with onnxslim, potentially improving performance and compatibility.
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 Specifies export model batch inference size or the max number of images the exported model will process concurrently in 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
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


Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (15), Burhan-Q (4), Kayzwer (2)

Comentarios