All Projects → josedolz → SemiDenseNet

josedolz / SemiDenseNet

Licence: MIT license
Repository containing the code of one of the networks that we employed in the iSEG Grand MICCAI Challenge 2017, infant brain segmentation.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to SemiDenseNet

MRQy
MRQy is a quality assurance and checking tool for quantitative assessment of magnetic resonance imaging (MRI) data.
Stars: ✭ 58 (+5.45%)
Mutual labels:  mri, medical-imaging, medical-image-processing
Livianet
This repository contains the code of LiviaNET, a 3D fully convolutional neural network that was employed in our work: "3D fully convolutional networks for subcortical segmentation in MRI: A large-scale study"
Stars: ✭ 143 (+160%)
Mutual labels:  theano, medical-imaging, convolutional-networks
neurdicom
RESTful PACS server with plugins
Stars: ✭ 97 (+76.36%)
Mutual labels:  medical-imaging, medical-image-processing
Viewers
The OHIF Medical Imaging Viewer is for viewing medical images. It can retrieve and load images from most sources and formats; render sets in 2D, 3D, and reconstructed representations; allows for the manipulation, annotation, and serialization of observations; supports internationalization, OpenID Connect, offline use, hotkeys, and many more features.
Stars: ✭ 1,753 (+3087.27%)
Mutual labels:  medical-imaging, medical-image-processing
subpixel-embedding-segmentation
PyTorch Implementation of Small Lesion Segmentation in Brain MRIs with Subpixel Embedding (ORAL, MICCAIW 2021)
Stars: ✭ 22 (-60%)
Mutual labels:  mri, medical-imaging
Dermatron
Dermatology focused medical records software, augmented with computer vision and artificial intelligence [Meteor packaged with Electron]
Stars: ✭ 19 (-65.45%)
Mutual labels:  medical-imaging, medical-image-processing
coursera-ai-for-medicine-specialization
Programming assignments, labs and quizzes from all courses in the Coursera AI for Medicine Specialization offered by deeplearning.ai
Stars: ✭ 80 (+45.45%)
Mutual labels:  medical-imaging, medical-image-processing
U Net
U-Net: Convolutional Networks for Biomedical Image Segmentation
Stars: ✭ 374 (+580%)
Mutual labels:  medical-imaging, convolutional-networks
dicomifier
A medical image converter
Stars: ✭ 22 (-60%)
Mutual labels:  mri, medical-imaging
Brain-MRI-Segmentation
Smart India Hackathon 2019 project given by the Department of Atomic Energy
Stars: ✭ 29 (-47.27%)
Mutual labels:  mri, medical-imaging
mri-deep-learning-tools
Resurces for MRI images processing and deep learning in 3D
Stars: ✭ 56 (+1.82%)
Mutual labels:  mri, medical-imaging
modelhub
A collection of deep learning models with a unified API.
Stars: ✭ 59 (+7.27%)
Mutual labels:  medical-imaging, medical-image-processing
NMRI
2D Fourier Transform of Nuclear Magnetic Resonance Imaging raw data
Stars: ✭ 13 (-76.36%)
Mutual labels:  medical-imaging, medical-image-processing
Improved-Wasserstein-GAN-application-on-MRI-images
Improved Wasserstein GAN (WGAN-GP) application on medical (MRI) images
Stars: ✭ 23 (-58.18%)
Mutual labels:  theano, medical-imaging
covid19.MIScnn
Robust Chest CT Image Segmentation of COVID-19 Lung Infection based on limited data
Stars: ✭ 77 (+40%)
Mutual labels:  medical-imaging, medical-image-processing
sight
Surgical Image Guidance and Healthcare Toolkit
Stars: ✭ 38 (-30.91%)
Mutual labels:  medical-imaging, medical-image-processing
rt-utils
A minimal Python library to facilitate the creation and manipulation of DICOM RTStructs.
Stars: ✭ 89 (+61.82%)
Mutual labels:  medical-imaging, medical-image-processing
mammography metarepository
Meta-repository of screening mammography classifiers
Stars: ✭ 44 (-20%)
Mutual labels:  medical-imaging, medical-image-processing
Brainy
Brainy is a virtual MRI analyzer. Just upload the MRI scan file and get 3 different classes of tumors detected and segmented. In Beta.
Stars: ✭ 29 (-47.27%)
Mutual labels:  mri, medical-imaging
2D-and-3D-Deep-Autoencoder
Convolutional AutoEncoder application on MRI images
Stars: ✭ 57 (+3.64%)
Mutual labels:  theano, medical-imaging

