Evaluación comparativa de modelos con Ultralytics YOLO#
Visualización de la evaluación comparativa#
Introducción#
Una vez que tu modelo esté entrenado y validado, el siguiente paso lógico es evaluar su rendimiento en varios escenarios del mundo real. El modo Benchmark en Ultralytics YOLO26 cumple este propósito al proporcionar un marco sólido para evaluar la velocidad y la accuracy 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 object detection, 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 de 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 tanto de .pt como de .yaml, por ejemplo, "yolo26n.pt" para modelos preentrenados o archivos de configuración. |
data | None | Ruta al YAML del conjunto de datos para el benchmark, que normalmente incluye rutas y ajustes para validation data. Ejemplo: "coco8.yaml". La clasificación en su lugar acepta un directorio de conjuntos de datos o un nombre de conjunto de datos integrado (por ejemplo, imagenet10). |
imgsz | 640 | El tamaño de la imagen de entrada para el modelo. Debe ser un único número entero para imágenes cuadradas (por ejemplo, 640); benchmark() solo admite tamaños de imagen cuadrados. |
quantize | None | Precisión de cuantización: 16 (FP16) o 8 (INT8/PTQ; requiere calibración data/fraction); 32/sin establecer es FP32. Sustituye a los flags obsoletos half/int8. |
device | 'cpu' | Define el dispositivo o dispositivos de computación para el benchmark, como "cpu" o "cuda:0". |
verbose | False | Controla el nivel de detalle en la salida de registros. Configura 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 | '' | Realiza el benchmark únicamente del formato de exportación especificado (por ejemplo, format=onnx). Déjalo en blanco para probar todos los formatos compatibles de manera automática. |
La función independiente benchmark() (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" y imgsz=160; pasa imgsz explícitamente para que coincida con el CLI de yolo benchmark.
Formatos de exportación#
Los benchmarks intentarán ejecutarse automáticamente en todos los formatos de exportación posibles que se enumeran a continuación. De forma alternativa, puedes ejecutar benchmarks para un formato específico utilizando el argumento format, que acepta cualquiera de los formatos mencionados a continuación.
| Formato | Argumento de 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 todos los detalles de export en la página Export.
FAQ#
Ultralytics YOLO26 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 mean Average Precision (mAP50-95), precisión y tiempo de inferencia en milisegundos. Para ejecutar benchmarks, puedes usar comandos de Python o del CLI. Por ejemplo, para hacer un benchmark en una GPU:
Ejemplofrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Para obtener más detalles sobre los argumentos de los benchmarks, visita la sección Arguments.
Exportar modelos de YOLO26 a diferentes formatos como ONNX, TensorRT y OpenVINO te permite optimizar el rendimiento en función de 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 todos los detalles.
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.
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 & TensorFlow: Útil para iOS y aplicaciones de ML generales.
Para ver una lista completa de los formatos compatibles y sus respectivas ventajas, consulta la sección Supported Export Formats.
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 al YAML del conjunto de datos (por ejemplo,
"coco8.yaml"); la clasificación en su lugar acepta un directorio de conjuntos de datos o un nombre de conjunto de datos integrado (por ejemplo,imagenet10). - imgsz: El tamaño de la imagen de entrada cuadrada como un único número entero, como
640. El modo Benchmark utiliza el mismo tamaño de imagen cuadrada en PyTorch y en los formatos exportados para una comparación justa. - quantize: Precisión de cuantización:
16para FP16,8para INT8 (útil para dispositivos perimetrales);32/sin establecer es 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.