Ir al contenido

Exportación de modelos con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

Introducción

El objetivo final del entrenamiento de un modelo es desplegarlo en aplicaciones del mundo real. El modo de exportación en Ultralytics YOLO11 ofrece una gama versátil de opciones para exportar su modelo entrenado a diferentes formatos, por lo que es desplegable a través de diversas plataformas y dispositivos. Esta completa guía pretende guiarle a través de los matices de la exportación de modelos, mostrando cómo lograr 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: Exporte a múltiples formatos, incluidos ONNX, TensorRT, CoreML, y más.
  • Rendimiento: Acelere hasta 5 veces GPU con TensorRT y 3 veces CPU con ONNX o OpenVINO.
  • Compatibilidad: Haga que su 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 de exportación

Estas son algunas de las funcionalidades más destacadas:

  • Exportación con un solo 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 se optimizan para acelerar 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 .
  • Exporte a TensorRT para acelerar hasta 5 veces GPU .

Ejemplos de uso

Exporte un modelo YOLO11n a un formato diferente como ONNX o TensorRT. Consulte la sección Argumentos más abajo para obtener una lista completa de los 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

En esta tabla se detallan las configuraciones y opciones disponibles para exportar modelos de YOLO a distintos formatos. Estos ajustes 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, que definen 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 exportar a 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 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 dispositivos de borde.
dynamic bool False Permite tamaños de entrada dinámicos para las exportaciones de ONNX, TensorRT y OpenVINO , lo que aumenta la flexibilidad a la hora de manejar dimensiones de imagen variables.
simplify bool True Simplifica el gráfico del modelo para las exportaciones de ONNX con onnxslimmejorando potencialmente el rendimiento y la compatibilidad.
opset int None Especifica la versión de ONNX opset para la compatibilidad con diferentes ONNX analizadores y tiempos de ejecución. Si no se establece, utiliza la última versión compatible.
workspace float o None None 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; utilice None para autoasignación por TensorRT hasta el máximo del dispositivo.
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 la inferencia por lotes del modelo de exportación 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 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).

El ajuste de 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 el tamaño del modelo, la velocidad y la precisión.

Formatos de exportación

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

Formato format Argumento Modelo Metadatos Argumentos
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, batch
TF Borde TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8

PREGUNTAS FRECUENTES

¿Cómo se exporta un modelo de YOLO11 al formato ONNX ?

La exportación de un modelo YOLO11 al formato ONNX es sencilla con Ultralytics. Ofrece 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, incluidas opciones avanzadas como el manejo de diferentes tamaños de entrada, consulte la secciónONNX .

¿Cuáles son las ventajas de utilizar TensorRT para exportar modelos?

El uso de TensorRT para la exportación de modelos ofrece importantes mejoras de rendimiento. Los modelos de 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: Optimice los modelos para una configuración de hardware específica.
  • Velocidad: Consiga una inferencia más rápida mediante optimizaciones avanzadas.
  • Compatibilidad: Se integra sin problemas con el hardware de NVIDIA .

Para obtener más información sobre la integración de TensorRT, consulte 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 se explica cómo 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á más detalles en la sección Exportación.

¿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, lo que proporciona flexibilidad y optimiza 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, utilice la opción 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 información, consulte la configuración dinámica del tamaño de entrada.

¿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 (por ejemplo, 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 restricciones.
  • int8: Permite la cuantización INT8, muy beneficiosa para los despliegues de borde.

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

Creado hace 1 año ✏️ Actualizado hace 1 mes

Comentarios