OpenVINO
OpenVINO IR є форматом середовища виконання Intel, що складається з графа model.xml і блоба ваг model.bin. LibreYOLO експортує проміжний файл ONNX, перетворює його за допомогою ov.convert_model і записує metadata.yaml у той самий каталог.
- Прапорець
export(format="openvino")- Створює
- Каталог із model.xml, model.bin і metadata.yaml
- Додатково
pip install "libreyolo[onnx,openvino]"- Повторне завантаження
LibreYOLO("weights/LibreYOLO9t_openvino")- Форми
- Відповідають проміжному файлу ONNX: динамічний батч із dynamic=True
- Точність
- FP32, стиснення ваг FP16 (half=True), INT8 через NNCF (int8=True із data=)
Встановлення
# IR перетворюється з проміжного файлу ONNX, тому потрібні обидва набори залежностей.pip install "libreyolo[onnx,openvino]"pip install nncfПеретворення проходить через проміжний файл ONNX, тому набір залежностей onnx
є обов'язковим, а не додатковим. NNCF установлюється окремо й потрібен лише для
int8=True.
Експорт
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # Створює каталог weights/LibreYOLO9t_openvinopath = model.export(format="openvino")print(path)libreyolo export --model LibreYOLO9t.pt --format openvinomodel.export( format="openvino", imgsz=640, batch=1, dynamic=False, # True зберігає динамічну вісь батча в IR half=False, # True зберігає ваги FP16 int8=False, # True запускає квантування NNCF після навчання data=None, # обов'язково, коли int8=True output_path=None, # None створює weights/<stem>_openvino)Артефакт є каталогом, а не файлом. weights/LibreYOLO9t_openvino містить
model.xml, model.bin і metadata.yaml, а з half=True перед суфіксом
вставляється _fp16. Переміщуйте або копіюйте весь каталог, оскільки ці три
файли утворюють один артефакт.
half=True задає compress_to_fp16 під час збереження. Це стиснення ваг у IR,
а не зміна точності інференсу, яку пристрій вибирає під час виконання.
INT8
from libreyolo import LibreYOLO LibreYOLO("LibreYOLO9t.pt").export( format="openvino", int8=True, data="coco128.yaml", # обов'язково: для цього формату немає типового значення fraction=1.0,)int8=True запускає квантування NNCF після навчання з набором mixed через
завантажувач калібрувальних даних LibreYOLO. Параметр data обов'язковий, адже
для цього формату немає резервного набору з восьми зображень. Якщо NNCF не
встановлено, виникає ImportError із назвою команди встановлення.
Запуск артефакту
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreYOLO9t_openvino")result = model.predict(SAMPLE_IMAGE)print(result.boxes.xyxy[:3])from libreyolo import LibreYOLO # "auto" і "cpu" зіставляються з CPU, "gpu" і "cuda" зіставляються з GPU,# усе інше передається у верхньому регістрі, наприклад "npu" -> NPU.model = LibreYOLO("weights/LibreYOLO9t_openvino", device="gpu")import numpy as npimport openvino as ovimport yaml core = ov.Core()print(core.available_devices) compiled = core.compile_model("weights/LibreYOLO9t_openvino/model.xml", "CPU")outputs = compiled(np.zeros((1, 3, 640, 640), dtype=np.float32))print([tensor.shape for tensor in outputs.values()]) # Назви класів, завдання й розмір входу зберігаються в metadata.yaml поряд з IR.meta = yaml.safe_load(open("weights/LibreYOLO9t_openvino/metadata.yaml"))print(meta["model_family"], meta["task"], meta["names"]) # На цьому шляху попередня та подальша обробка покладаються на вас.LibreYOLO() розпізнає будь-який каталог із model.xml і повертає той самий
об'єкт Results, що й контрольна точка, читаючи назви класів, завдання, розмір
входу та схему пози з metadata.yaml.
Рядок пристрою зіставляється, а не передається безпосередньо. auto та cpu
компілюють для CPU, gpu та cuda компілюють для GPU, а будь-яке інше значення
перетворюється на верхній регістр і передається OpenVINO. Саме так вибирають NPU.
Третій фрагмент призначено для читачів без установленої LibreYOLO. На цьому
шляху попередня обробка, декодування, NMS і масштабування координат покладаються
на вас, а назви класів зберігаються лише в metadata.yaml.
Обмеження
IR без metadata.yaml усе одно завантажується, але тоді бекенд використовує
резервні 80 класів і завдання виявлення, що неправильно для всіх інших випадків.
Зберігайте каталог цілісним.
Перед трасуванням блокуються: сегментація YOLO9, сегментація RTMDet-Ins,
виявлення SSD, Faster R-CNN і RetinaNet, а також matting за допомогою BiRefNet
або FeyNobg, де OpenVINO 2026.2 не може знизити стандартну операцію ONNX
DeformConv-19 зі спільного декодера matte.
Якщо комбінацію не валідовано й не заблоковано, шлях конвертера доступний, але
проєкт не має записаного паритету для середовища виконання OpenVINO. Для кількох
комбінацій валідацію записано з явним контекстом. Наприклад, семантичну
сегментацію DeepLabV3 валідовано з фіксованим входом 520 на 520 у OpenVINO 2026.2
із типовою точністю інференсу на CPU, а оцінювання погляду L2CS із фіксованим
кадруванням обличчя 448 на 448. libreyolo formats виводить цей контекст для
кожної комбінації.
Повну таблицю сімейств і завдань наведено в матриці експорту. Для однієї комбінації:
libreyolo formats --family yolo9 --task detect