https://github.com/jpdefrutos/ddmr
3D image registration training framework using adaptive loss weighting and synthetic data generation
https://github.com/jpdefrutos/ddmr
adaptive-loss ct ddmr deep-learning image-registration mri synthetic-data-generation tensorflow voxelmorph
Last synced: about 1 year ago
JSON representation
3D image registration training framework using adaptive loss weighting and synthetic data generation
- Host: GitHub
- URL: https://github.com/jpdefrutos/ddmr
- Owner: jpdefrutos
- License: mit
- Created: 2021-01-29T13:53:12.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-21T13:39:47.000Z (about 2 years ago)
- Last Synced: 2024-05-22T06:14:34.245Z (about 2 years ago)
- Topics: adaptive-loss, ct, ddmr, deep-learning, image-registration, mri, synthetic-data-generation, tensorflow, voxelmorph
- Language: Python
- Homepage:
- Size: 413 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
---
title: 'DDMR: Deep Deformation Map Registration of CT/MRIs'
colorFrom: indigo
colorTo: indigo
sdk: docker
app_port: 7860
emoji: 🧠
pinned: false
license: mit
app_file: demo/app.py
---
DDMR: Deep Deformation Map Registration
Learning deep abdominal CT registration through adaptive loss weighting and synthetic data generation
[](https://github.com/DAVFoundation/captain-n3m0/blob/master/LICENSE)
[](https://github.com/jpdefrutos/DDMR/actions/workflows/deploy.yml)
[](https://doi.org/10.1371/journal.pone.0282110)

**DDMR** was developed by SINTEF Health Research. The corresponding manuscript describing the framework has been published in [PLOS ONE](https://journals.plos.org/plosone/) and the manuscript is openly available [here](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0282110).
## 💻 Getting started
1. Setup virtual environment:
```
virtualenv -ppython3 venv --clear
source venv/bin/activate
```
2. Install requirements:
```
pip install git+https://github.com/jpdefrutos/DDMR
```
## 🤖 How to use
Use the following CLI command to register images
```
ddmr --fixed path/to/fixed_image.nii.gz --moving path/to/moving_image.nii.gz --outputdir path/to/output/dir -a --model --gpu --original-resolution
```
where:
* anatomy: is the type of anatomy you want to register: B (brain) or L (liver)
* model: is the model you want to use:
+ BL-N (baseline with NCC)
+ BL-NS (baseline with NCC and SSIM)
+ SG-ND (segmentation guided with NCC and DSC)
+ SG-NSD (segmentation guided with NCC, SSIM, and DSC)
+ UW-NSD (uncertainty weighted with NCC, SSIM, and DSC)
+ UW-NSDH (uncertainty weighted with NCC, SSIM, DSC, and HD).
* gpu: is the GPU number you want to the model to run on, if you have multiple and want to use only one GPU
* original-resolution: (flag) whether to upsample the registered image to the fixed image resolution (disabled if the flag is not present)
Use ```ddmr --help``` to see additional options like using precomputed segmentations to crop the images to the desired ROI, or debugging.
A live demo to easily test the best performing pretrained models was developed in Gradio and is deployed on `Hugging Face`.
To access the live demo, click on the `Hugging Face` badge above. Below is a snapshot of the current state of the demo app.

### Development
To develop the Gradio app locally, you can use either Python or Docker.
#### Python
You can run the app locally by:
```
python demo/app.py --cwd ./ --share 0
```
Then open `http://127.0.0.1:7860` in your favourite internet browser to view the demo.
#### Docker
Alternatively, you can use docker:
```
docker build -t ddmr .
docker run -it -p 7860:7860 ddmr
```
Then open `http://127.0.0.1:7860` in your favourite internet browser to view the demo.
## 🏋️♂️ Training
Use the "MultiTrain" scripts to launch the trainings, providing the neccesary parameters. Those in the COMET folder accepts a `.ini` configuration file (see `COMET/train_config_files/` for example configurations).
For instance:
```
python TrainingScripts/Train_3d.py
```
## 🔍 Evaluate
Use Evaluate_network to test the trained models. On the Brain folder, use `Evaluate_network__test_fixed.py` instead.
For instance:
```
python EvaluationScripts/evaluation.py
```
## ✨ How to cite
Please, consider citing our paper, if you find the work useful:
@article{perezdefrutos2022ddmr,
title = {Learning deep abdominal CT registration through adaptive loss weighting and synthetic data generation},
author = {Pérez de Frutos, Javier AND Pedersen, André AND Pelanis, Egidijus AND Bouget, David AND Survarachakan, Shanmugapriya AND Langø, Thomas AND Elle, Ole-Jakob AND Lindseth, Frank},
journal = {PLOS ONE},
publisher = {Public Library of Science},
year = {2023},
month = {02},
volume = {18},
doi = {10.1371/journal.pone.0282110},
url = {https://doi.org/10.1371/journal.pone.0282110},
pages = {1-14},
number = {2}
}
## ⭐ Acknowledgements
This project is based on [VoxelMorph](https://github.com/voxelmorph/voxelmorph) library, and its related publication:
@article{balakrishnan2019voxelmorph,
title={VoxelMorph: A Learning Framework for Deformable Medical Image Registration},
author={Balakrishnan, Guha and Zhao, Amy and Sabuncu, Mert R. and Guttag, John and Dalca, Adrian V.},
journal={IEEE Transactions on Medical Imaging},
year={2019},
volume={38},
number={8},
pages={1788-1800},
doi={10.1109/TMI.2019.2897538}
}