medfusion-app / README.md
mueller-franzes's picture
fix app_file
2db43aa
---
title: Medfusion App
emoji: 🔬
colorFrom: pink
colorTo: gray
sdk: streamlit
sdk_version: 1.15.2
app_file: streamlit/welcome.py
pinned: false
license: mit
---
Medfusion - Medical Denoising Diffusion Probabilistic Model
=============
Paper
=======
Please see: [**Diffusion Probabilistic Models beat GANs on Medical 2D Images**]()
![](media/Medfusion.png)
*Figure: Medfusion*
![](media/animation_eye.gif) ![](media/animation_histo.gif) ![](media/animation_chest.gif)\
*Figure: Eye fundus, chest X-ray and colon histology images generated with Medfusion (Warning color quality limited by .gif)*
Demo
=============
[Link]() to streamlit app.
Install
=============
Create virtual environment and install packages: \
`python -m venv venv` \
`source venv/bin/activate`\
`pip install -e .`
Get Started
=============
1 Prepare Data
-------------
* Go to [medical_diffusion/data/datasets/dataset_simple_2d.py](medical_diffusion/data/datasets/dataset_simple_2d.py) and create a new `SimpleDataset2D` or write your own Dataset.
2 Train Autoencoder
----------------
* Go to [scripts/train_latent_embedder_2d.py](scripts/train_latent_embedder_2d.py) and import your Dataset.
* Load your dataset with eg. `SimpleDataModule`
* Customize `VAE` to your needs
* (Optional): Train a `VAEGAN` instead or load a pre-trained `VAE` and set `start_gan_train_step=-1` to start training of GAN immediately.
2.1 Evaluate Autoencoder
----------------
* Use [scripts/evaluate_latent_embedder.py](scripts/evaluate_latent_embedder.py) to evaluate the performance of the Autoencoder.
3 Train Diffusion
----------------
* Go to [scripts/train_diffusion.py](scripts/train_diffusion.py) and import/load your Dataset as before.
* Load your pre-trained VAE or VAEGAN with `latent_embedder_checkpoint=...`
* Use `cond_embedder = LabelEmbedder` for conditional training, otherwise `cond_embedder = None`
3.1 Evaluate Diffusion
----------------
* Go to [scripts/sample.py](scripts/sample.py) to sample a test image.
* Go to [scripts/helpers/sample_dataset.py](scripts/helpers/sample_dataset.py) to sample a more reprensative sample size.
* Use [scripts/evaluate_images.py](scripts/evaluate_images.py) to evaluate performance of sample (FID, Precision, Recall)
Acknowledgment
=============
* Code builds upon https://github.com/lucidrains/denoising-diffusion-pytorch