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.
- Lisensi
- Kode MIT, bobot MIT. Penggunaan komersial
Instalasi
EoMT tidak memerlukan extra opsional. Semua yang diimpornya sudah ada di instalasi dasar.
pip install libreyoloPrediksi
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.
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, terurutfrom 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)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": ...}, ...]libreyolo predict model=LibreEoMTl-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueSegmentasi 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.
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)"]) # maskprint(metrics["metrics/mAP50-95(B)"]) # boxfrom 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"])libreyolo val model=LibreEoMTl-sem.pt data=my-dataset.yamlEkspor
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: didukung | semantic to TorchScript: didukung | semantic to ExecuTorch: tidak didukung | semantic to TensorRT: didukung | semantic to OpenVINO: didukung | semantic to Paddle: tidak didukung | semantic to MNN: tidak didukung | semantic to RKNN: tidak didukung | semantic to ncnn: tidak didukung | semantic to TFLite: tidak didukung | semantic to CoreML: tidak didukung | semantic to Core AI: tidak didukung |
| Instance segmentation | Instance segmentation to ONNX: tidak didukung | Instance segmentation to TorchScript: tidak didukung | Instance segmentation to ExecuTorch: tidak didukung | Instance segmentation to TensorRT: tidak didukung | Instance segmentation to OpenVINO: tidak didukung | Instance segmentation to Paddle: tidak didukung | Instance segmentation to MNN: tidak didukung | Instance segmentation to RKNN: tidak didukung | Instance segmentation to ncnn: tidak didukung | Instance segmentation to TFLite: tidak didukung | Instance segmentation to CoreML: tidak didukung | Instance segmentation to Core AI: tidak didukung |
| panoptic | panoptic to ONNX: tidak didukung | panoptic to TorchScript: tidak didukung | panoptic to ExecuTorch: tidak didukung | panoptic to TensorRT: tidak didukung | panoptic to OpenVINO: tidak didukung | panoptic to Paddle: tidak didukung | panoptic to MNN: tidak didukung | panoptic to RKNN: tidak didukung | panoptic to ncnn: tidak didukung | panoptic to TFLite: tidak didukung | panoptic to CoreML: tidak didukung | panoptic 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreEoMTl-sem.pt format=onnxlibreyolo export model=LibreEoMTl-sem.pt format=tensorrt half=Truefrom 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.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| semantic | ||
| LibreEoMTl-sem.pt | 512 | mit |
| Instance segmentation | ||
| LibreEoMTl-seg.pt | 640 | mit |
| LibreEoMTl-seg-1280.pt | mit | |
| panoptic | ||
| LibreEoMTs-panoptic.pt | mit | |
| LibreEoMTb-panoptic.pt | mit | |
| LibreEoMTl-panoptic.pt | mit | |
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
- Sumber upstream
- github.com/tue-mps/eomt
- 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.