EoMT
Mạng phân đoạn được xây dựng trên vision transformer thuần túy không có pixel decoder chuyên dụng: các query được học bổ sung vào chính encoder sẽ dự đoán mặt nạ. LibreYOLO hỗ trợ mô hình này cho phân đoạn ngữ nghĩa, thực thể và toàn cảnh.
- Tác vụ
- semantic, instance segmentation, panoptic
- Kích thước
- s, b, l at 512 px
- Cài đặt
pip install libreyolo- Bậc hỗ trợ
- Chỉ suy luận, từ v. Chỉ dự đoán, kiểm định và xuất. Không áp dụng các tính năng huấn luyện.
- Giấy phép
- Mã nguồn MIT, trọng số MIT. Sử dụng thương mại
Cài đặt
EoMT không cần extra tùy chọn. Mọi thành phần mà mô hình import đều có trong bản cài đặt cơ sở.
pip install libreyoloDự đoán
Trọng số được tải về từ Hugging Face trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm cục bộ. Hậu tố tác vụ trong tên tệp (-sem, -seg, -panoptic) chọn tác vụ, còn LibreYOLO() suy ra tác vụ từ tên tệp đó nên không cần đối số 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) ID lớp đối tượngprint(mask.classes) # các ID lớp đối tượng trong ảnh, đã sắp xếpfrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Hậu tố -seg trong tên tệp chọn tác vụ thực thể, vì vậy không cần# đối số task ở đây.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 segmentprint(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=TruePhân đoạn ngữ nghĩa điền result.semantic_mask, một mảng ID lớp đối tượng (H, W) trong .data. Phân đoạn thực thể điền result.boxes và result.masks, cùng shape mà mọi họ phân đoạn khác trả về. Phân đoạn toàn cảnh điền result.panoptic: map ID segment (H, W) trong .data, cùng .segments_info, danh sách dict {"id", "category_id"}, mỗi segment một dict. conf lọc lựa chọn query; iou không có tác dụng với tác vụ ngữ nghĩa vì tác vụ dùng argmax theo từng pixel mà không có bước NMS. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.
Biến thể
Có ba kích thước encoder s/b/l, tất cả dựa trên DINOv2. Checkpoint ngữ nghĩa được huấn luyện trên ADE20K ở 512 px; checkpoint thực thể và toàn cảnh được huấn luyện trên COCO ở 640 px, cùng một checkpoint thực thể thứ hai được huấn luyện ở 1280 px. Upstream chỉ cung cấp trọng số phân đoạn thực thể DINOv2 ở kích thước l; s và b chỉ được phát hành cho tác vụ ngữ nghĩa và toàn cảnh. Các biến thể EoMT dựa trên DINOv3 có ở upstream nhưng không được cung cấp ở đây vì phụ thuộc vào trọng số DINOv3 phi thương mại có kiểm soát truy cập.
LibreYOLO không huấn luyện EoMT: train() phát sinh NotImplementedError cho họ mô hình này, được cấp hỗ trợ ở trên đánh dấu là chỉ dành cho inference.
Xác thực
val() điều phối theo tác vụ. Tác vụ ngữ nghĩa trả về metrics/mIoU và metrics/pixel_accuracy. Phân đoạn thực thể trả về cùng các key mAP mặt nạ và box như những họ phân đoạn khác. Tác vụ toàn cảnh trả về Panoptic Quality dưới dạng metrics/PQ, được tách thành metrics/SQ (chất lượng phân đoạn) và metrics/RQ (chất lượng nhận dạng), cùng metrics/PQ_things và 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)"]) # mặt nạprint(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.yamlXuất
| Tác vụ | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: được hỗ trợ | semantic to TorchScript: được hỗ trợ | semantic to ExecuTorch: không được hỗ trợ | semantic to TensorRT: được hỗ trợ | semantic to OpenVINO: được hỗ trợ | semantic to Paddle: không được hỗ trợ | semantic to MNN: không được hỗ trợ | semantic to RKNN: không được hỗ trợ | semantic to ncnn: không được hỗ trợ | semantic to TFLite: không được hỗ trợ | semantic to CoreML: không được hỗ trợ | semantic to Core AI: không được hỗ trợ |
| Instance segmentation | Instance segmentation to ONNX: không được hỗ trợ | Instance segmentation to TorchScript: không được hỗ trợ | Instance segmentation to ExecuTorch: không được hỗ trợ | Instance segmentation to TensorRT: không được hỗ trợ | Instance segmentation to OpenVINO: không được hỗ trợ | Instance segmentation to Paddle: không được hỗ trợ | Instance segmentation to MNN: không được hỗ trợ | Instance segmentation to RKNN: không được hỗ trợ | Instance segmentation to ncnn: không được hỗ trợ | Instance segmentation to TFLite: không được hỗ trợ | Instance segmentation to CoreML: không được hỗ trợ | Instance segmentation to Core AI: không được hỗ trợ |
| panoptic | panoptic to ONNX: không được hỗ trợ | panoptic to TorchScript: không được hỗ trợ | panoptic to ExecuTorch: không được hỗ trợ | panoptic to TensorRT: không được hỗ trợ | panoptic to OpenVINO: không được hỗ trợ | panoptic to Paddle: không được hỗ trợ | panoptic to MNN: không được hỗ trợ | panoptic to RKNN: không được hỗ trợ | panoptic to ncnn: không được hỗ trợ | panoptic to TFLite: không được hỗ trợ | panoptic to CoreML: không được hỗ trợ | panoptic to Core AI: không được hỗ trợ |
Hiện chỉ tác vụ ngữ nghĩa có thể xuất: phân đoạn thực thể và toàn cảnh gọi export() sẽ nhận NotImplementedError vì đầu ra query-mask của chúng chưa có hợp đồng xuất runtime. Artifact ngữ nghĩa đã xuất được tải lại qua LibreYOLO() dựa trên hậu tố tệp, vì vậy tệp .onnx hoặc .engine hoạt động như checkpoint và trả về cùng đối tượng Results.
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 định tuyến dựa trên hậu tố tệp, vì vậy artifact đã xuất tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreEoMTl-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoint
Mọi tệp trọng số đã phát hành cho họ mô hình này.
| Tệp | Đầu vào (px) | Giấy phép trọng số |
|---|---|---|
| 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 | |
Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.
Giấy phép
Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.
Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.
- Công trình gốc
- EoMT, TU Eindhoven, Mobile Perception Systems Lab
- Giấy phép thượng nguồn
- MIT
- Nguồn thượng nguồn
- github.com/tue-mps/eomt
- Mã nguồn LibreYOLO
- MIT
- Trọng số
- MIT, được phát hành lại tại huggingface.co/LibreYOLO
- Diễn giải
- 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.
Trích dẫn
@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},
}Được sao chép từ khối trích dẫn của tác giả tại github.com/tue-mps/eomt#bibtex-citation.