EoMT

Мережа сегментації на основі звичайного візуального трансформера без спеціалізованого піксельного декодера: маски передбачають додаткові навчені запити, додані до самого кодера. LibreYOLO підтримує її для семантичної сегментації, сегментації екземплярів і паноптичної сегментації.

Задачі
semantic, instance segmentation, panoptic
Розміри
s, b, l at 512 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
EoMT, автори: TU Eindhoven, Mobile Perception Systems Lab, ліцензія MIT. Стаття, джерело
Ліцензії
Код: MIT, ваги: MIT. Комерційне використання

Встановлення

EoMT не потребує додаткових пакетів. Усі його імпорти входять до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face та кешуються локально. Суфікс завдання в назві файлу (-sem, -seg, -panoptic) вибирає завдання, а LibreYOLO() визначає його за назвою, тому аргумент task= не потрібен.

Семантична сегментація
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreEoMTl-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # ідентифікатори класів (H, W)print(mask.classes)      # відсортовані ідентифікатори класів, наявних на зображенні
Сегментація екземплярів
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Суфікс -seg у назві файлу вибирає завдання екземплярів, тому# аргумент завдання тут не потрібен.model = LibreYOLO("LibreEoMTl-seg.pt")result = model(SAMPLE_IMAGE, save=True) print(result.boxes.xyxy)print(result.masks.data.shape)
Паноптична сегментація
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreEoMTl-panoptic.pt")result = model(SAMPLE_IMAGE, save=True) pan = result.panopticprint(pan.data.shape)       # ідентифікатори сегментів (H, W)print(pan.segments_info)    # [{"id": ..., "category_id": ...}, ...]
CLI
libreyolo predict model=LibreEoMTl-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Семантична сегментація заповнює result.semantic_mask, масив ідентифікаторів класів форми (H, W) у .data. Сегментація екземплярів заповнює result.boxes і result.masks тієї самої форми, яку повертають інші сімейства сегментації. Паноптична сегментація заповнює result.panoptic: карту ідентифікаторів сегментів форми (H, W) у .data та .segments_info, список словників {"id", "category_id"}, по одному на сегмент. Параметр conf фільтрує вибір запитів; iou не впливає на семантичне завдання, оскільки воно вибирає argmax для кожного пікселя без етапу NMS. Джерела, потокове оброблення та роботу з результатами описано на сторінці передбачення.

Варіанти

Доступні три розміри кодера, s/b/l, усі на основі DINOv2. Контрольну точку семантичної сегментації навчено на ADE20K із 512 px; контрольні точки сегментації екземплярів і паноптичної сегментації навчено на COCO із 640 px, а другу контрольну точку сегментації екземплярів навчено із 1280 px. Першоджерело публікує ваги сегментації екземплярів DINOv2 лише для розміру l; s і b опубліковано тільки для семантичної та паноптичної сегментації. Варіанти EoMT на основі DINOv3 існують у першоджерелі, але не постачаються тут, оскільки залежать від закритих некомерційних ваг DINOv3.

LibreYOLO не навчає EoMT: train() спричиняє NotImplementedError для цього сімейства, яке наведений вище рівень підтримки позначає як призначене лише для інференсу.

Валідація

Метод val() виконує диспетчеризацію за завданням. Семантична сегментація повертає metrics/mIoU і metrics/pixel_accuracy. Сегментація екземплярів повертає ті самі ключі mAP масок і рамок, що й інші сімейства сегментації. Паноптична сегментація повертає Panoptic Quality як metrics/PQ, розділену на metrics/SQ (якість сегментації) та metrics/RQ (якість розпізнавання), а також metrics/PQ_things і metrics/PQ_stuff.

