eomt

tue-mpsMIT活跃维护

只用 ViT 编码器做图像分割的官方实现,省去解码器和额外适配模块,在实例、全景分割任务上兼顾精度与推理速度。

[CVPR 2025 Highlight] Official code and models for Encoder-only Mask Transformer (EoMT).

暂无版本646star +1 / 7 天65fork同步于 2026-11-10 17:57 UTC

怎么上手

由 README 提炼,执行前请确认
conda create -n eomt python==3.13.2
conda activate eomt
python3 -m pip install -r requirements.txt
硬件要求按 README 说明

README 给出参考:EoMT-L 640×640 在 COCO 全景分割上训练约需 4×NVIDIA H100,每卡约 26GB 显存;未说明 CPU 运行与其他 GPU 型号。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

只用纯 ViT 编码器做图像分割的极简模型,去掉适配器和解码器,速度更快

只用 ViT 编码器做图像分割的官方实现,省去解码器和额外适配模块,在实例、全景分割任务上兼顾精度与推理速度。

核心能力

  • 把图像块和分割查询一起作为 token 输入纯 ViT
  • 无需适配器与解码器,仅保留 ViT 主干
  • ViT-L 上比复杂分割方法快至多 4 倍
  • 支持 DINOv2 与 DINOv3 预训练骨干
  • 覆盖全景、实例、语义分割三类任务

容易踩的坑

