Повна матриця експорту
Підтримка експорту визначається пошуком за трійкою (сімейство, завдання, формат). Ця сторінка описує структуру матриці, правила заповнення комірок без явного запису та спосіб перевірки потрібного поєднання.
Структура матриці
Ключем матриці є (family, task, format). Ключі сімейств є канонічними
назвами з реєстру моделей, ключі завдань походять із libreyolo.tasks.TASKS,
а форматів є дванадцять:
onnx, torchscript, executorch, tensorrt, openvino, paddle, mnn,
rknn, ncnn, tflite, coreml, coreai.
model.export(format=...) додатково приймає два псевдоніми: engine для
tensorrt і litert для tflite, сучасної назви TensorFlow Lite. Формат і
суфікс .tflite не змінилися.
from libreyolo.export.support import ( EXPORT_FORMATS, get_support, validated_alternatives,) print(EXPORT_FORMATS) entry = get_support("yolo9", "detect", "onnx")print(entry.tier, entry.since)print(entry.constraint) print(validated_alternatives("yolo9", "detect"))libreyolo formats --family yolo9 --task detectlibreyolo formats --family yolo9 --task detect --jsonОскільки комірка є функцією трьох ключів, повна сітка велика й змінюється в
кожному випуску. Вона генерується, а не пишеться вручну, і розташована в
docs/export_support.md у репозиторії бібліотеки. Запитуйте матрицю через
Python або CLI замість читання копії.
Три рівні
| Рівень | Значення |
|---|---|
validated | Числова відповідність перевіряється в CI або документованому нічному запуску |
available | Перетворення реалізовано, але докази числової відповідності в середовищі виконання не записано |
blocked | Попередня перевірка спричиняє NotImplementedError із причиною до трасування |
Перевірені й доступні поєднання продовжують роботу без підтвердження чи загального попередження. Записані докази та обмеження залишаються видимими в згенерованій документації. Заблоковане поєднання завершується помилкою до перевірки залежностей, завантаження калібрувальних даних, трасування чи створення артефакту.
Додавання перевіреного запису потребує тесту відповідності й поля since.
SupportEntry містить чотири поля: tier, рядок reason, випуск since і
рядок constraint. Під час інтеграції важливе саме обмеження: позначка діє
лише за названих умов, типово це фіксоване полотно вхідних даних, батч 1, FP32
і вказана версія середовища виконання.
Як визначається комірка
get_support(family, task, fmt) виконує правила в наведеному порядку. Діє
перше правило, що збігається.
- Невідоме завдання або формат поза дванадцятьма повертає
blocked. - Явний запис
(family, task, format)повертається як записано. - Блокування всього сімейства повертає
blockedіз причиною цього сімейства. - Блокування всього завдання повертає
blockedіз причиною цього завдання. - Для
ncnnсімейство зі списку блокування NCNN повертаєblocked. mnnповертаєblocked: контракту середовища виконання для цього сімейства й завдання немає.rknnповертаєblocked. RKNN у цій версії обмежено точними варіантами виявлення, перевіреними в симуляторі: YOLO9-t, YOLO9-E2E-t, YOLO-NAS-s і PicoDet-s на RK3588.tensorrtіopenvinoповертаютьavailable: шлях перетворення існує, але відповідність у середовищі виконання для цього сімейства й завдання не записано.tflite,paddle,coreaiіcoremlповертаютьblocked, кожен із власною причиною.- Усе інше повертає
available: перетворення реалізовано, числову відповідність у середовищі виконання не записано.
Асиметрія кроків 8-10 навмисна. TensorRT і OpenVINO виконують загальне перетворення з ONNX, тому варто спробувати незареєстроване поєднання. TFLite, Paddle, Core AI та CoreML потребують окремого шляху для кожного сімейства, тому незареєстроване поєднання відхиляється, а не пропонується до спроби.
Заблоковані завдання
Наведені завдання заблоковано для будь-якого сімейства без явного запису.
| Завдання | Причина |
|---|---|
ocr | Дві мережі з динамічним обрізанням кожної області не відповідають контракту експорту одного графа |
point | Сімейство не під'єднано до спільного контракту теплової карти точок і декодування піків у бекенді |
semantic | Сімейство не під'єднано до спільного контракту щільних логітів і argmax у бекенді |
mesh | Виходи графа сітки тіла, метадані й контракт середовища виконання не визначено |
normal | Сімейство не під'єднано до контракту щільних одиничних нормалей на фіксованому полотні та повторної нормалізації в бекенді |
panoptic | Паноптичний експорт не має контракту середовища виконання бекенда |
gaze | Сімейство не під'єднано до спільного контракту логітів двох голів і декодування математичного сподівання в бекенді |
Явний запис перевизначає ці правила, тому, наприклад, під'єднане семантичне сімейство все одно експортується.
Заблоковані сімейства
| Сімейство | Заблоковано для |
|---|---|
depth_anything3 | Кожного формату; його граф глибини не входить до контракту експортованого середовища виконання |
domedetr | Кожного формату. PAQI задає кількість запитів для кожного зображення, тому трасований граф дійсний лише для зображення, на якому його трасували. Використовуйте D-FINE як придатний до експорту DETR |
eomt | Експорту сегментації екземплярів і паноптичної сегментації, що не мають розбору в середовищі виконання |
l2cs | Усього, крім ONNX, TorchScript, ExecuTorch, TensorRT і OpenVINO |
hrnet | Усього, крім ONNX, TorchScript, OpenVINO і TensorRT |
sam, sam2, sam3, edgetam, mobilesam | Кожного формату; експорт моделі з підказками не входить до контракту середовища виконання v1 |
grounding_dino, owlv2, omdet_turbo, ov_deim | Кожного формату; експорт для середовища виконання з відкритим словником не входить до v1 |
florence2, kosmos2, lfm2vl, internvl3, qwen3vl, smolvlm2, locateanything | Кожного формату; експорт генеративної VLM не входить до v1 |
PicoSAM3 є винятком серед моделей із підказками: він експортує власну мережу необробленої ROI розміром 96 пікселів до ONNX.
Заблоковано для NCNN
Декодерам у стилі DETR потрібні операції вибірки, яких не реалізує NCNN, тому
наведені сімейства заблоковано для ncnn, якщо явний запис не вказує інше:
Deformable DETR, DETR, DINO-DETR, D-FINE, LW-DETR, DEIM, DEIMv2, RT-DETR,
RT-DETRv2, RT-DETRv4, RF-DETR і EC. У повідомленні про відмову як альтернативи
названо ONNX, OpenVINO, TorchScript і TensorRT.
Пороги відповідності
Перевірена комірка означає, що експортований артефакт відтворив початкову модель в наведених межах:
| Група завдань | Поріг |
|---|---|
| Виявлення та OBB | IoU зіставлених рамок вище 0.95, MAE оцінок нижче 0.01 |
| Сегментація та паноптична сегментація | IoU масок вище 0.95 |
| Поза | L2 ключових точок нижче 2 пікселів із початковою роздільною здатністю |
| Класифікація | Косинусна подібність логітів вище 0.999 і однаковий клас top-1 |
| Глибина та відновлення | PSNR вище 40 dB порівняно з початковим виводом |
| Нормалі поверхні | Середня кутова помилка нижче 0.1 градуса |
| Точка | Розташування піків збігається в межах однієї комірки виходу |
Рядки запитів DETR є невпорядкованою множиною, тому відповідність сімейства DETR вирівнює рядки запитів як множину, а не за позиціями.
Експорт
from libreyolo import LibreYOLOfrom libreyolo.export.support import get_support model = LibreYOLO("LibreYOLO9t.pt")print(model.export(format="onnx")) # Перевірити до виклику: заблоковане поєднання спричиняє помилку під час попередньої перевірки,# а повідомлення містить цю причину.blocked = get_support("domedetr", "detect", "onnx")print(blocked.tier)print(blocked.reason)Заблоковане поєднання спричиняє NotImplementedError під час попередньої
перевірки, а повідомлення містить записану причину.
validated_alternatives(family, task) повертає формати, перевірені для цієї
пари, що корисно виводити поруч із відмовою.
Спільні для всіх експортерів аргументи наведено на сторінці API моделі. Аргументи окремих форматів розміщено на сторінках відповідних форматів.
Тлумачення обмеження
Перевірена комірка стверджує щось про одну виміряну конфігурацію, а не про
формат загалом. Рядок обмеження на кшталт
FP32, batch 1, fixed 520x520 input означає, що відповідність записано з цією
формою та точністю. Експорт з іншою роздільною здатністю чи розміром батча все
одно створює артефакт, але це вже не та конфігурація, з якої отримано число.