Saltar al contenido

Comparación de modelos con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

Introducción

Una vez entrenado y validado tu modelo, el siguiente paso lógico es evaluar su rendimiento en diversos escenarios del mundo real. El modo Benchmark de Ultralytics YOLOv8 sirve para este propósito, ya que proporciona un marco sólido para evaluar la velocidad y la precisión de tu modelo en una serie de formatos de exportación.



Observa: Ultralytics Tutorial de Modos: Prueba comparativa

¿Por qué es crucial la evaluación comparativa?

  • Decisiones fundamentadas: Obtén información sobre las compensaciones entre velocidad y precisión.
  • Asignación de recursos: Comprende cómo funcionan los distintos formatos de exportación en los distintos equipos.
  • Optimización: Aprende qué formato de exportación ofrece el mejor rendimiento para tu caso de uso específico.
  • Eficiencia de costes: Haz un uso más eficiente de los recursos de hardware basándote en los resultados de las pruebas comparativas.

Métricas clave en el modo de evaluación comparativa

  • mAP50-95: Para detección de objetos, segmentación y estimación de la pose.
  • accuracy_top5: Para la clasificación de imágenes.
  • Tiempo de inferencia: Tiempo que tarda cada imagen en milisegundos.

Formatos de exportación admitidos

  • ONNX: Para un rendimiento óptimo CPU
  • TensorRT: Para obtener la máxima eficacia GPU
  • OpenVINO: Para la optimización del hardware Intel
  • CoreML, TensorFlow SavedModel , y Más: Para diversas necesidades de despliegue.

Consejo

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

Ejemplos de uso

Ejecuta las pruebas comparativas de YOLOv8n en todos los formatos de exportación admitidos, incluidos ONNX, TensorRT , etc. Consulta la sección Argumentos para ver una lista completa de los argumentos de exportación.

Ejemplo

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Argumentos

Argumentos como model, data, imgsz, half, devicey verbose proporcionan a los usuarios la flexibilidad necesaria para ajustar los puntos de referencia a sus necesidades específicas y comparar el rendimiento de distintos formatos de exportación con facilidad.

Clave Valor por defecto Descripción
model None Especifica la ruta al archivo del modelo. Acepta tanto .pt y .yaml formatos, por ejemplo "yolov8n.pt" para modelos preentrenados o archivos de configuración.
data None Ruta a un archivo YAML que define el conjunto de datos para la evaluación comparativa, que suele incluir rutas y configuraciones para los datos de validación. Ejemplo: "coco8.yaml".
imgsz 640 El tamaño de la imagen de entrada para el modelo. Puede ser un número entero para imágenes cuadradas o una tupla (width, height) para los no cuadrados, por ejemplo (640, 480).
half False Permite la inferencia FP16 (media precisión), reduciendo el uso de memoria y posiblemente aumentando la velocidad en hardware compatible. Utiliza half=True para activarlo.
int8 False Activa la cuantización INT8 para optimizar aún más el rendimiento en los dispositivos compatibles, especialmente útil para los dispositivos de borde. Configura int8=True utilizar.
device None Define el dispositivo o dispositivos de cálculo para la evaluación comparativa, como por ejemplo "cpu", "cuda:0"o una lista de dispositivos como "cuda:0,1" para configuraciones multiGPU .
verbose False Controla el nivel de detalle de la salida de registro. Un valor booleano; establecer verbose=True para los registros detallados o un flotador para los errores de umbral.

Formatos de exportación

Los Benchmarks intentarán ejecutarse automáticamente en todos los formatos de exportación posibles que se indican a continuació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

Ver todo export detalles en el Exportar página.

PREGUNTAS FRECUENTES

¿Cómo puedo comparar el rendimiento de mi modelo YOLOv8 utilizando Ultralytics?

Ultralytics YOLOv8 ofrece un modo Benchmark para evaluar el rendimiento de tu modelo en diferentes formatos de exportación. Este modo proporciona información sobre métricas clave como la Precisión Media Media (mAP50-95), la precisión y el tiempo de inferencia en milisegundos. Para realizar pruebas comparativas, puedes utilizar los comandos Python o CLI . Por ejemplo, para realizar una prueba comparativa en GPU:

Ejemplo

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Para más detalles sobre los argumentos de los puntos de referencia, visita la sección Argumentos.

¿Qué ventajas tiene exportar los modelos de YOLOv8 a distintos formatos?

Exportar modelos de YOLOv8 a distintos formatos, como ONNX, TensorRT y OpenVINO , te permite optimizar el rendimiento en función de tu entorno de implantación. Por ejemplo:

  • ONNX: Aumenta hasta 3 veces la velocidad de CPU .
  • TensorRT: Ofrece hasta 5 veces más velocidad GPU .
  • OpenVINO: Específicamente optimizados para el hardware Intel . Estos formatos mejoran tanto la velocidad como la precisión de tus modelos, haciéndolos más eficaces para diversas aplicaciones del mundo real. Visita la página Exportar para conocer todos los detalles.

¿Por qué es crucial la evaluación comparativa a la hora de evaluar los modelos YOLOv8 ?

La evaluación comparativa de tus modelos YOLOv8 es esencial por varias razones:

  • Decisiones informadas: Comprende las compensaciones entre velocidad y precisión.
  • Asignación de recursos: Mide el rendimiento de las distintas opciones de hardware.
  • Optimización: Determina qué formato de exportación ofrece el mejor rendimiento para casos de uso específicos.
  • Rentabilidad: Optimiza el uso del hardware basándote en los resultados de las pruebas comparativas. Métricas clave como mAP50-95, precisión Top-5 y tiempo de inferencia ayudan a realizar estas evaluaciones. Consulta la sección Métricas clave para obtener más información.

¿Qué formatos de exportación admite YOLOv8, y cuáles son sus ventajas?

YOLOv8 admite diversos formatos de exportación, cada uno adaptado a un hardware y unos casos de uso específicos:

  • ONNX: Lo mejor para el rendimiento de CPU .
  • TensorRT: Ideal para GPU eficacia.
  • OpenVINO: Optimizado para el hardware Intel .
  • CoreML & TensorFlow: Útil para iOS y aplicaciones generales de ML. Para obtener una lista completa de los formatos admitidos y sus respectivas ventajas, consulta la sección Formatos de exportación admitidos.

¿Qué argumentos puedo utilizar para afinar mis puntos de referencia de YOLOv8 ?

Al ejecutar pruebas comparativas, se pueden personalizar varios argumentos para adaptarlos a necesidades específicas:

  • modelo: Ruta al archivo del modelo (por ejemplo, "yolov8n.pt").
  • datos: Ruta a un archivo YAML que defina el conjunto de datos (por ejemplo, "coco8.yaml").
  • imgsz: El tamaño de la imagen de entrada, como un único número entero o como una tupla.
  • medio: Activa la inferencia FP16 para mejorar el rendimiento.
  • int8: Activa la cuantización INT8 para dispositivos de borde.
  • dispositivo: Especifica el dispositivo de cálculo (por ejemplo, "cpu", "cuda:0").
  • verboso: Controla el nivel de detalle del registro. Para ver la lista completa de argumentos, consulta la sección Argumentos.


Creado 2023-11-12, Actualizado 2024-07-04
Autores: glenn-jocher (18), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Comentarios