Посмотреть как 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Тип данных для CUDA autocast при half=true: float16 или bfloat16
save_jsonfalseСохранять результаты в JSON формата COCO
save_plotsfalseСохранять графики валидации: метрики, AP по классам, матрица ошибок, примеры
workers4Число процессов загрузчика данных
deviceautoУстройство
projectruns/valКорневой каталог для вывода
nameexpНазвание эксперимента
exist_okfalseПереиспользовать каталог вывода
allow_download_scriptsfalseРазрешить встроенный Python в блоках download в YAML датасета
jsonfalseJSON-вывод в 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, а iou0.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.