/BraTs

PyTorch & Keras implementation for BraTs (Brain Tumor Segmentation)

Primary LanguagePythonMIT LicenseMIT

1. BraTs (Brain Tumor Segmentation)

1-1) Overview


Fig 1: Brain Complete Tumor Segmention

Fig 2: Brain Core Tumor Segmention

Ground Truth
Prediction


1-2) About

This project is a segmentation model to diagnose brain tumor (Complete, Core) using BraTS 2016, 2017 dataset.

BraTS has always been focusing on the evaluation of state-of-the-art methods for the segmentation of brain tumors in multimodal magnetic resonance imaging (MRI) scans. BraTS 2018 utilizes multi-institutional pre- operative MRI scans and focuses on the segmentation of intrinsically heterogeneous (in appearance, shape, and histology) brain tumors, namely gliomas. Furthemore, to pinpoint the clinical relevance of this segmentation task, BraTS’18 also focuses on the prediction of patient overall survival, via integrative analyses of radiomic features and machine learning algorithms.



1-3) Models

  • U-Net
pytorch/models/unet.py


Fig 3: U-Net Diagram


  • PSPNet
pytorch/models/pspnet.py


Fig 4: PSPNet Diagram


  • DeepLab V3 +
pytorch/models/deeplab.py


Fig 5: DeepLab V3+ Diagram


2. Dataset

2-1) Overview

Multimodal MRI Dataset

File:                       A File has Multi-Modal MRI Data of one person

File Format:          nii.gz

Image Shape:       240(Slide Width) × 240(Slide Height) × 155(Number of Slide) × 4(Multi-mode)

Image Mode:        4 (Multi-mode)


                           channel 0                            channel 1                            channel 2                            channel 3                           

Label Shape:    channel 0: background

                        channel 1: necrotic and non-enhancing tumor

                        channel 2: edema

                        channel 3: enhancing tumor


2-2) Data Augmentation

2-3) Code

pytorch/preprocess.py
pytorch/dataset.py

preprocess.py: Code for data pre-processing. Using this, original image(240×240×155×4) can be diveded into 155 image pieces(240×240) of the specific mode. Also, original label(240×240×155) can be divided into 155 label pieces.

dataset.py: Code for Prepareing dataset and dataloader for Pytorch modules



3. Train

3-1) Loss Function

Dice Coefficient Loss

3-2) Optimizer

Adam Optimizer

Stochastic Gradient Descent

3-3) Hyperparameter

learning rate = 1e-4

maximum number of epochs = 100

Weights Init: Normal Distribution (mean:0, std:0.01)

Bias Init: Initialized as 0


3-4) Code

pytorch/train.py
pytorch/utils.py

train.py: Code for training model and getting several inputs

utils.py: Code for loss Function, utils Functions, UI Functions, and etc



4. Test

pytorch/test.py

test.py: Code for testing MRI inputs


5. Result

5-1) Prediction


Fig 1: Brain Complete Tumor Segmention

Fig 2: Brain Core Tumor Segmention

Ground Truth
Prediction

5-2) Statistical Indices


Fig 3: Statistical Indices


6. Reference

[1] Automatic Brain Tumor Detection and Segmentation Using U-Net Based Fully Convolutional Networks arugmentation

[2] U-Net: Convolutional Networks for Biomedical Image Segmentation

[3] Pyramid Scene Parsing Network

[4] Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation