Переглянути як Markdown

Повна матриця експорту

Підтримка експорту визначається пошуком за трійкою (сімейство, завдання, формат). Ця сторінка описує структуру матриці, правила заповнення комірок без явного запису та спосіб перевірки потрібного поєднання.

Структура матриці

Ключем матриці є (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"))
CLI
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) виконує правила в наведеному порядку. Діє перше правило, що збігається.

  1. Невідоме завдання або формат поза дванадцятьма повертає blocked.
  2. Явний запис (family, task, format) повертається як записано.
  3. Блокування всього сімейства повертає blocked із причиною цього сімейства.
  4. Блокування всього завдання повертає blocked із причиною цього завдання.
  5. Для ncnn сімейство зі списку блокування NCNN повертає blocked.
  6. mnn повертає blocked: контракту середовища виконання для цього сімейства й завдання немає.
  7. rknn повертає blocked. RKNN у цій версії обмежено точними варіантами виявлення, перевіреними в симуляторі: YOLO9-t, YOLO9-E2E-t, YOLO-NAS-s і PicoDet-s на RK3588.
  8. tensorrt і openvino повертають available: шлях перетворення існує, але відповідність у середовищі виконання для цього сімейства й завдання не записано.
  9. tflite, paddle, coreai і coreml повертають blocked, кожен із власною причиною.
  10. Усе інше повертає 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.

Пороги відповідності

Перевірена комірка означає, що експортований артефакт відтворив початкову модель в наведених межах:

Група завданьПоріг
Виявлення та OBBIoU зіставлених рамок вище 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 означає, що відповідність записано з цією формою та точністю. Експорт з іншою роздільною здатністю чи розміром батча все одно створює артефакт, але це вже не та конфігурація, з якої отримано число.

Формати, рівні, порядок резервних правил, блокування завдань і сімейств та блокування NCNN взято з libreyolo/export/support.py; псевдоніми й спільні аргументи взято з libreyolo/export/exporter.py; визначення рівнів взято з docs/adr/0011-export-support-tiers.md; пороги відповідності взято з docs/export_support.md, усе для v1.5.0. Комірки окремих поєднань тут не переписано; запитуйте їх за допомогою фрагмента нижче.