libreyolo val

Valuta un modello su uno split di un dataset e stampa le metriche. L'insieme delle metriche dipende dal task del modello, e i numeri sono quelli con cui si costruisce una riga di benchmark.

Comando
libreyolo val
Obbligatori
model, data
Output
Metriche su stdout. Grafici e JSON COCO in runs/val/exp quando richiesti

Sinossi

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

Gli argomenti sono coppie key=value, e funziona anche la forma POSIX, quindi batch=8 e --batch 8 sono lo stesso argomento.

Argomenti

ArgomentoPredefinitoSignificato
modelPercorso dei pesi del modello o nome CLI. Obbligatorio
dataPercorso dello YAML del dataset (formato YOLO, ad esempio coco8.yaml). Obbligatorio
data_dirDirectory del dataset diretta, ignorando il percorso indicato nello YAML
splitvalSplit del dataset: val, test, train
batch16Dimensione del batch
imgszDimensione dell'immagine: 640 (quadrata) o 480x640 (HxW). Se non impostata, la dimensione di input propria del modello
conf0.001Soglia di confidenza
iou0.6Soglia IoU della NMS
max_det300Numero massimo di predizioni per immagine dopo la NMS
eval_max_detLimite dell'evaluator COCO. Se non impostato, la convenzione AP@100 di pycocotools
faster_coco_evaltrueUsa il backend C++ faster-coco-eval per le metriche COCO quando è installato; altrimenti ricade su pycocotools
halffalseInferenza FP16
amp_dtypefloat16Dtype dell'autocast CUDA quando half=true: float16 o bfloat16
save_jsonfalseSalva i risultati in JSON in formato COCO
save_plotsfalseSalva i grafici di validazione: metriche, AP per classe, matrice di confusione, campioni
workers4Worker del dataloader
deviceautoDispositivo
projectruns/valRadice della directory di output
nameexpNome dell'esperimento
exist_okfalseRiusa la directory di output
allow_download_scriptsfalseConsente il Python incorporato nei blocchi di download dello YAML del dataset
jsonfalseOutput JSON su stdout
quietfalseSilenzia stderr
verbosetrueOutput verboso
help_jsonfalseStampa lo schema del comando come JSON ed esce

Esempi

Base
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml
Grafici e 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
Leggibile da una macchina
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml json=true quiet=true

Note

Che cosa sono le metriche

L'insieme stampato segue il task del modello, e l'output JSON usa le stesse chiavi.

Rilevamento, segmentazione e box orientati riportano mAP50, mAP50_95, precision e recall. Quando un modello predice più di un tipo di output, i gruppi per tipo compaiono accanto come box_metrics, mask_metrics e obb_metrics, ognuno con le stesse quattro chiavi.

La classificazione riporta accuracy_top1 e accuracy_top5. Il rilevamento di punti riporta precision, recall, f1, MLE, MAE, RMSE e mAP_sweep. La profondità riporta abs_rel, rmse, delta1, delta2 e delta3. La segmentazione semantica riporta mIoU e pixel_accuracy. Il restauro riporta PSNR e SSIM.

Il risultato JSON porta anche eval_backend, che indica la libreria di valutazione COCO e la versione che hanno prodotto i numeri, così due esecuzioni si possono confrontare sapendo se lo stesso backend ha valutato entrambe.

Soglie

I valori predefiniti qui sono valori di valutazione, non di predizione: conf è 0.001 e iou è 0.6, mentre libreyolo predict usa 0.25 e 0.45. Alzare conf a una soglia di visualizzazione abbassa il recall e con esso la mAP, quindi un numero ottenuto in quel modo non è confrontabile con uno pubblicato.

imgsz non è impostato per default, il che significa la dimensione di input propria del modello. Impostarlo valuta alla dimensione indicata, che è il modo in cui un checkpoint viene misurato fuori dalla sua risoluzione nativa.

Dataset che si scaricano

Uno YAML di dataset il cui campo download è una URL si scarica al primo uso senza alcun permesso aggiuntivo. Uno che porta uno script di download Python incorporato richiede allow_download_scripts=true, e il comando avvisa su stderr che l'esecuzione di codice locale è stata abilitata. I coco8.yaml e coco128.yaml inclusi sono basati su URL, quindi non richiedono nulla.

Output e codici di uscita

stdout porta le metriche; l'avanzamento va su stderr. json=true stampa un singolo oggetto con schema_version, e quiet=true silenzia stderr.

Il codice di uscita è 0 in caso di successo, 2 per un errore d'uso o di configurazione, 3 quando il dataset non viene trovato, 4 quando il modello non può essere caricato e 1 per altri errori a runtime.

Correlato: libreyolo train, che esegue questa stessa valutazione secondo il proprio calendario tramite eval_interval.

Verificato con LibreYOLO v1.5.0.