Рівні стабільності
LibreYOLO використовує слово рівень для трьох окремих понять: доказів на користь шляху експорту, контракту викликів сімейства моделей і групи покриття, до якої зараховано сімейство. Тут визначено кожне поняття та його межі.
Рівні підтримки експорту
Цей рівень визначає, чи буде виклик успішним. Він застосовується до трійки
(family, task, format), і кожне поєднання має рівно одне значення.
| Рівень | Значення | Що відбувається під час export() |
|---|---|---|
validated | Числову відповідність перевіряє CI або задокументований нічний запуск | Виконується |
available | Перетворення реалізовано, але докази числової відповідності в середовищі виконання ще не зафіксовано | Виконується |
blocked | Підтримуваного шляху немає | Під час попередньої перевірки спричиняє NotImplementedError із поясненням |
validated і available виконуються без підтвердження чи загального
попередження. Відмінність полягає в доказах, а не в дозволі: запис
validated має перевірку відповідності та випуск since, а
available поки що не має. Наприклад, перетворення CoreML без запуску
передбачення в macOS є доступним, але не перевіреним.
Заблоковане поєднання завершується помилкою до перевірки залежностей, завантаження калібрування, трасування чи створення артефакту, тому частковий файл не записується.
Кожна перевірена комірка має обмеження, яке описує конфігурацію виміряної відповідності, зазвичай фіксоване полотно входу, пакет 1, FP32 і названу версію середовища виконання. Сприймайте його як твердження про цю конфігурацію, а не про формат загалом. Правила заповнення комірок без явного запису наведено на сторінці матриці експорту.
from libreyolo.models.registry import GROUPS, group_offrom libreyolo.export.support import get_support, validated_alternatives family = "yolo9" group = group_of(family)print(group, GROUPS[group]) print(get_support(family, "detect", "onnx").tier)print(validated_alternatives(family, "detect"))Рівні API
Цей рівень визначає вигляд виклику. Сімейство належить рівно до одного рівня, вибраного за контрактом викликів, а не за архітектурою.
| Рівень | Фабрика | Контракт |
|---|---|---|
| Фабрика детекторів | LibreYOLO | Один прямий прохід без підказки повертає всі знайдені об'єкти з каліброваними оцінками. Учасники реєструються самі через розпізнавання контрольної точки |
| Сегментація з підказками | LibreSAM | Прямий прохід не має сенсу без просторової або концептуальної підказки для кожного зображення під час виклику. Інтерактивний і зі станом: один раз закодувати, багато разів підказувати |
| Виявлення з відкритим словником | LibreOpenVocab | Дискримінативні детектори з текстовими умовами. Список класів є підказкою, яку задає set_classes |
| Моделі зору й мови | LibreVLM | Генеративна модель, якою керують як детектором. Список класів є підказкою, а впевненість, умовним значенням |
Три суміжні рівні навмисно не реєструються у фабриці детекторів, тому
LibreYOLO("some-alias") до них не доходить. Вони завантажуються за
псевдонімом розміру з автоматичним отриманням, а не через розпізнавання
контрольної точки.
Усі чотири повертають однаковий Results, тому подальший код для них не
змінюється. Відрізняється доступність методів: суміжні рівні спричиняють
NotImplementedError для train(), val() і export(), а рівні
SAM і відкритого словника також для track(). Кожна сторінка рівня
перелічує власні винятки.
Групи покриття
Ця класифікація визначає, які сімейства включає міжсімейний тестовий запуск,
і саме її читач найімовірніше побачить на сторінці моделі. Кожне
зареєстроване сімейство зараховано рівно до однієї групи, а тест завершується
помилкою, якщо зареєстрованого сімейства немає в розподілі. GROUPS у
libreyolo/models/registry.py, це джерело стовпця Значення нижче;
MODEL_GROUPS у тому самому файлі призначає кожне сімейство, а стовпець
Сімейства безпосередньо підраховує цей розподіл. Стовпець Мітка містить
коротшу назву тієї самої групи, яку сайт використовує в заголовку сторінки
моделі.
| Група | Мітка | Сімейств | Значення |
|---|---|---|---|
g0 | Flagship | 2 | Основні опорні сімейства, обов'язкові для покриття спільних функцій |
g1 | Core | 10 | Набір покриття детекторів із навчанням |
g2 | Supported | 14 | Додатковий набір покриття сімейств із навчанням |
g3 | Inference only | 35 | Сімейства без реалізації навчання |
g4 | Museum | 5 | Історичні сімейства з покриттям інференсу |
s | Sibling tier | 21 | Суміжні API (SAM, відкритий словник, VLM, zero-shot), що перевіряються окремо |
Разом це 87 сімейств у шести групах. Одна лише g3 містить більше
сімейств, ніж усі інші групи разом, оскільки більшість реєстру становлять
лінії лише для інференсу та музейне покриття, а не детектори, що активно
навчаються.
Для читача, який вибирає модель, група вказує, де очікувати інженерної уваги,
а не точність сімейства. У g0 і g1 нову функцію проєктують і
впроваджують першою; g2 підтримується справною в CI, але функція
потрапляє туди за можливості, а не в тій самій хвилі випуску. g3
означає відсутність, а не обмеження: передбачення, валідація та, якщо
сімейство підтримує, експорт і далі працюють, а train() для сімейства
g3 або g4 спричиняє NotImplementedError із поясненням замість
неповної неявної роботи. Сімейства s взагалі не беруть участі в цьому
компромісі, оскільки завантажуються через власну фабрику, а не
LibreYOLO(). У основних поняттях пояснено місце групи
поруч із задачею, сімейством і розміром під час читання імені контрольної
точки.
Група сама собою не надає й не обмежує можливості для користувача. Підтримку
визначають реалізований API сімейства та перевірки можливостей конкретного
формату, а не належність до групи. Групи класифікують сімейства, а не задачі,
тому запуск покриття для задачі явно називає її, як у "g1 detect".
У двох місцях група читається під час виконання, а не лише в тестах.
collect_model_inventory() у libreyolo/models/inventory.py додає
групу до кожного запису переліку CLI, а pretrained=False запускає
спеціальний шлях повторної ініціалізації з нуля лише для сімейств у g0
і g1. Поза цими двома групами перевірка в
libreyolo/models/base/model.py повністю пропускається, тому
pretrained=False доходить до власного train() сімейства як звичайне
ключове слово.
Навчання
Сімейство у g3 або g4 не має реалізації навчання, і виклик
train() спричиняє помилку. Це властивість коду сімейства, а не групи:
група фіксує цей факт, а не спричиняє його.
Для сімейства з навчанням застосування окремого параметра аугментації до
конвеєра є іншим питанням із власним набором із трьох значень: used,
gated_by_mosaic і ignored. Дивіться
матрицю аугментацій.
Чого рівень не повідомляє
Рівень не є твердженням про точність. Перевірений експорт означає, що артефакт відтворює нативну модель у межах указаного порога; він нічого не говорить про результат нативної моделі на датасеті. Показники бенчмарків наведено на сторінках моделей.
Рівень також не є твердженням про ліцензію. Ліцензії ваг відрізняються в межах сімейства, а визначальним є репозиторій конкретної контрольної точки. Належність сімейства до фабрики детекторів нічого не говорить про дозвіл на комерційне використання його опублікованих ваг.