GithubHelp home page GithubHelp logo

3d-skipdenseseg's Introduction

3D-SkipDenseSeg

Skip-connected 3D DenseNet for volumetric infant brain MRI segmentation

By Toan Duc Bui, Jitae Shin, Taesup Moon

This is the implementation of our method in the MICCAI Grand Challenge on 6-month infant brain MRI segmentation-in conjunction with MICCAI 2017 in Pytorch.

Introduction

6-month infant brain MRI segmentation aims to segment the brain into: White matter, Gray matter, and Cerebrospinal fluid. It is a difficult task due to larger overlapping between tissues, low contrast intensity. We treat the problem by using very deep 3D convolution neural network. Our result achieved the top performance in 6 performance metrics.

Citation

@article{bui2019skip,
  title={Skip-connected 3D DenseNet for volumetric infant brain MRI segmentation},
  author={Bui, Toan Duc and Shin, Jitae and Moon, Taesup},
  journal={Biomedical Signal Processing and Control},
  volume={54},
  pages={101613},
  year={2019},
  publisher={Elsevier}
}

Requirements:

  • Pytorch >=0.4, python 3.0, Ubuntu 14.04
  • TiTan X Pascal 12GB

Installation

  • Step 1: Download the source code
https://github.com/tbuikr/3D-SkipDenseSeg.git
cd 3D-SkipDenseSeg
  • Step 2: Download dataset at http://iseg2017.web.unc.edu/download/ and change the path of the dataset data_path and saved path target_path in file prepare_hdf5_cutedge.py
data_path = '/path/to/your/dataset/'
target_path = '/path/to/your/save/hdf5 folder/'
  • Step 3: Generate hdf5 dataset
python prepare_hdf5_cutedge.py
  • Step 4: Run training
python train_v2.py

Run evaluation result.

python val.py

We also provide pretrained model. Use the pretrained model, you should achieve the result as the table.

Dice Coefficient (DC) for 9th subject (9 subjects for training and 1 subject for validation)

Pretrained CSF GM WM Average
3D-SkipDenseSeg 20000_model_3d_denseseg_v1 94.96 91.78 91.24 92.66

Run on testing set

python test.py

3d-skipdenseseg's People

Contributors

tbuikr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

3d-skipdenseseg's Issues

up_block num_groups causes error

At segmentor_v1.py line 100 i think you have a potential bug:

Code:

up_block = nn.ConvTranspose3d(num_features, num_classes, kernel_size=2 ** (i + 1) + 2, stride=2 ** (i + 1), padding=1, groups=num_classes, bias=False)

Bug:

while iterating with your settings: config[0] = 6, growth rate = 16 and num_init_features = 32 you will get the following out channels of the Dense Layers:

  • 48
  • 64
  • 80
  • 96
  • 112
  • 128

Let's say, i want to segment into 9 classes, and you set up_block = nn.ConvTranspose3d(... groups=num_classes ...) then in your code: num_features = 32 + 6 * 16 = 128 is correct for the first loop but 128 is not divisible by 9 and thus creating the following error: ValueError: in_channels must be divisible by groups

  • Solution 1: remove the parameter num_groups and have more trainable parameters or
  • Solution 2: calculate the variables based on the num_classes so that the division works

Did i miss something?

If this is intentional, then you might not let the user have to find the correct parameters. You could calculate them based on the num_classes ๐Ÿ™‚

However, thanks for sharing ๐Ÿ‘

Train on my own dataset

Hi!
First of all, thank you very much for sharing your project. It's a great job, congratulations!

I would like to train your network with my own dataset. I've .nii MRI files, Sagital T2 and STIR. Each file (patient) has got several slices, between 12 and 16 (shape=[nslices, 256, 256]).

Could you tell me if would be possible to train it with your network?
And, in the event that it is possible, how must I organize the data for training, i.e., all the slices in one array, each file in one array...?
For example, if I use 60 patients (.nii files) to train, "mri_data_train" should be of size [60xnslices,256,256]?
image

Thank you very much in advance!

All the best :)

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.