数据集以 zip 原样放置并通过 --data.path 指定,代码直接读压缩包,无需解压;训练需保证 devices × batch_size = 16;DINOv3 配置默认按相对 DINOv3 的 delta 权重加载,用绝对权重需加 --model.delta_weights False;Cityscapes 下载需填自己的账号密码。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Your ViT is Secretly an Image Segmentation Model

    Papers with Code: SOTA on COCO 2017 Panoptic Segmentation Papers with Code: SOTA on BRAVO (OOD)

    CVPR 2025 ✨ Highlight · 📄 Paper

    Tommie Kerssies1, Niccolò Cavagnero2,*, Alexander Hermans3, Narges Norouzi1, Giuseppe Averta2, Bastian Leibe3, Gijs Dubbelman1, Daan de Geus1,3

    ¹ Eindhoven University of Technology
    ² Polytechnic of Turin
    ³ RWTH Aachen University
    * Work done while visiting RWTH Aachen University

    Overview

    We present the Encoder-only Mask Transformer (EoMT), a minimalist image segmentation model that repurposes a plain Vision Transformer (ViT) to jointly encode image patches and segmentation queries as tokens. No adapters. No decoders. Just the ViT.

    Leveraging large-scale pre-trained ViTs, EoMT achieves accuracy similar to state-of-the-art methods that rely on complex, task-specific components. At the same time, it is significantly faster thanks to its simplicity, for example up to 4× faster with ViT-L.

    Turns out, your ViT is secretly an image segmentation model. EoMT shows that architectural complexity isn't necessary. For segmentation, a plain Transformer is all you need.

    🚀 NEW: PMT

    Presenting our latest model, PMT: Plain Mask Transformer for Image and Video Segmentation with Frozen Vision Encoders.

    PMT reconciles EoMT minimal philosophy with the need of preserving the features of frozen Foundation Models, by mimicking the last layers of EoMT and VidEoMT with a simple and fast decoder.

    Take a look!

    🚀 NEW: VidEoMT

    🔥 We're pleased to present our latest CVPR 2026 paper, VidEoMT: Your ViT is Secretly Also a Video Segmentation Model.

    VidEoMT extends EoMT philosophy to the temporal domain, introducing an encoder-only video segmentation model that is up to 10x faster than competitors.

    Go check it out!

    🚀 NEW: DINOv3 Support

    🔥 We're excited to announce support for DINOv3 backbones! Our new DINOv3-based EoMT models deliver improved performance across all segmentation tasks:

    • Panoptic Segmentation: Up to 58.9 PQ on COCO with EoMT-L at 1280×1280
    • Instance Segmentation: Up to 49.9 mAP on COCO with EoMT-L at 1280×1280
    • Semantic Segmentation: Up to 59.5 mIoU on ADE20K with EoMT-L at 512×512

    All of this, at the impressive speed of EoMT!

    Check out our DINOv3 Model Zoo for all available EoMT configurations and performance benchmarks.

    Thanks to the DINOv3 team for providing these powerful foundation models!

    🤗 Transformers

    EoMT with DINOv2 is also available on Hugging Face Transformers. See available models here.

    Installation

    If you don't have Conda installed, install Miniconda and restart your shell:

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash Miniconda3-latest-Linux-x86_64.sh
    

    Then create the environment, activate it, and install the dependencies:

    conda create -n eomt python==3.13.2
    conda activate eomt
    python3 -m pip install -r requirements.txt
    

    Weights & Biases (wandb) is used for experiment logging and visualization. To enable wandb, log in to your account:

    wandb login
    

    Data preparation

    Download the datasets below depending on which datasets you plan to use.
    You do not need to unzip any of the downloaded files.
    Simply place them in a directory of your choice and provide that path via the --data.path argument.
    The code will read the .zip files directly.

    COCO

    wget http://images.cocodataset.org/zips/train2017.zip
    wget http://images.cocodataset.org/zips/val2017.zip
    wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip
    wget http://images.cocodataset.org/annotations/panoptic_annotations_trainval2017.zip
    

    ADE20K

    wget http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip
    wget http://sceneparsing.csail.mit.edu/data/ChallengeData2017/annotations_instance.tar
    tar -xf annotations_instance.tar
    zip -r -0 annotations_instance.zip annotations_instance/
    rm -rf annotations_instance.tar
    rm -rf annotations_instance
    

    Cityscapes

    wget --keep-session-cookies --save-cookies=cookies.txt --post-data 'username=<your_username>&password=<your_password>&submit=Login' https://www.cityscapes-dataset.com/login/
    wget --load-cookies cookies.txt --content-disposition https://www.cityscapes-dataset.com/file-handling/?packageID=1
    wget --load-cookies cookies.txt --content-disposition https://www.cityscapes-dataset.com/file-handling/?packageID=3
    

    🔧 Replace <your_username> and <your_password> with your actual Cityscapes login credentials.

    Usage

    Training

    To train EoMT from scratch, run:

    python3 main.py fit \
      -c configs/dinov2/coco/panoptic/eomt_large_640.yaml \
      --trainer.devices 4 \
      --data.batch_size 4 \
      --data.path /path/to/dataset
    

    This command trains the EoMT-L model with a 640×640 input size on COCO panoptic segmentation using 4 GPUs. Each GPU processes a batch of 4 images, for a total batch size of 16. Switch to dinov3 in the configuration path to enable the corresponding DINOv3 model.

    ✅ Make sure the total batch size is devices × batch_size = 16
    🔧 Replace /path/to/dataset with the directory containing the dataset zip files.

    This configuration takes ~6 hours on 4×NVIDIA H100 GPUs, each using ~26GB VRAM.

    To fine-tune a pre-trained EoMT model, add:

      --model.ckpt_path /path/to/pytorch_model.bin \
      --model.load_ckpt_class_head False
    

    🔧 Replace /path/to/pytorch_model.bin with the path to the checkpoint to fine-tune.

    --model.load_ckpt_class_head False skips loading the classification head when fine-tuning on a dataset with different classes.

    DINOv3 Models: When using DINOv3-based configurations, the code expects delta weights relative to DINOv3 weights by default. To disable this behavior and use absolute weights instead, add --model.delta_weights False.

    Evaluating

    To evaluate a pre-trained EoMT model, run:

    python3 main.py validate \
      -c configs/dinov2/coco/panoptic/eomt_large_640.yaml \
      --model.network.masked_attn_enabled False \
      --trainer.devices 4 \
      --data.batch_size 4 \
      --data.path /path/to/dataset \
      --model.ckpt_path /path/to/pytorch_model.bin
    

    This command evaluates the same EoMT-L model using 4 GPUs with a batch size of 4 per GPU.

    🔧 Replace /path/to/dataset with the directory containing the dataset zip files.
    🔧 Replace /path/to/pytorch_model.bin with the path to the checkpoint to evaluate.

    A notebook is available for quick inference and visualization with auto-downloaded pre-trained models.

    DINOv3 Models: When using DINOv3-based configurations, the code expects delta weights relative to DINOv3 weights by default. To disable this behavior and use absolute weights instead, add --model.delta_weights False.

    Model Zoo

    We provide pre-trained weights for both DINOv2- and DINOv3-based EoMT models.

    • DINOv2 Models - Original published results and pre-trained weights.
    • DINOv3 Models - New DINOv3-based models and pre-trained weights.

    Citation

    If you find this work useful in your research, please cite it using the BibTeX entry below:

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

    Acknowledgements

    This project builds upon code from the following libraries and repositories: