Downloads · 30 days
21.1K
39% of all-time downloads
tue-mps/eomt-dinov3-ade-semantic-large-512
eomt-dinov3-ade-semantic-large-512 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
21.1K
39% of all-time downloads
All-time downloads
54.3K
Public
Parameters
315M
1.3 GB on disk
Likes
1
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 semantic segmentation on ADE20K at 512×512 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-ade-semantic-large-512"
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)
# Semantic Segmentation
result = processor.post_process_semantic_segmentation(outputs, target_sizes=[image.size[::-1]])[0]
print(result.shape) # Segmentation map with class indices
| Property | Value |
|---|---|
| Backbone | DINOv3 ViT-L/16 |
| Input Resolution | 512×512 |
| Task | Semantic Segmentation |
| Dataset | ADE20K |
@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},
}