Skip to content

Deep-MI/YADO

Repository files navigation

YADO denoiser

This is the official implementation of YADO, a denoiser for real-world brain MR images, as described in the paper: Rethinking Real-World MRI Denoising: Learning from Physical Noise (preprint, to be presented at ECCV 2026).

Our main contributions are:

  1. We introduce, physical Noise2Noise (pN2N) training leveraing real pairs of acquisition for denoiser training.
  2. We genenerlize pN2N to single-noisy datasets via generating pairs from a re-noising (ReN) diffusion model, introducing as ReN2N.
  3. We introduce guidance (g) from co-acquired contrasts to improve denoising performance.

YADO shows SOTA performance over 17 baselines in a comprehensive (14 test conditions, T1w/T2w/FLAIR, >650 participants) evaluation on real-world brain MR images.

Paper main figure

This code heavily builds on YODA and uses the MONAI framework.

Model zoo

The weights are available at zenodo.

YADO denoiser model zoo
Checkpoint Denoised
Contrast
Resolution Training
Dataset
Guidance
Contrast(s)
Comment
oasis_t1w_1p0_g-pN2N T1w 1.0 mm OASIS-3 T2w -
oasis_t1w_1p0_u-pN2N T1w 1.0 mm OASIS-3 - -
oasis_t1w_1p0_g-ReN2N T1w 1.0 mm OASIS-3 (ReN) T2w -
oasis_t1w_1p0_u-ReN2N T1w 1.0 mm OASIS-3 (ReN) - -
hcp_t1w_0p8_g-pN2N T1w 0.8 mm HCP T2w -
hcp_t1w_0p8_u-pN2N T1w 0.8 mm HCP - -
hcp_t1w_0p8_g-ReN2N T1w 0.8 mm HCP (ReN) T2w -
hcp_t1w_0p8_u-ReN2N T1w 0.8 mm HCP (ReN) - -
rs_t2w_0p8_g-pN2N T2w 0.8 mm RS T1w -
rs_t2w_0p8_u-pN2N T2w 0.8 mm RS - -
rs_t2w_0p8_g-ReN2N T2w 0.8 mm RS (ReN) T1w -
rs_t2w_0p8_g-ReN2N+unpaired T2w 0.8 mm RS (ReN) T1w 300 additional
ReN images
rs_t2w_0p8_u-ReN2N T2w 0.8 mm RS (ReN) - -
rs_flair_0p8_g-pN2N FLAIR 0.8 mm RS T1w,T2w -
rs_flair_0p8_u-pN2N FLAIR 0.8 mm RS - -
rs_flair_0p8_g-ReN2N FLAIR 0.8 mm RS (ReN) T1w,T2w -
rs_flair_0p8_u-ReN2N FLAIR 0.8 mm RS (ReN) - -
YODA Renoiser (ReN) model zoo
Checkpoint Denoised
Contrast
Resolution Training
Dataset
Guidance
Contrast(s)
Comment
rs_t1w_0p8_ReN T1w 0.8 mm RS T2w -
rs_t1w_1p0_ReN T1w 1.0 mm RS T2w -
rs_t1w_1p0_uReN T1w 1.0 mm RS - -
rs_t2w_0p8_ReN T2w 0.8 mm RS T1w -
rs_flair_0p8_ReN FLAIR 0.8 mm RS T1w,T2w -

TLDR: Run the wrapper

From the repo root, run single-subject denoising with the wrapper.py entrypoint (it will scale the input intensities and run prediction):

python wrapper.py \
  -r output/<RUN_NAME> \
  -c ckpt/last.pth \
  -o /path/to/save/pred.nii.gz \
  /path/to/noisy.nii.gz /path/to/guidance_1.nii.gz /path/to/guidance_2.nii.gz \
  --mask /path/to/mask.nii.gz

Notes:

  • -r must point to a run folder that contains config.yml and ckpt/last.pth (or manually define with -c flag).
  • Input order matters: for YADO it’s (denoised sequence) first, then guidance sequences alphabetically (must match config.data.guidance_sequences).
    • (if used), the guidance must be registered to the noisy target image (preferably with FreeSurfer's bbregister, faster but experimental: neuroreg)
  • --mask is optional; if omitted, the wrapper builds a dummy center mask based on config.data.img_size.

See also YODA for an exemplary, easy-to-run single-command setup script on the RS (using docker or apptainer/singularity).

Note that YADO, per default, crops to the center/brain mask of the images and only outputs the predicted region. Thus, the output might have a different shape than in the input, which is accounted for the nifti header (i.e. in reasonable viewers like Freeview the prediction will be at the right location).

Also, YADO is trained to run on any (cubic interpolated) image in arbitrary spaces. Thus, it makes sense to YADO denoise the images in the final space of interest (e.g. LIA conform for FreeSurfer/FastSurfer) to avoid additional interpolation steps after denoising.

Dependencies

We provide pre-build docker and singularity images.

See requirements.txt to build your own environment.

Denoiser Training

Training uses the same general dataset-json + config-driven training setup as inference.

torchrun --nproc_per_node 8 train/train_yado.py -n <RUN_NAME> \
  <CONFIG.yml> --data.batch_size 6 --trainer.gradient_accumulation_steps 2  # more --args

The default config defining all options is provided in configs/regression/defaults.yml.

A conceptual dataset JSON (both training and batch inference) is provided in [example_ds.json](configs/example_ds.json). See YODA for details on (regular) batch inference.

See bash/oasis_t1_gYADO.sh, bash/hcp_t1_uYADO_ME-mprage.sh, ... for example training scripts.

Expected dataset JSON / keys (as in the script):

  • target_sequence: "t1_tar"
  • guidance_sequences: ["t1_src", "t2"]

Renoiser Training

Renoiser training is similar to the above, but with a different entrypoint and config:

torchrun --nproc_per_node 8 train/train_dm.py -n <RUN_NAME> \
 <CONFIG.yml> --data.batch_size 6 --trainer.gradient_accumulation_steps 2

The default config defining all options is provided in configs/dm/defaults.yml.

See bash/rs_t1_renoising_dm.sh for an example training script.

Inference can be parallelized via e.g. SLURM as demonstrated in bash/ReN_inference_oasis.sh.

Citations

Main YADO paper:

@inproceedings{rassmann2026rethinking,
  title={{R}ethinking {R}eal-{W}orld {MRI} {D}enoising: {L}earning from {P}hysical {N}oise},
  author={Rassmann, Sebastian and K{\"u}gler, David and Brunheim, Sascha and Ehses Philipp and Reuter, Martin},
  booktitle={ECCV},
  year={2026}
}

YODA paper:

@article{rassmann2026regression,
  title={Regression is all you need for {M}edical {I}mage {T}ranslation},
  author={Rassmann, Sebastian and K{\"u}gler, David and Ewert, Christian and Reuter, Martin},
  journal={IEEE Transactions on Medical Imaging},
  year={2026},
  publisher={IEEE}
}

About

YADO: An universal denoising framework of structural (T1w/T2w/FLAIR) brain MRI (accepted for ECCV 2026)

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors