libreyolo doctor
Запускає набір перевірок стану датасету для виявлення об'єктів і повідомляє про те, що зашкодило б навчанню: відсутні файли, зіпсовані мітки, пошкоджені зображення, витік між розбиттями та дисбаланс класів.
- Команда
libreyolo doctor- Обов'язково
data- Вивід
- Звіт про знахідки у stdout. Код виходу 1, якщо знайдено помилки
Синтаксис
libreyolo doctor <data.yaml> [key=value ...]Датасет передається позиційно, а як альтернатива приймається data=<path>.
Якщо вказати обидва з різними значеннями, команда завершується з
config_conflict. Решта аргументів має вигляд пари key=value, до того ж
працює й POSIX-форма, тож imgsz=1024 і --imgsz 1024 означають той самий
аргумент.
Аргументи
| Аргумент | За замовчуванням | Призначення |
|---|---|---|
data | Позиційний. YAML датасету у форматі виявлення об'єктів YOLO, наприклад coco8.yaml. Обов'язковий | |
imgsz | 640 | Розмір навчального зображення для перевірок, що спираються на пікселі, як-от дрібні об'єкти |
fast | false | Пропустити декодування зображень, через що вимикаються перевірки на пошкодження, дублікати та витік |
skip | Розділені комами ідентифікатори перевірок або сімейства, які треба пропустити, наприклад images,labels.tiny_object | |
only | Розділені комами ідентифікатори перевірок або сімейства, які треба виконати виключно | |
strict | false | Попередження також впливають на код виходу, для бар'єрів CI |
download | false | Дозволити завантаження датасету за URL, якщо його немає. Ніколи не скрипти |
json | false | Вивід JSON у stdout |
quiet | false | Придушити stderr |
help_json | false | Вивести схему команди у форматі JSON і завершити роботу |
Сімейства перевірок
skip і only приймають або повний ідентифікатор перевірки, або префікс
сімейства, тож images вибирає всі перевірки images.*.
| Сімейство | Охоплює |
|---|---|
config | Сам YAML датасету: відсутні names, nc проти names, відсутні розбиття, path, який не вдається розв'язати, дубльовані назви класів |
files | Відповідність зображень і міток: відсутні мітки, відсутні зображення, осиротілі мітки, непідтримувані розширення, збіги за регістром |
labels | Вміст міток: синтаксис, рядки полігонів, ідентифікатори класів поза діапазоном, координати поза діапазоном, вироджені рамки, дрібні об'єкти, величезні рамки, екстремальні співвідношення сторін, дубльовані рамки, перенасичені зображення, ідентичні файли |
images | Піксельні дані: пошкоджені файли, орієнтація EXIF, незвичні колірні режими, дрібні або екстремальні розміри, однорідні зображення, точні та наближені дублікати |
splits | Витік між розбиттями, точний і наближений |
balance | Розподіл класів: класи з нульовою або малою кількістю екземплярів, дисбаланс, покриття розбиттів, частка фону, перекіс розбиттів |
Приклади
# download=true дозволяє вбудованому coco8.yaml завантажити зображення, якщо їх немає.libreyolo doctor coco8.yaml download=truelibreyolo doctor coco8.yaml download=true fast=truelibreyolo doctor coco8.yaml download=true strict=true json=true \ only=labels,files,configПримітки
Коди виходу
0, якщо помилок не знайдено, 1, якщо будь-яка знахідка є помилкою. З
strict=true попередження також піднімають код виходу до 1, і саме цього
налаштування потребує бар'єр CI.
Проблеми з використанням мають власні коди: 2 для невідомого ідентифікатора
перевірки або сімейства в skip чи only, 3, якщо датасет не вдається
знайти, і 3, якщо датасет не має форми, придатної для виявлення об'єктів.
Вибір перевірок розв'язується до сканування
skip і only звіряються з реєстром перевірок ще до того, як з диска буде
прочитано хоч щось, тож помилка в написанні виявляється одразу, а не після
довгого проходу по зображеннях. Селектор, який ні з чим не збігається,
вважається помилкою, і в повідомленні наведено відомі сімейства.
Якщо поєднання skip, only і fast не залишає жодної перевірки для
виконання, це теж помилка, а не мовчазне проходження.
Завантаження
Датасет не завантажується, доки не вказано download=true, і виконуються лише
завантаження за URL. Вбудований скрипт завантаження на Python у YAML датасету
ця команда не виконує ніколи, хай яким буде прапорець.
Область застосування
Перевірки написано для датасетів виявлення об'єктів. Датасет, мітки якого мають
форму пози, сегментації чи орієнтованих рамок, розпізнається і відхиляється з
data_invalid, замість того щоб оцінюватися за неправильними правилами.
Вивід
Звіт для людини йде у stdout, а json=true замінює його структурованим
об'єктом, що містить підсумкові лічильники, статистику датасету, кожну знахідку
та перелік пропущених перевірок.
Пов'язане: libreyolo train, запуск, перед яким і призначено
виконувати цю команду.