CoolFace
Modelpublic

tue-mps/eomt-dinov3-coco-panoptic-base-640

sourceHugging Facemitupdated 8mo agoView on Hugging Face
0likes9.7kdownloads
Model Card

EoMT-DINOv3 (Base, 640px) for COCO Panoptic Segmentation

<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-yellow?style=flat&logo=huggingface&logoColor=white"> </div>

Overview

This is the base variant of the EoMT-DINOv3 model trained for panoptic 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](https://www.tue-mps.org/eomt)

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.

Usage

python
import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, EomtDinov3ForUniversalSegmentation

model_id = "nielsr/eomt-dinov3-coco-panoptic-base-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)

# Panoptic Segmentation
result = processor.post_process_panoptic_segmentation(outputs, target_sizes=[image.size[::-1]])[0]
print(result["segmentation"].shape)  # Segmentation map
print(result["segments_info"])  # List of detected segments with labels

Model Details

PropertyValue
BackboneDINOv3 ViT-B/16
Input Resolution640×640
TaskPanoptic Segmentation
DatasetCOCO

Citation

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

Acknowledgements