Downloads · 30 days
1K
7% of all-time downloads
tue-mps/eomt-dinov3-coco-instance-large-640
eomt-dinov3-coco-instance-large-640 is a image segmentation model from tue-mps. Use it for the image segmentation task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as mit.
<div class="flex flex-wrap space-x-1" <img alt="PyTorch" src="https://img.shields.io/badge/PyTorch-DE3412?style=flat&logo=pytorch&logoColor=white" <img alt="Transformers" src="https://img.shields.io/badge/Transformers…
Downloads · 30 days
1K
7% of all-time downloads
All-time downloads
13.9K
Public
Parameters
315M
1.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.3 GB · 100%
From the Hugging Face model README
This is the large variant of the EoMT-DINOv3 model trained for instance segmentation on COCO at 640×640 resolution.
EoMT (Encoder-only Mask Transformer) is a Vision Transformer (ViT) architecture designed for high-quality and efficient image segmentation. It was introduced in the CVPR 2025 highlight paper:
Your ViT is Secretly an Image Segmentation Model
Key Insight: Given sufficient scale and pretraining, a plain ViT along with a few additional parameters can perform segmentation without the need for task-specific decoders or pixel fusion modules. The same model backbone supports semantic, instance, and panoptic segmentation with different post-processing.
The DINOv3 variants leverage rotary position embeddings and the latest pre-training recipes from Meta AI, yielding measurable performance gains across segmentation tasks.
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtDinov3ForUniversalSegmentation
model_id = "nielsr/eomt-dinov3-coco-instance-large-640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtDinov3ForUniversalSegmentation.from_pretrained(model_id)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, return_tensors="pt").to(device)
with torch.inference_mode():
outputs = model(**inputs)
# Instance Segmentation
result = processor.post_process_instance_segmentation(outputs, target_sizes=[image.size[::-1]])[0]
print(result["segmentation"].shape) # Segmentation map
print(result["segments_info"]) # List of detected segments with labels
| Property | Value |
|---|---|
| Backbone | DINOv3 ViT-L/16 |
| Input Resolution | 640×640 |
| Task | Instance Segmentation |
| Dataset | COCO |
@inproceedings{kerssies2025eomt,
author = {Kerssies, Tommie and Cavagnero, Niccolò 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},
}