Ultralytics YOLO27:
Get Started

Evaluación comparativa de modelos con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Visualización de la evaluación comparativa#

Introducción#

Una vez que hayas entrenado y validado tu modelo, el siguiente paso lógico es evaluar su rendimiento en diversos escenarios del mundo real. El modo de evaluación comparativa de Ultralytics YOLO26 sirve para ello, ya que proporciona un marco sólido para evaluar la velocidad y la precisión de tu modelo en distintos formatos de exportación.

Consulta la versión preliminar de YOLO27, aún no publicada para ver los resultados preliminares de velocidad.



Ver: Compara el rendimiento de los modelos Ultralytics YOLO26 | ¿Cómo comparar el rendimiento de los modelos en distintos equipos?

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

  • Decisiones fundamentadas: Conoce las compensaciones entre velocidad y precisión.
  • Asignación de recursos: Comprende cómo funcionan los distintos formatos de exportación en diferentes equipos.
  • Optimización: Averigua qué formato de exportación ofrece el mejor rendimiento para tu caso de uso concreto.
  • Eficiencia de costes: Aprovecha mejor los recursos de hardware a partir de los resultados de la evaluación comparativa.

Métricas clave del modo de evaluación comparativa#

  • mAP50-95: Para la detección de objetos, la segmentación de instancias, la estimación de pose y OBB.
  • mIoU: Para la segmentación semántica.
  • delta1: Para la estimación de profundidad.
  • accuracy_top1: Para la clasificación de imágenes.
  • Tiempo de inferencia: Tiempo empleado por cada imagen, en milisegundos.

Formatos de exportación compatibles#

  • ONNX: Para un rendimiento óptimo de la CPU
  • TensorRT: Para la máxima eficiencia de la GPU
  • OpenVINO: Para optimizar el hardware Intel
  • CoreML, TensorFlow SavedModel y más: Para distintas necesidades de implementación.
Consejo
  • Exporta a ONNX u OpenVINO para lograr hasta 3 veces más velocidad en la CPU.
  • Exporta a TensorRT para lograr hasta 5 veces más velocidad en la GPU.

Ejemplos de uso#

Instalación recomendada

Instala Ultralytics con las dependencias de exportación antes de ejecutar la evaluación comparativa para evitar que falten paquetes.

pip install ultralytics[export]

Ejecuta evaluaciones comparativas de YOLO26n con todos los formatos de exportación compatibles (ONNX, TensorRT, etc.). Consulta la sección Argumentos más abajo para ver la lista completa de opciones de exportación.

Ejemplo
from ultralytics.utils.benchmarks import benchmark

# Evaluar el rendimiento en la GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# Evaluar un formato de exportación específico
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 las evaluaciones comparativas a sus necesidades específicas y comparar fácilmente el rendimiento de distintos formatos de exportación.

ClaveValor predeterminadoDescripción
modelNoneEspecifica la ruta al archivo del modelo. Acepta los formatos .pt y .yaml, por ejemplo, "yolo26n.pt" para modelos preentrenados o archivos de configuración.
dataNoneRuta al YAML del conjunto de datos para la evaluación comparativa, que suele incluir rutas y ajustes para los datos de validación. Ejemplo: "coco8.yaml". En cambio, la clasificación utiliza un directorio de conjunto de datos o el nombre de un conjunto de datos integrado (por ejemplo, imagenet10).
imgsz640Tamaño de la imagen de entrada del modelo. Debe ser un único entero para imágenes cuadradas (por ejemplo, 640); benchmark() solo admite tamaños de imagen cuadrados.
quantizeNonePrecisión solicitada: 16 (FP16) o 8 (INT8; los métodos PTQ necesitan calibración data/fraction, pero los que solo afectan a los pesos no); 32/sin especificar corresponde a FP32 cuando el formato lo admite: un formato que no pueda exportar en FP32 rechazará un 32 explícito o recurrirá a la precisión que requiera. La fila de PyTorch nativo no se exporta: solo 16 afecta a esta fila y selecciona la inferencia FP16, mientras que 8, 32 y el valor sin especificar ejecutan FP32. Cada formato ejecuta entonces la inferencia con su propia precisión de tiempo de ejecución. Sustituye a los indicadores obsoletos half/int8.
deviceNoneDefine el dispositivo de cálculo para la evaluación comparativa, como "cpu" o "cuda:0"; si no se especifica, se utiliza la primera GPU disponible y, en su defecto, la CPU.
verboseFalseSi se especifica True o un número decimal, los errores de la evaluación comparativa (salvo las aserciones) se propagan en lugar de registrarse; un número decimal como 0.25 también comprueba que la métrica de cada formato que se ejecute correctamente supere ese umbral.
eps0.001Pequeño épsilon (milisegundos) que se añade al tiempo de inferencia por imagen antes de convertirlo a FPS para evitar la división por cero. Rara vez se modifica.
format''Evalúa únicamente el formato de exportación especificado (por ejemplo, format=onnx). Déjalo en blanco para probar automáticamente todos los formatos compatibles.
Valores predeterminados de la función independiente `benchmark()`

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, en particular model="yolo26n.pt", imgsz=160 y device="cpu"; pasa explícitamente imgsz y device para usar los mismos valores que 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 que se indican a continuación. También puedes ejecutarlas para un formato concreto mediante el argumento format, que acepta cualquiera de los formatos mencionados a continuación.

