In this repo, hippocampus segmentation from MRI is performed
using a Convolutional Neural Network (CNN) architecture based on
V-Net.
The dataset is publicly available from the
Medical Segmentation Decathlon Challenge,
and can be downloaded from
here.
The PyTorch library has been used to write the model architecture
and performing the training and validation.
SimpleITK has been exploited to handle I/O of medical images.
3D Data Augmentation has been made by employing torchio.
A 5-folders cross validation has been performed on the training set, yielding a
Mean Multi Dice Coefficient of 0.8727 +/- 0.0364, a Dice Coefficient for
Anterior Hippocampus of 0.8821 +/- 0.0363 and a Dice Coefficient for
Posterior Hippocampus of 0.8634 +/- 0.0415.
The results are reported as "mean +/- std".
Meshes and images reported in the images
folder have been obtained exploiting
ITK-SNAP.
Results | |||
---|---|---|---|
Model | Mean Dice per case | Dice per case (Anterior) | Dice per case (Posterior) |
3D V-Net (no data augmentation) | 0.8727 +/- 0.0364 | 0.8821 +/- 0.0363 | 0.8634 +/- 0.0415 |
3D V-Net (with data augmentation) | 0.8761 +/- 0.0374 | 0.8875 +/- 0.0354 | 0.8647 +/- 0.0455 |
Confusion Matrix | Normalized Confusion Matrix |
---|---|
![]() |
![]() |
Confusion Matrix | Normalized Confusion Matrix |
---|---|
![]() |
![]() |
Use python setup.py install
for installing this package.
A complete run (dataset download, train, validation) of the package may be the following:
git clone https://github.com/Nicolik/HippocampusSegmentationMRI.git
cd HippocampusSegmentationMRI
python setup.py install
python run/download.py
python run/train.py
python run/validate.py
If you want to download the original dataset, run run/download.py
.
The syntax is as follows:
python run/download.py --dir=path/to/dataset/dir
If you simply want to perform the training, run run/train.py
.
The syntax is as follows:
python run/train.py --epochs=NUM_EPOCHS --batch=BATCH_SIZE --workers=NUM_WORKERS --lr=LR
If you want to edit the configuration, you can also modify the config/config.py
file.
In particular, consider the class SemSegMRIConfig
.
If you want to play with data augmentation (built with torchio
),
modify the config/augm.py
file.
If you want to perform the cross-validation, run run/validate.py
or run/validate_torchio.py
.
The syntax is as follows:
python run/validate.py --dir=path/to/logs/dir --write=WRITE --verbose=VERBOSE
python run/validate_torchio.py --dir=path/to/logs/dir --verbose=VERBOSE
The former adopts a loop from scratch, whereas the latter exploits the DataLoader created upon torchio
.
Ground Truth - MRI 327 (1) | Ground Truth - MRI 327 (2) |
---|---|
![]() |
![]() |
Prediction - MRI 327 (1) | Prediction - MRI 327 (2) |
---|---|
![]() |
![]() |
Prediction - MRI 283 (1) | Prediction - MRI 283 (2) |
---|---|
![]() |
![]() |