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 | Тип данных для CUDA autocast при 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.