libreyolo val
Оцінює одну модель на одному спліті датасету і виводить метрики. Набір метрик залежить від задачі моделі, а самі числа є тими, з яких складається рядок бенчмарку.
- Команда
libreyolo val- Обов'язкові
model, data- Вивід
- Метрики у stdout. Графіки та COCO JSON у runs/val/exp, якщо їх запитано
Синтаксис
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 | |
split | val | Спліт датасету: val, test, train |
batch | 16 | Розмір батча |
imgsz | Розмір зображення: 640 (квадрат) або 480x640 (HxW). Якщо не задано, власний вхідний розмір моделі | |
conf | 0.001 | Поріг впевненості |
iou | 0.6 | Поріг IoU для NMS |
max_det | 300 | Максимум передбачень на зображення після NMS |
eval_max_det | Обмеження оцінювача COCO. Якщо не задано, діє домовленість AP@100 з pycocotools | |
faster_coco_eval | true | Використання швидшого C++ бекенда faster-coco-eval для метрик COCO, якщо він встановлений; інакше pycocotools |
half | false | Інференс у FP16 |
amp_dtype | float16 | Тип autocast CUDA при half=true: float16 або bfloat16 |
save_json | false | Збереження результатів JSON у форматі COCO |
save_plots | false | Збереження графіків валідації: метрики, AP за класами, матриця плутанини, приклади |
workers | 4 | Робочі процеси завантажувача даних |
device | auto | Пристрій |
project | runs/val | Кореневий каталог для виводу |
name | exp | Назва експерименту |
exist_ok | false | Повторне використання каталогу виводу |
allow_download_scripts | false | Дозвіл на вбудований код Python у блоках download у YAML датасету |
json | false | Вивід JSON у stdout |
quiet | false | Придушення stderr |
verbose | true | Докладний вивід |
help_json | false | Вивести схему команди як JSON і завершити роботу |
Приклади
libreyolo val model=LibreYOLO9s.pt data=coco8.yamllibreyolo 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=truelibreyolo 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.