Семантична сегментація
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
Сегментація екземплярів
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-seg.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95(M)"])   # маскиprint(metrics["metrics/mAP50-95(B)"])   # рамки
Паноптична сегментація
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-panoptic.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/PQ"])print(metrics["metrics/SQ"], metrics["metrics/RQ"])
CLI
libreyolo val model=LibreEoMTl-sem.pt data=my-dataset.yaml

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: підтримуєтьсяsemantic to TorchScript: підтримуєтьсяsemantic to ExecuTorch: не підтримуєтьсяsemantic to TensorRT: підтримуєтьсяsemantic to OpenVINO: підтримуєтьсяsemantic to Paddle: не підтримуєтьсяsemantic to MNN: не підтримуєтьсяsemantic to RKNN: не підтримуєтьсяsemantic to ncnn: не підтримуєтьсяsemantic to TFLite: не підтримуєтьсяsemantic to CoreML: не підтримуєтьсяsemantic to Core AI: не підтримується
Instance segmentationInstance segmentation to ONNX: не підтримуєтьсяInstance segmentation to TorchScript: не підтримуєтьсяInstance segmentation to ExecuTorch: не підтримуєтьсяInstance segmentation to TensorRT: не підтримуєтьсяInstance segmentation to OpenVINO: не підтримуєтьсяInstance segmentation to Paddle: не підтримуєтьсяInstance segmentation to MNN: не підтримуєтьсяInstance segmentation to RKNN: не підтримуєтьсяInstance segmentation to ncnn: не підтримуєтьсяInstance segmentation to TFLite: не підтримуєтьсяInstance segmentation to CoreML: не підтримуєтьсяInstance segmentation to Core AI: не підтримується
panopticpanoptic to ONNX: не підтримуєтьсяpanoptic to TorchScript: не підтримуєтьсяpanoptic to ExecuTorch: не підтримуєтьсяpanoptic to TensorRT: не підтримуєтьсяpanoptic to OpenVINO: не підтримуєтьсяpanoptic to Paddle: не підтримуєтьсяpanoptic to MNN: не підтримуєтьсяpanoptic to RKNN: не підтримуєтьсяpanoptic to ncnn: не підтримуєтьсяpanoptic to TFLite: не підтримуєтьсяpanoptic to CoreML: не підтримуєтьсяpanoptic to Core AI: не підтримується

Наразі експортується лише семантичне завдання: для сегментації екземплярів і паноптичної сегментації виклик export() спричиняє NotImplementedError, оскільки їхній вихід запитів і масок ще не має контракту експорту для середовища виконання. Експортований семантичний артефакт повторно завантажується через LibreYOLO() за суфіксом файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий Results.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreEoMTl-sem.pt format=onnxlibreyolo export model=LibreEoMTl-sem.pt format=tensorrt half=True
Використати експортований файл
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика виконує маршрутизацію за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreEoMTl-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

Контрольні точки

Усі опубліковані файли ваг для цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
semantic
LibreEoMTl-sem.pt512mit
Instance segmentation
LibreEoMTl-seg.pt640mit
LibreEoMTl-seg-1280.ptmit
panoptic
LibreEoMTs-panoptic.ptmit
LibreEoMTb-panoptic.ptmit
LibreEoMTl-panoptic.ptmit

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
EoMT, TU Eindhoven, Mobile Perception Systems Lab
Ліцензія першоджерела
MIT
Джерело першоджерела
github.com/tue-mps/eomt
Код LibreYOLO
MIT
Ваги
MIT, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO ships only the DINOv2-backed EoMT checkpoints, sizes s/b/l; the DINOv3 EoMT variants are excluded because they depend on gated non-commercial DINOv3 weights. DINOv2 itself is Apache-2.0. The semantic checkpoint is trained on ADE20K and the instance and panoptic checkpoints on COCO; both are research datasets, and users remain responsible for dataset-license compliance when validating or fine-tuning against them.

Цитування

@inproceedings{kerssies2025eomt,
  author    = {Kerssies, Tommie and Cavagnero, Niccol\`{o} and Hermans, Alexander and Norouzi, Narges and Averta, Giuseppe and Leibe, Bastian and Dubbelman, Gijs and {de Geus}, Daan},
  title     = {{Your ViT is Secretly an Image Segmentation Model}},
  booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year      = {2025},
}

Скопійовано з блоку цитування авторів на сторінці github.com/tue-mps/eomt#bibtex-citation.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.