EoMT

Jaringan segmentasi yang dibangun di atas vision transformer biasa tanpa pixel decoder khusus: query terlatih tambahan yang disisipkan ke encoder itu sendirilah yang memprediksi mask. LibreYOLO mendukungnya untuk segmentasi semantik, instance dan panoptik.

Task
semantic, instance segmentation, panoptic
Ukuran
s, b, l at 512 px
Instalasi
pip install libreyolo
Tier dukungan
Hanya inferensi, sejak v. Hanya prediksi, validasi, dan ekspor. Fitur pelatihan tidak berlaku.
Proyek upstream
EoMT oleh TU Eindhoven, Mobile Perception Systems Lab, MIT. Makalah, sumber
Lisensi
Kode MIT, bobot MIT. Penggunaan komersial

Instalasi

EoMT tidak memerlukan extra opsional. Semua yang diimpornya sudah ada di instalasi dasar.

bash
pip install libreyolo

Prediksi

Bobot diunduh dari Hugging Face saat pertama kali dipakai dan disimpan di cache lokal. Sufiks task pada nama berkas (-sem, -seg, -panoptic) menentukan task, dan LibreYOLO() menyimpulkannya dari nama berkas itu sehingga argumen task= tidak diperlukan.

Semantik
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) id kelasprint(mask.classes)      # id kelas yang ada di gambar, terurut
Segmentasi instance
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Sufiks -seg pada nama berkas memilih task instance, jadi argumen# task tidak diperlukan di sini.model = LibreYOLO("LibreEoMTl-seg.pt")result = model(SAMPLE_IMAGE, save=True) print(result.boxes.xyxy)print(result.masks.data.shape)
Panoptik
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) id segmenprint(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

Segmentasi semantik mengisi result.semantic_mask, yaitu array (H, W) berisi id kelas di .data. Segmentasi instance mengisi result.boxes dan result.masks, bentuk yang sama seperti yang dikembalikan family segmentasi lain. Segmentasi panoptik mengisi result.panoptic: peta id segmen (H, W) di .data, ditambah .segments_info, yaitu daftar dict {"id", "category_id"}, satu untuk setiap segmen. conf menyaring pemilihan query; iou tidak berpengaruh pada task semantik, karena task itu melakukan argmax per piksel tanpa langkah NMS. Lihat prediksi untuk sumber, streaming dan penanganan hasil.

Varian

Tiga ukuran encoder, s/b/l, semuanya bertumpu pada DINOv2. Checkpoint semantik dilatih pada ADE20K di 512 px; checkpoint instance dan panoptik dilatih pada COCO di 640 px, ditambah satu checkpoint instance kedua yang dilatih di 1280 px. Upstream hanya merilis bobot segmentasi instance DINOv2 pada ukuran l; s dan b dipublikasikan untuk semantik dan panoptik saja. Varian EoMT yang bertumpu pada DINOv3 ada di upstream, tetapi tidak disertakan di sini karena bergantung pada bobot DINOv3 non-komersial yang aksesnya dibatasi.

LibreYOLO tidak melatih EoMT: train() memunculkan NotImplementedError untuk family ini, dan tingkat dukungan di atas menandainya sebagai inferensi saja.

Validasi

val() memilih jalur sesuai task. Semantik mengembalikan metrics/mIoU dan metrics/pixel_accuracy. Segmentasi instance mengembalikan kunci mAP mask dan box yang sama seperti family segmentasi lain. Panoptik mengembalikan Panoptic Quality sebagai metrics/PQ, yang dipecah menjadi metrics/SQ (segmentation quality) dan metrics/RQ (recognition quality), ditambah metrics/PQ_things dan metrics/PQ_stuff.

Semantik
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"])
Segmentasi instance
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-seg.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95(M)"])   # maskprint(metrics["metrics/mAP50-95(B)"])   # box
Panoptik
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

Ekspor

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: didukungsemantic to TorchScript: didukungsemantic to ExecuTorch: tidak didukungsemantic to TensorRT: didukungsemantic to OpenVINO: didukungsemantic to Paddle: tidak didukungsemantic to MNN: tidak didukungsemantic to RKNN: tidak didukungsemantic to ncnn: tidak didukungsemantic to TFLite: tidak didukungsemantic to CoreML: tidak didukungsemantic to Core AI: tidak didukung
Instance segmentationInstance segmentation to ONNX: tidak didukungInstance segmentation to TorchScript: tidak didukungInstance segmentation to ExecuTorch: tidak didukungInstance segmentation to TensorRT: tidak didukungInstance segmentation to OpenVINO: tidak didukungInstance segmentation to Paddle: tidak didukungInstance segmentation to MNN: tidak didukungInstance segmentation to RKNN: tidak didukungInstance segmentation to ncnn: tidak didukungInstance segmentation to TFLite: tidak didukungInstance segmentation to CoreML: tidak didukungInstance segmentation to Core AI: tidak didukung
panopticpanoptic to ONNX: tidak didukungpanoptic to TorchScript: tidak didukungpanoptic to ExecuTorch: tidak didukungpanoptic to TensorRT: tidak didukungpanoptic to OpenVINO: tidak didukungpanoptic to Paddle: tidak didukungpanoptic to MNN: tidak didukungpanoptic to RKNN: tidak didukungpanoptic to ncnn: tidak didukungpanoptic to TFLite: tidak didukungpanoptic to CoreML: tidak didukungpanoptic to Core AI: tidak didukung

Saat ini hanya task semantik yang bisa diekspor: segmentasi instance dan panoptik yang memanggil export() akan mendapat NotImplementedError, karena keluaran query-mask keduanya belum punya kontrak ekspor untuk runtime. Artefak semantik hasil ekspor dimuat kembali lewat LibreYOLO() berdasarkan sufiks berkasnya, jadi berkas .onnx atau .engine berperilaku seperti checkpoint dan mengembalikan Results yang sama.

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
Memakai berkas hasil ekspor
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory memilih rute berdasarkan sufiks berkas, jadi artefak hasil# ekspor dimuat seperti checkpoint biasa dan mengembalikan objek# Results yang sama.model = LibreYOLO("LibreEoMTl-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

Checkpoint

Semua berkas bobot yang dipublikasikan untuk family ini.

BerkasInput (piksel)Lisensi bobot
semantic
LibreEoMTl-sem.pt512mit
Instance segmentation
LibreEoMTl-seg.pt640mit
LibreEoMTl-seg-1280.ptmit
panoptic
LibreEoMTs-panoptic.ptmit
LibreEoMTb-panoptic.ptmit
LibreEoMTl-panoptic.ptmit

Setiap berkas di atas saat ini tersedia di organisasi LibreYOLO dan diunduh saat pertama kali digunakan.

Lisensi

Periksa lisensi di repositori Hugging Face untuk bobot tertentu yang diunduh. Setiap checkpoint di organisasi LibreYOLO memiliki lisensi, dan lisensinya tidak selalu sama dalam satu family. Repositori tersebut adalah sumber resmi. Ringkasan di bawah menjelaskan ketentuan yang berlaku saat halaman ini terakhir diverifikasi.

Ini adalah deskripsi lisensi yang terlibat, bukan nasihat hukum. Jika jawabannya penting secara komersial, baca sendiri lisensinya dan mintalah nasihat dari penasihat hukum Anda.

Karya asli
EoMT, TU Eindhoven, Mobile Perception Systems Lab
Lisensi upstream
MIT
Kode LibreYOLO
MIT
Bobot
MIT, dipublikasikan ulang di huggingface.co/LibreYOLO
Interpretasi
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.

Sitasi

@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},
}

Disalin dari blok sitasi penulis di github.com/tue-mps/eomt#bibtex-citation.

Diverifikasi dengan LibreYOLO v1.5.0. Tabel dukungan, checkpoint, dan angka benchmark di halaman ini dihasilkan dari library yang telah dirilis dan bobot yang dipublikasikan, bukan ditulis manual.