Evaluación comparativa de modelos con Ultralytics YOLO#
Visualización de 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 de evaluación comparativa en Ultralytics YOLO26 cumple 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.
Consulta la vista previa no publicada de YOLO27 para ver las pruebas de rendimiento de velocidad preliminares.
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 hardwares.
- 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 de evaluación comparativa#
- mAP50-95: Para la detección de objetos, segmentación y estimación de poses.
- accuracy_top1: Para la clasificación de imágenes.
- Tiempo de inferencia: Tiempo tomado para cada imagen en milisegundos.
Formatos de exportación compatibles#
- ONNX: Para un rendimiento óptimo de la CPU
- TensorRT: Para una eficiencia máxima de la GPU
- OpenVINO: Para la optimización del hardware de Intel
- CoreML, TensorFlow SavedModel y más: Para diversas necesidades de despliegue.
- Exporta a ONNX o OpenVINO para obtener hasta 3 veces más velocidad en la CPU.
- Exporta a TensorRT para obtener hasta 5 veces más velocidad en la GPU.
Ejemplos de uso#
Instala Ultralytics con dependencias de exportación antes de realizar evaluaciones comparativas para evitar la falta de paquetes.
pip install ultralytics[export]Ejecuta 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 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 brindan a los usuarios la flexibilidad de ajustar con precisión las evaluaciones comparativas 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 tanto los formatos .pt como .yaml, por ejemplo, "yolo26n.pt" para modelos preentrenados o archivos de configuración. |
data | None | Ruta al YAML del conjunto de datos para la evaluación comparativa, que normalmente incluye rutas y ajustes para los datos de validación. Ejemplo: "coco8.yaml". La clasificación en su lugar toma 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 solicitada: 16 (FP16) o 8 (INT8; los esquemas PTQ necesitan calibración data/fraction, los de solo pesos no); 32/sin establecer es FP32 donde el formato lo admite; un formato que no puede exportar FP32 rechaza un 32 explícito o recurre a la precisión que requiere. La fila nativa de PyTorch no se exporta: solo 16 la afecta, seleccionando la inferencia FP16, mientras que 8, 32 y sin establecer ejecutan FP32. Cada formato ejecuta entonces la inferencia a su propia precisión de tiempo de ejecución. Reemplaza las banderas obsoletas half/int8. |
device | 'cpu' | Define el dispositivo o dispositivos de cálculo para la evaluación comparativa, como "cpu" o "cuda:0". |
verbose | False | Controla el nivel de detalle en la salida de registro. Configura verbose=True para registros detallados. |
eps | 0.001 | Pequeño épsilon (milisegundos) añadido al tiempo de inferencia por imagen antes de convertirlo a FPS, evitando la división por cero. Rara vez se cambia. |
format | '' | Realiza evaluaciones comparativas únicamente del formato de exportación especificado (por ejemplo, format=onnx). Déjalo en blanco para probar todos los formatos compatibles automáticamente. |
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, especialmente model="yolo26n.pt" y 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 comparativas para un formato específico utilizando 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 |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
nms=None se establece por defecto en salidas sin procesar para la NMS externa. Configura nms=False para seleccionar una cabeza libre de NMS disponible; los formatos no compatibles recurren a su ruta de salida nativa. Las entradas nms anteriores identifican los formatos que pueden incrustar la NMS con nms=True.
Consulta todos los detalles de export en la página Exportar.
Preguntas frecuentes#
Ultralytics YOLO26 ofrece un modo de evaluación comparativa para medir 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 ejecutar evaluaciones comparativas, puedes usar comandos de Python o de la CLI. Por ejemplo, para realizar una evaluación comparativa 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 la evaluación comparativa, visita la sección de Argumentos.
Exportar modelos 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 hasta 3 veces más velocidad en la CPU.
- TensorRT: Ofrece hasta 5 veces más velocidad en la GPU.
- OpenVINO: Específicamente optimizado para hardware de 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 de Exportación para obtener todos los detalles.
Evaluar tus modelos YOLO26 es esencial por varias razones:
- Decisiones informadas: Comprende 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 en función de los resultados de la evaluación comparativa.
Métricas clave como mAP50-95, precisión Top-1 y tiempo de inferencia ayudan a realizar estas evaluaciones. Consulta la sección de Métricas clave para obtener más información.
YOLO26 admite una variedad de formatos de exportación, cada uno adaptado a hardware y casos de uso específicos:
- ONNX: El mejor para el rendimiento de la CPU.
- TensorRT: Ideal para la eficiencia de la GPU.
- OpenVINO: Optimizado para hardware de Intel.
- CoreML y TensorFlow: Útiles para iOS y aplicaciones de aprendizaje automático en general.
Para obtener una lista completa de los formatos compatibles y sus respectivas ventajas, consulta la sección de Formatos de exportación compatibles.
Al ejecutar evaluaciones comparativas, 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 toma 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 de evaluación comparativa utiliza el mismo tamaño de imagen cuadrada en PyTorch y en los formatos exportados para una comparación justa. - quantize: Precisión solicitada:
16para FP16,8para INT8 (útil para dispositivos perimetrales);32/sin establecer es FP32 donde el formato lo admite; un formato que no puede exportar FP32 rechaza un32explícito o recurre a la precisión que requiere. La fila nativa de PyTorch no se exporta: solo16la afecta, seleccionando la inferencia FP16, mientras que8,32y sin establecer ejecutan FP32. Cada formato ejecuta entonces la inferencia a su propia precisión de tiempo de ejecución. - device: Especifica el dispositivo de cálculo (por ejemplo, "cpu", "cuda:0").
- verbose: Controla el nivel de detalle del registro.
Para ver una lista completa de argumentos, consulta la sección de Argumentos.