Evaluación comparativa de modelos con Ultralytics YOLO#
Visualización de la evaluación comparativa#
Es posible que necesites actualizar la página para ver las gráficas correctamente debido a posibles problemas con las cookies.
Introducción#
Una vez que tu modelo esté entrenado y validado, el siguiente paso lógico es evaluar su rendimiento en diversos escenarios del mundo real. El modo Benchmark en Ultralytics YOLO26 sirve para este propósito al proporcionar un marco sólido para evaluar la velocidad y la precisión de tu modelo en una variedad de formatos de exportación.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
¿Por qué es crucial la evaluación comparativa?#
- Decisiones informadas: Obtén información sobre las compensaciones entre velocidad y precisión.
- Asignación de recursos: Comprende cómo funcionan los diferentes formatos de exportación en distintos tipos de hardware.
- 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 la evaluación comparativa.
Métricas clave en el modo Benchmark#
- mAP50-95: Para detección de objetos, segmentación y estimación de poses.
- accuracy_top1: Para image classification.
- Tiempo de inferencia: Tiempo necesario para cada imagen en milisegundos.
Formatos de exportación compatibles#
- ONNX: Para un rendimiento óptimo en CPU
- TensorRT: Para una eficiencia máxima en GPU
- OpenVINO: Para optimización en hardware Intel
- CoreML, TensorFlow SavedModel y más: Para diversas necesidades de despliegue.
- Exporta a ONNX u OpenVINO para obtener hasta 3 veces más velocidad en CPU.
- Exporta a TensorRT para obtener hasta 5 veces más velocidad en GPU.
Ejemplos de uso#
Instala Ultralytics con dependencias de exportación antes de realizar la evaluación comparativa para evitar la falta de paquetes.
pip install ultralytics[export]Ejecuta las evaluaciones comparativas de YOLO26n en todos los formatos de exportación compatibles (ONNX, TensorRT, etc.). Consulta la sección de Argumentos a continuación para ver una lista completa de las opciones de exportación.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Argumentos#
Argumentos como model, data, imgsz, quantize, device, verbose y format ofrecen a los usuarios la flexibilidad necesaria para ajustar los benchmarks a sus necesidades específicas y comparar el rendimiento de diferentes formatos de exportación con facilidad.
| Clave | Valor predeterminado | Descripción |
|---|---|---|
model | None | Especifica la ruta al archivo del modelo. Acepta formatos .pt y .yaml, por ejemplo, "yolo26n.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 normalmente incluye 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. Debe ser un único número entero para imágenes cuadradas (p. ej., 640); benchmark() solo admite tamaños de imagen cuadrados. |
quantize | None | Precisión de cuantización: 16 (FP16) o 8 (INT8/PTQ; requiere data/fraction de calibración); 32 o no establecer valor equivale a FP32. Sustituye a los flags obsoletos half/int8. |
device | 'cpu' | Define el dispositivo o dispositivos de computación para la evaluación comparativa, como "cpu" o "cuda:0". |
verbose | False | Controla el nivel de detalle en la salida de registro. Establece verbose=True para registros detallados. |
eps | 0.001 | Épsilon pequeño (milisegundos) añadido al tiempo de inferencia por imagen antes de convertirlo a FPS, lo que evita la división por cero. Raramente se cambia. |
format | '' | Evalúa comparativamente solo el formato de exportación especificado (p. ej., format=onnx). Déjalo en blanco para probar todos los formatos compatibles automáticamente. |
La función benchmark() independiente (from ultralytics.utils.benchmarks import benchmark) utiliza sus propios valores predeterminados de firma en lugar de los valores de la tabla anterior, notablemente model="yolo26n.pt" e imgsz=160; pasa imgsz explícitamente para que coincida con la CLI de yolo benchmark.
Formatos de exportación#
Las evaluaciones comparativas intentarán ejecutarse automáticamente en todos los formatos de exportación posibles enumerados a continuación. Alternativamente, puedes ejecutar evaluaciones para un formato específico usando el argumento format, que acepta cualquiera de los formatos mencionados a continuación.
| Formato | Argumento format | Modelo | Metadatos | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
Consulta los detalles completos de export en la página Export.
FAQ#
¿Cómo evalúo el rendimiento de mi modelo YOLO26 usando Ultralytics?#
Ultralytics YOLO26 ofrece un modo de 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 promedio (mAP50-95), la precisión y el tiempo de inferencia en milisegundos. Para ejecutar benchmarks, puedes usar comandos de Python o de la CLI. Por ejemplo, para realizar un benchmark en una GPU:
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Para más detalles sobre los argumentos del benchmark, visita la sección Arguments.
¿Cuáles son las ventajas de exportar modelos YOLO26 a diferentes formatos?#
Exportar modelos YOLO26 a diferentes formatos como ONNX, TensorRT y OpenVINO te permite optimizar el rendimiento según tu entorno de despliegue. Por ejemplo:
- ONNX: Proporciona una aceleración de CPU de hasta 3x.
- TensorRT: Ofrece una aceleración de GPU de hasta 5x.
- OpenVINO: Optimizado específicamente para hardware Intel.
Estos formatos mejoran tanto la velocidad como la precisión de tus modelos, haciéndolos más eficientes para diversas aplicaciones del mundo real. Visita la página Export para obtener detalles completos.
¿Por qué es crucial el benchmarking al evaluar modelos YOLO26?#
Realizar benchmarks de tus modelos YOLO26 es esencial por varias razones:
- Decisiones informadas: Entiende las compensaciones entre velocidad y precisión.
- Asignación de recursos: Mide el rendimiento en diferentes opciones de hardware.
- Optimización: Determina qué formato de exportación ofrece el mejor rendimiento para casos de uso específicos.
- Eficiencia de costes: Optimiza el uso del hardware basándote en los resultados del benchmark.
Métricas clave como mAP50-95, precisión Top-1 y tiempo de inferencia ayudan a realizar estas evaluaciones. Consulta la sección Key Metrics para obtener más información.
¿Qué formatos de exportación son compatibles con YOLO26 y cuáles son sus ventajas?#
YOLO26 admite una variedad de formatos de exportación, cada uno adaptado para hardware y casos de uso específicos:
- ONNX: El mejor para el rendimiento de CPU.
- TensorRT: Ideal para la eficiencia de GPU.
- OpenVINO: Optimizado para hardware Intel.
- CoreML y TensorFlow: Útiles para iOS y aplicaciones generales de ML.
Para obtener una lista completa de los formatos admitidos y sus respectivas ventajas, consulta la sección Supported Export Formats.
¿Qué argumentos puedo usar para ajustar mis benchmarks de YOLO26?#
Al ejecutar benchmarks, se pueden personalizar varios argumentos para adaptarlos a necesidades específicas:
- model: Ruta al archivo del modelo (por ejemplo, "yolo26n.pt").
- data: Ruta a un archivo YAML que define el conjunto de datos (por ejemplo, "coco8.yaml").
- imgsz: El tamaño de la imagen de entrada cuadrada como un solo número entero, por ejemplo
640. El modo de evaluación comparativa utiliza el mismo tamaño de imagen cuadrada tanto en PyTorch como en los formatos exportados para realizar una comparación justa. - quantize: Precisión de cuantización:
16para FP16,8para INT8 (útil para dispositivos edge);32o no establecer valor equivale a FP32. - device: Especifica el dispositivo de computación (por ejemplo, "cpu", "cuda:0").
- verbose: Controla el nivel de detalle del registro.
Para obtener una lista completa de argumentos, consulta la sección Arguments.