Skip to main content

MoPET: Parameter-Efficient Mixture-of-Experts for Unified Medical Image Classification @ MICCAI 2026 EMA Workshop

[Preprint (coming soon)] [PyPI] [Pretrained Weights (HF)] [Citation]

Overview

MoPET is a mixture-of-experts method for parameter-efficient fine-tuning (PEFT) of foundation models on 2D medical images. A learned sparse router directs each input through a small, top-k subset of low-rank PEFT experts (LoRA and BOFT) injected into a frozen DINOv3 backbone, sharing adapter capacity across datasets while limiting the gradient conflict that arises when heterogeneous domains are trained jointly. On MedMNIST+, this design lets a single model consolidate multiple classification tasks that would otherwise each need their own fine-tuned network.

MoPET method overview

Standard PEFT trains one adapted model per dataset (left). MoPET routes each input through a shared feature router to a frozen pretrained backbone plus a pool of specialized PEFT experts, consolidating all datasets into a single multi-domain model (right).

MoPET architecture detail

(A) Interleaved batch sampling keeps every training batch diverse across the pooled datasets. (B) Inside a MoPET layer, a router selects the top-k PEFT experts per token; their outputs are combined with the frozen pretrained projection. (C) A dataset router uses the pooled feature and the sample's dataset id to dispatch it to the matching classification head.

Key Contributions

  • Across 12 MedMNIST+ datasets, parameter-efficient fine-tuning of a frozen foundation backbone outperforms full end-to-end fine-tuning.
  • MoPET, a mixture-of-experts built entirely from PEFT modules, unifies distinct classification tasks in a single model and beats isolated per-domain adapters on a four-dataset pool.
  • A cross-domain "booster" dynamic where co-training with auxiliary datasets improves accuracy on data-constrained target datasets.

Installation

From PyPI (the distribution is mopet-moe; it still imports as mopet):

pip install mopet-moe

From source (adds the reproduction/training stack):

git clone https://github.com/sdoerrich97/mopet.git && cd mopet
pip install -e ".[experiments]"

Quick Start

from mopet import create_model

model = create_model(weights="unified").eval()   # downloads the adapter weights from HF; frozen DINOv3 from timm

See examples/ for runnable inference, minimal-API, and training-CLI notebooks.

Model Zoo

Weights live in the MoPET HuggingFace Collection. The Identifier column is exactly the string to pass as create_model(weights=...).

Identifier Datasets (head order) Backbone HF Repo
unified Blood, Breast, Derma, Path DINOv3 ViT-B/16 mopet_dinov3_unified_blood_breast_derma_path
booster-retina Breast, Blood, Retina, Path, OrganA DINOv3 ViT-B/16 mopet_dinov3_booster_retina_breast_blood_retina_path_organa
booster-derma Derma, Blood, OCT, OrganS DINOv3 ViT-B/16 mopet_dinov3_booster_derma_derma_blood_oct_organs

Each release carries only the ~7M trainable parameters (PEFT experts, routers, and per-dataset heads); the frozen DINOv3 backbone is reconstructed from timm at load time.

Project Structure

mopet/            # the installable package: MoPET model, MoE/PEFT experts, create_model factory
experiments/      # reproduction code: configs, data, metrics, reference baselines, entry scripts — not on PyPI
examples/         # runnable inference / usage / training notebooks
for_huggingface/  # staged config + model-card assets for the released HF checkpoints
tests/            # pytest suite
scripts/          # local + cluster (SLURM/Apptainer) job generators

Citation

@inproceedings{doerrich2026mopet,
  title     = {{MoPET}: Parameter-Efficient Mixture-of-Experts for Unified Medical Image Classification},
  author    = {Doerrich, Sebastian and W{\"u}rtinger, Daniel and Di Salvo, Francesco and Rai, Shyam Nandan and Ledig, Christian},
  booktitle = {MICCAI 2026 Workshop on Efficient Medical AI (EMA)},
  year      = {2026},
}

License

The mopet code is released under the MIT License. The frozen DINOv3 backbone weights are downloaded separately via timm/HuggingFace under their own upstream license; only the code in this repository and the trainable-parameter checkpoints in the HuggingFace collection above are covered by the MIT license.

Changelog

v0.1.0

  • Initial public release accompanying the MICCAI 2026 EMA Workshop paper.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mopet_moe-0.1.0.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mopet_moe-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file mopet_moe-0.1.0.tar.gz.

File metadata

  • Download URL: mopet_moe-0.1.0.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for mopet_moe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dfe66a520658585b2b725639e81fd8e34453e5453c22aaaa281ce7e7c22125fc
MD5 ec10456cb4066ebee87ad7751bfffb1f
BLAKE2b-256 42891ce54ffa29d533838f9edb9b4fdb166437470621b00d0295e276a4307aa2

See more details on using hashes here.

File details

Details for the file mopet_moe-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mopet_moe-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for mopet_moe-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66cf4153e9abb5f4d0d4ae60e7a46e58d0bdeeb4eec35cec5b787be26c8de28e
MD5 979cb2d4ef907ba198e72bd44a81acfd
BLAKE2b-256 91cdc69631ad4e50b11345d460624ea684b5b6ca7a757f2df61edc023fa34384

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page