Ver como Markdown

libreyolo val

Evalúa un modelo contra un split de un dataset e imprime las métricas. El conjunto de métricas depende de la tarea del modelo, y los números son los mismos con los que se construye una fila de benchmark.

Comando
libreyolo val
Requerido
model, data
Salida
Métricas por stdout. Gráficas y JSON COCO en runs/val/exp cuando se piden

Sinopsis

bash
libreyolo val model=<name|path> data=<dataset.yaml> [key=value ...]

Los argumentos son pares key=value, y la forma POSIX también funciona, así que batch=8 y --batch 8 son el mismo argumento.

Argumentos

ArgumentoPor defectoSignificado
modelRuta de los pesos del modelo o nombre de CLI. Requerido
dataRuta al YAML del dataset (formato YOLO, p. ej. coco8.yaml). Requerido
data_dirDirectorio del dataset directo, ignorando la ruta indicada en el YAML
splitvalSplit del dataset: val, test, train
batch16Tamaño de batch
imgszTamaño de la imagen: 640 (cuadrada) o 480x640 (alto x ancho). El tamaño de entrada propio del modelo si no se indica
conf0.001Umbral de confianza
iou0.6Umbral de IoU para NMS
max_det300Máximo de predicciones por imagen tras el NMS
eval_max_detTope del evaluador COCO. La convención AP@100 de pycocotools si no se indica
faster_coco_evaltrueUsa el backend C++ de faster-coco-eval para las métricas COCO cuando está instalado; si no, recurre a pycocotools
halffalseInferencia en FP16
amp_dtypefloat16Dtype del autocast de CUDA cuando half=true: float16 o bfloat16
save_jsonfalseGuarda los resultados en JSON con formato COCO
save_plotsfalseGuarda las gráficas de validación: métricas, AP por clase, matriz de confusión, muestras
workers4Workers del dataloader
deviceautoDispositivo
projectruns/valRaíz del directorio de salida
nameexpNombre del experimento
exist_okfalseReutiliza el directorio de salida
allow_download_scriptsfalsePermite Python embebido en los bloques de descarga del YAML del dataset
jsonfalseSalida JSON por stdout
quietfalseSilencia stderr
verbosetrueSalida detallada
help_jsonfalseVuelca el esquema del comando como JSON y sale

Ejemplos

Básico
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml
Gráficas y JSON COCO
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml \  imgsz=640 batch=8 save_json=true save_plots=true \  project=runs/val name=yolo9s-coco8 exist_ok=true
Legible por máquina
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml json=true quiet=true

Notas

Qué son las métricas

El conjunto que se imprime sigue a la tarea del modelo, y la salida JSON usa las mismas claves.

Detección, segmentación y cajas orientadas reportan mAP50, mAP50_95, precision y recall. Cuando un modelo predice más de un tipo de salida, los grupos por tipo aparecen al lado como box_metrics, mask_metrics y obb_metrics, cada uno con esas mismas cuatro claves.

La clasificación reporta accuracy_top1 y accuracy_top5. La detección de puntos reporta precision, recall, f1, MLE, MAE, RMSE y mAP_sweep. La profundidad reporta abs_rel, rmse, delta1, delta2 y delta3. La segmentación semántica reporta mIoU y pixel_accuracy. La restauración reporta PSNR y SSIM.

El resultado JSON lleva además eval_backend, que nombra la biblioteca de evaluación COCO y la versión que produjeron los números, de modo que dos ejecuciones se pueden comparar sabiendo si el mismo backend puntuó ambas.

Umbrales

Los valores por defecto de aquí son valores de evaluación, no de predicción: conf es 0.001 e iou es 0.6, mientras que libreyolo predict usa 0.25 y 0.45. Subir conf a un umbral de visualización baja el recall y con él la mAP, así que un número obtenido de esa forma no es comparable con uno publicado.

imgsz no está fijado por defecto, lo que significa el tamaño de entrada propio del modelo. Fijarlo evalúa al tamaño indicado, que es la manera de medir un checkpoint fuera de su resolución nativa.

Datasets que se descargan

Un YAML de dataset cuyo campo download es una URL se descarga en el primer uso sin ningún permiso adicional. Uno que lleva un script de descarga en Python embebido necesita allow_download_scripts=true, y el comando avisa por stderr de que se ha habilitado la ejecución de código local. Los coco8.yaml y coco128.yaml incluidos están basados en URL, así que no necesitan nada.

Salida y códigos de salida

stdout lleva las métricas; el progreso va a stderr. json=true imprime un único objeto con schema_version, y quiet=true silencia stderr.

El código de salida es 0 en caso de éxito, 2 para un error de uso o de configuración, 3 cuando el dataset no se encuentra, 4 cuando el modelo no se puede cargar y 1 para otros fallos en tiempo de ejecución.

Relacionado: libreyolo train, que ejecuta esta misma evaluación según su propio calendario a través de eval_interval.

Verificado con LibreYOLO v1.5.0.