Giter Site home page Giter Site logo

mri_brain_tumor_segmentation's Introduction

Meningioma segmentation in T1-weighted MRI leveraging global context and attention mechanisms


1. Description

The repository contains the architectures, inference code, and trained models for meningioma segmentation in T1-weighted MRI volumes.

Please cite the following article if you re-use any part:

@misc{bouget2021meningioma,
title={Meningioma segmentation in T1-weighted MRI leveraging global context and attention mechanisms},
author={David Bouget and André Pedersen and Sayied Abdol Mohieb Hosainey and Ole Solheim and Ingerid Reinertsen},
year={2021},
eprint={2101.07715},
archivePrefix={arXiv},
primaryClass={eess.IV}
}

Dual attention guided U-Net architecture

2. Installation

The following steps have been tested on both Ubuntu and Windows. The details below are for Linux. See the troubleshooting section below for Windows-specific details.

a. Python

The Python virtual environment can be setup using the following commands:

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt

b. Docker

Simply download the corresponding Docker image:

docker pull dbouget/mri_brain-tumor_segmentation:v1

c. Models

In order to download the models locally and prepare the folders, simply run the following:

source venv/bin/activate
python setup.py
deactivate

3. Use

The command line input parameters are the following:

  • i [Input]: Path to the MRI volume file, preferably in nifti format. Other formats will be converted to nifti before being processed, using SimpleITK.
  • o [Output]: Path and prefix for the predictions file. The base name must already exist on disk.
  • m [Model]: Name of the model to use for inference, in the list [UNet-Slabs, PLS-Net, UNet-FV, AGUNet, DAGUNet]
  • g [GPU]: Id of the GPU to use for inference. The CPU is used if no eligible number is provided.

A runtime configuration file also exists in resources/data/runtime_config.ini, where additional variables can be modified:

  • non_overlapping: [true, false], only in effect for the UNet-Slabs model. True indicates no overlapping in predictions while false indicates stride 1 overlap.
  • reconstruction_method: [thresholding, probabilities]. In the latter, raw prediction maps in range [0, 1] are dumped while in the former a binary mask is dumped using a pre-set probability threshold value.
  • reconstruction_order: [resample_first, resample_second]. In the former, the raw probability map is resampled to the original patient's space before the reconstruction happens (slower) while in the former the opposite is performed (faster).
  • probability_threshold: threshold value to be used when the reconstruction method is set to thresholding (optimal values for each model can be found in the paper).

a. Python

To run inference with the attention-gated U-Net model, using GPU 0, execute the following in the project root directory:

source venv/bin/activate
python main.py -i /path/to/file.nii.gz -o /output/path/to/output_prefix -m AGUNet -g 0
deactivate

b. Docker

The local resources sub-folder is mapped to the resources sub-folder within the docker container. As such, input MRI volumes have to be copied inside resources/data to be processed and the output folder for the predictions has to be set within the resources sub-folder to be accessible locally.
⚠️ The docker container does not have gpu support so all inferences are performed on CPU only.

cp /path/to/mri.nii.gz /path/to/mri_brain_tumor_segmentation/resources/data/mri.nii.gz
docker run --entrypoint /bin/bash -v /path/to/mri_brain_tumor_segmentation/resources:/home/ubuntu/resources -t -i dbouget/mri_brain-tumor_segmentation:v1
python3 main.py -i ./resources/data/mri.nii.gz -o ./resources/output_prefix -m AGUNet

4. Acknowledgements

Parts of the models' architectures were collected from the following repositories:

For more detailed information about attention mechanisms, please read the corresponding publications:

@inproceedings{fu2019dual,
title={Dual attention network for scene segmentation},
author={Fu, Jun and Liu, Jing and Tian, Haijie and Li, Yong and Bao, Yongjun and Fang, Zhiwei and Lu, Hanqing},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={3146--3154},
year={2019}
}

@article{oktay2018attention,
title={Attention u-net: Learning where to look for the pancreas},
author={Oktay, Ozan and Schlemper, Jo and Folgoc, Loic Le and Lee, Matthew and Heinrich, Mattias and Misawa, Kazunari and Mori, Kensaku and McDonagh, Steven and Hammerla, Nils Y and Kainz, Bernhard and others},
journal={arXiv preprint arXiv:1804.03999},
year={2018}
}

Troubleshooting

On windows, to activate the virtual environment, run:

.\venv\Scripts\activate

This assumes that one is using virtualenv to make virtual environments. This can be easily installed using pip by:

pip install virtualenv

When installing dependencies (in a virtual environment), you might have a problem installing torch:

ERROR: Could not find a version that satisfies the requirement torch==1.4.0
ERROR: No matching distribution found for torch==1.4.0

If so, install torch using this command:

pip install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html

Then, run the same line to install dependencies, and to properly verify that all dependencies are installed:

pip install -r requirements.txt

mri_brain_tumor_segmentation's People

Contributors

andreped avatar dbouget avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.