Estimating registration noise with semantic segmentation models.
keywords: domain adaptation, multi-atlas registration, label noise, consensus, curriculum learning
This code uses data parameters (https://github.com/apple/ml-data-parameters) to weight noisy atlas samples as a simple but effective extension of semantic segmentation models. During training the data parameters (scalar values assigned to each instance of a registered label) can estimate the label trustworthiness globally across all multi-atlas candidates of all images. We optimized the base method according to the special characteristics of semantic segmentation tasks.
Install pypoetry from https://python-poetry.org/ Change into the directory containing the pyproject.toml file and nstall a virtual env with:
poetry init
poetry lock
poetry install
If you do not want to use poetry a list of dependencies is contained in the pyproject.toml file. To use the logging capabilities create an account on wandb.org
The used dataset can be found at: https://wiki.cancerimagingarchive.net/pages/viewpage.action?pageId=70229053 The CrossMoDa challenge website which used this dataset can be found at: https://crossmoda-challenge.ml/
We rebuilt the CrossMoDa dataset with instructions of: https://github.com/KCL-BMEIS/VS_Seg
During preprocessing a Docker container is deployed which runs a Slicer.org script - make sure to have docker installed and sufficient permissions.
Execute all cells in ./deep_staple/preprocessing/fetch_dataset.ipynb
to get the dataset from TCIA and convert it to the necessary file structure for the dataloader.
Pre-registered (noisy) labels for training can be downloaded with data_artifacts/download_artifacts.sh
Either run main_deep_staple.py
or use the notebook main_deep_staple.ipynb
Settings can be changed inside the config_dict
After network training a .pth data file is written to ./data/output/<run_name>/train_label_snapshot.pth
Open .deep_staple/postprocessing/consensus/consensus.ipynb
to create consensi.
deep_staple/main_deep_staple.py
Line 742 in 0f701d2
deep_staple/main_deep_staple.py
Line 756 in 0f701d2
deep_staple/main_deep_staple.py
Line 754 in 0f701d2
deep_staple/main_deep_staple.py
Line 747 in 0f701d2
deep_staple/main_deep_staple.py
Line 723 in 0f701d2
DeepSTAPLE: Learning to predict multimodal registration quality for unsupervised domain adaptation. By Christian Weihsbach, Alexander Bigalke, Christian N. Kruse, Hellena Hempe, Mattias P Heinrich. WBIR 2022
For any problems or questions please open an issue.