Переглянути як Markdown

libreyolo val

Оцінює одну модель на одному спліті датасету і виводить метрики. Набір метрик залежить від задачі моделі, а самі числа є тими, з яких складається рядок бенчмарку.

Команда
libreyolo val
Обов'язкові
model, data
Вивід
Метрики у stdout. Графіки та COCO JSON у runs/val/exp, якщо їх запитано

Синтаксис

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

Аргументи задаються парами key=value, форма POSIX теж працює, тож batch=8 і --batch 8 означають той самий аргумент.

Аргументи

АргументТиповоЗначення
modelШлях до файлу ваг або назва моделі в CLI. Обов'язковий
dataШлях до YAML датасету (формат YOLO, напр. coco8.yaml). Обов'язковий
data_dirКаталог датасету напряму, в обхід шляху з YAML
splitvalСпліт датасету: val, test, train
batch16Розмір батча
imgszРозмір зображення: 640 (квадрат) або 480x640 (HxW). Якщо не задано, власний вхідний розмір моделі
conf0.001Поріг впевненості
iou0.6Поріг IoU для NMS
max_det300Максимум передбачень на зображення після NMS
eval_max_detОбмеження оцінювача COCO. Якщо не задано, діє домовленість AP@100 з pycocotools
faster_coco_evaltrueВикористання швидшого C++ бекенда faster-coco-eval для метрик COCO, якщо він встановлений; інакше pycocotools
halffalseІнференс у FP16
amp_dtypefloat16Тип autocast CUDA при half=true: float16 або bfloat16
save_jsonfalseЗбереження результатів JSON у форматі COCO
save_plotsfalseЗбереження графіків валідації: метрики, AP за класами, матриця плутанини, приклади
workers4Робочі процеси завантажувача даних
deviceautoПристрій
projectruns/valКореневий каталог для виводу
nameexpНазва експерименту
exist_okfalseПовторне використання каталогу виводу
allow_download_scriptsfalseДозвіл на вбудований код Python у блоках download у YAML датасету
jsonfalseВивід JSON у stdout
quietfalseПридушення stderr
verbosetrueДокладний вивід
help_jsonfalseВивести схему команди як JSON і завершити роботу

Приклади

Базовий виклик
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml
Графіки та COCO JSON
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
Машинозчитуваний формат
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml json=true quiet=true

Примітки

Що це за метрики

Набір, який виводиться, залежить від задачі моделі, і вивід JSON використовує ті самі ключі.

Виявлення об'єктів, сегментація та орієнтовані рамки повертають mAP50, mAP50_95, precision і recall. Якщо модель передбачає більше ніж один вид виводу, поряд з'являються групи за видами: box_metrics, mask_metrics і obb_metrics, кожна з тими самими чотирма ключами.

Класифікація повертає accuracy_top1 і accuracy_top5. Точкове виявлення повертає precision, recall, f1, MLE, MAE, RMSE і mAP_sweep. Оцінювання глибини повертає abs_rel, rmse, delta1, delta2 і delta3. Семантична сегментація повертає mIoU і pixel_accuracy. Відновлення зображення повертає PSNR і SSIM.

Результат JSON містить також eval_backend з назвою та версією бібліотеки оцінювання COCO, яка порахувала ці числа, тож два запуски можна порівнювати, знаючи, чи обидва оцінено одним і тим самим бекендом.

Пороги

Типові значення тут розраховані на оцінювання, а не на передбачення: conf дорівнює 0.001, а iou дорівнює 0.6, тоді як libreyolo predict використовує 0.25 і 0.45. Підвищення conf до порога відображення знижує повноту, а разом з нею і mAP, тож отримане так число не можна порівнювати з опублікованим.

imgsz типово не задано, тобто береться власний вхідний розмір моделі. Якщо його задати, оцінювання відбувається на вказаному розмірі, і саме так контрольну точку вимірюють поза її рідною роздільною здатністю.

Датасети, які завантажуються

YAML датасету, у якого поле download містить URL, завантажує дані під час першого використання без додаткового дозволу. Той, що містить вбудований скрипт завантаження на Python, потребує allow_download_scripts=true, і команда попереджає у stderr, що виконання локального коду увімкнено. Вбудовані coco8.yaml і coco128.yaml побудовані на URL, тож їм нічого не потрібно.

Вивід і коди виходу

У stdout ідуть метрики, а прогрес іде у stderr. json=true виводить один об'єкт із полем schema_version, а quiet=true вимикає stderr.

Код виходу дорівнює 0 в разі успіху, 2 при помилці використання або конфігурації, 3 коли датасет не вдається знайти, 4 коли не вдається завантажити модель, і 1 для інших збоїв під час виконання.

Пов'язане: libreyolo train, яка запускає це саме оцінювання за власним розкладом через eval_interval.

Перевірено з LibreYOLO v1.5.0.