SemiDenseNet

This repository contains the code of the network that we employed in the iSEG Grand MICCAI Challenge 2017, infant brain segmentation. This network extends out previous work in 3D fully convolutional neural network that was employed in our work: 3D fully convolutional networks for subcortical segmentation in MRI: A large-scale study, which can be found here : (https://github.com/josedolz/LiviaNET/).



IMPORTANT: This Net is not the one that best performed in the iSEG Challenge, but the one with an individual path per modality and a late fusion stage to merge learned features (See figure). In case you want to adapt this net to the best performing net, you should remove one of the paths and merge T1 and T2 modalities at the input of the network.



NOTE: The submission of this work is under review. If you use this code for your research, please consider citing the papers:

The main differences with respect to that network are:

  • The use of multi-modal images (MR-T1 and T2) processed in independent paths.
  • Feature maps from all the layers are connected to the first fully connected layer (That is why we call it: Semi-dense Net).

Requirements

  • The code has been written in Python (2.7) and requires Theano
  • You should also have installed scipy
  • (Optional) The code allows to load images in Matlab and Nifti formats. If you wish to use nifti formats you should install nibabel
  • Since, as you might now, sharing medical data is not a good-practice, I did not include any sample in the corresponding folders. To make your experiments you must include your data in the repositories indicated in the config file (LiviaNET_Config.ini and LiviaNET_Segmentation.ini)

Running the code

Running the code actually works in the same way that LiviaNet. Just a reminder if you do not want to check the documentation from that net :)

Training

How do I train my own architecture from scratch?

To start with your own architecture, you have to modify the file "LiviaNET_Config.ini" according to your requirements.

Then you simply have to write in the command line:

python ./networkTraining.py ./LiviaNET_Config.ini 0

This will save, after each epoch, the updated trained model.

If you use GPU, after nearly 5 minutes you will have your trained model from the example.

Can I re-start the training from another epoch?

Imagine that after two days of training your model, and just before you have your new model ready to be evaluated, your computer breaks down. Do not panic!!! You will have only to re-start the training from the last epoch in which the model was saved (Let's say epoch 20) as follows:

python ./networkTraining.py ./LiviaNET_Config.ini 1 ./outputFiles/LiviaNet_Test/Networks/liviaTest_Epoch20

Ok, cool. And what about employing pre-trained models?

Yes, you can also do that. Instead of loading a whole model, which limits somehow the usability of loading pre-trained models, this code allows to load weights for each layer independently. Therefore, weights for each layer have to be saved in an independent file. In its current version (v1.0) weights files must be in numpy format (.npy).

For that you will have to specify in the "LiviaNET_Config.ini" file the folder where the weights are saved ("weights folderName") and in which layers you want to use transfer learning ("weights trained indexes").

Testing

How can I use a trained model?

Once you are satisfied with your training, you can evaluate it by writing this in the command line:

python ./networkSegmentation.py ./LiviaNET_Segmentation.ini ./outputFiles/LiviaNet_Test/Networks/liviaTest_EpochX

where X denotes the last (or desired) epoch in which the model was saved.

Versions

  • Version 1.0.
    • October,20th. 2017
      • Network processes multi-modal data (so far only two-modalities) and fuses the learned features before the first fully convolution connected layer.

Known problems

  • In some computers I tried, when running in CPU, it complains about the type of some tensors. The work-around I have found is just to set some theano flags at the beginning of the scripts. Something like:
THEANO_FLAGS='floatX=float32' python ./networkTraining.py ./LiviaNET_Config.ini 0

You can contact me at: [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].