FormatoArgumento formatModeloMetadatosArgumentos
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa de forma predeterminada salidas sin procesar para NMS externa. Establece nms=False para seleccionar una cabeza sin NMS disponible; los formatos no compatibles recurren a su ruta de salida nativa. Las entradas nms anteriores identifican los formatos que pueden integrar 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 analizar el rendimiento de tu modelo en distintos formatos de exportación. Este modo proporciona información sobre métricas clave, como la precisión media (mAP50-95), la precisión y el tiempo de inferencia en milisegundos. Para ejecutar evaluaciones comparativas, puedes utilizar Python o comandos de la CLI. Por ejemplo, para evaluar el rendimiento en una GPU:

    Ejemplo
    from ultralytics.utils.benchmarks import benchmark
    
    # Evaluar el rendimiento en la GPU
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    Para obtener más información sobre los argumentos de evaluación comparativa, visita la sección Argumentos.

  • Exportar los modelos YOLO26 a distintos formatos, como ONNX, TensorRT y OpenVINO, te permite optimizar el rendimiento en función del entorno de implementación. 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: Está optimizado específicamente para el hardware Intel.

    Estos formatos mejoran la velocidad de inferencia en el hardware para el que están diseñados, lo que hace que tus modelos sean más eficientes en diversas aplicaciones del mundo real. Visita la página Exportar para obtener todos los detalles.

  • Evaluar tus modelos YOLO26 es fundamental por varios motivos:

    • Decisiones fundamentadas: Comprende las compensaciones entre velocidad y precisión.
    • Asignación de recursos: Evalúa el rendimiento en distintas 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 a partir de los resultados de la evaluación comparativa.

    Las métricas clave, como mAP50-95, la precisión Top-1 y el tiempo de inferencia, ayudan a realizar estas evaluaciones. Consulta la sección Métricas clave para obtener más información.

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

    • ONNX: La mejor opción para el rendimiento de la CPU.
    • TensorRT: Ideal para la eficiencia de la GPU.
    • OpenVINO: Optimizado para el hardware Intel.
    • CoreML y TensorFlow: Útiles para iOS y aplicaciones generales de ML.

    Para ver la lista completa de formatos compatibles y sus respectivas ventajas, consulta la sección Formatos de exportación compatibles.

  • Al ejecutar evaluaciones comparativas, puedes personalizar varios argumentos según tus necesidades:

    • model: Ruta al archivo del modelo (por ejemplo, "yolo26n.pt").
    • data: Ruta al YAML del conjunto de datos (por ejemplo, "coco8.yaml"); en cambio, la clasificación utiliza un directorio de conjunto de datos o el nombre de un conjunto de datos integrado (por ejemplo, imagenet10).
    • imgsz: Tamaño de la imagen de entrada cuadrada, indicado como un único entero, por ejemplo, 640. El modo de evaluación comparativa utiliza el mismo tamaño de imagen cuadrada en PyTorch y en los formatos exportados para garantizar una comparación justa.
    • quantize: Precisión solicitada: 16 para FP16, 8 para INT8 (útil en dispositivos edge); 32/sin especificar corresponde a FP32 cuando el formato lo admite: un formato que no pueda exportar en FP32 rechazará un 32 explícito o recurrirá a la precisión que requiera. La fila de PyTorch nativo no se exporta: solo 16 afecta a esta fila y selecciona la inferencia FP16, mientras que 8, 32 y el valor sin especificar ejecutan FP32. Cada formato ejecuta entonces la inferencia con su propia precisión de tiempo de ejecución.
    • device: Especifica el dispositivo de cálculo (por ejemplo, "cpu", "cuda:0").
    • verbose: Propaga los errores de la evaluación comparativa en lugar de registrarlos; pasa un número decimal para exigir también que la métrica de cada formato supere ese umbral.

    Para ver la lista completa de argumentos, consulta la sección Argumentos.

Comentarios