All Projects → MiguelMonteiro → Vnet Tensorflow

MiguelMonteiro / Vnet Tensorflow

Tensorflow implementation of the V-Net architecture for medical imaging segmentation.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Vnet Tensorflow

Cascaded Fcn
Source code for the MICCAI 2016 Paper "Automatic Liver and Lesion Segmentation in CT Using Cascaded Fully Convolutional NeuralNetworks and 3D Conditional Random Fields"
Stars: ✭ 296 (+252.38%)
Mutual labels:  segmentation, medical-imaging
Torchio
Medical image preprocessing and augmentation toolkit for deep learning
Stars: ✭ 708 (+742.86%)
Mutual labels:  segmentation, medical-imaging
Dipy
DIPY is the paragon 3D/4D+ imaging library in Python. Contains generic methods for spatial normalization, signal processing, machine learning, statistical analysis and visualization of medical images. Additionally, it contains specialized methods for computational anatomy including diffusion, perfusion and structural imaging.
Stars: ✭ 417 (+396.43%)
Mutual labels:  segmentation, medical-imaging
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 (-4.76%)
Mutual labels:  medical-imaging, segmentation
Segment Open
Segment Source Distribution
Stars: ✭ 34 (-59.52%)
Mutual labels:  segmentation, medical-imaging
XNet
CNN implementation for medical X-Ray image segmentation
Stars: ✭ 71 (-15.48%)
Mutual labels:  medical-imaging, segmentation
All About The Gan
All About the GANs(Generative Adversarial Networks) - Summarized lists for GAN
Stars: ✭ 630 (+650%)
Mutual labels:  segmentation, medical-imaging
VNet
Prostate MR Image Segmentation 2012
Stars: ✭ 54 (-35.71%)
Mutual labels:  medical-imaging, segmentation
Medicaldetectiontoolkit
The Medical Detection Toolkit contains 2D + 3D implementations of prevalent object detectors such as Mask R-CNN, Retina Net, Retina U-Net, as well as a training and inference framework focused on dealing with medical images.
Stars: ✭ 917 (+991.67%)
Mutual labels:  segmentation, medical-imaging
Ganseg
Framework for medical image segmentation using deep neural networks
Stars: ✭ 18 (-78.57%)
Mutual labels:  segmentation, medical-imaging
mri-deep-learning-tools
Resurces for MRI images processing and deep learning in 3D
Stars: ✭ 56 (-33.33%)
Mutual labels:  medical-imaging, segmentation
Data Science Bowl 2018
End-to-end one-class instance segmentation based on U-Net architecture for Data Science Bowl 2018 in Kaggle
Stars: ✭ 56 (-33.33%)
Mutual labels:  segmentation, medical-imaging
MONAILabel
MONAI Label is an intelligent open source image labeling and learning tool.
Stars: ✭ 249 (+196.43%)
Mutual labels:  medical-imaging, segmentation
Slicer
Multi-platform, free open source software for visualization and image computing.
Stars: ✭ 263 (+213.1%)
Mutual labels:  segmentation, medical-imaging
medical image segmentation
Medical image segmentation ( Eye vessel segmentation)
Stars: ✭ 90 (+7.14%)
Mutual labels:  medical-imaging, segmentation
Medicalzoopytorch
A pytorch-based deep learning framework for multi-modal 2D/3D medical image segmentation
Stars: ✭ 546 (+550%)
Mutual labels:  segmentation, medical-imaging
medSeg
Medical Image Segmentation Toolkit based on PaddlePaddle - 基于paddle的医学影像分割框架
Stars: ✭ 88 (+4.76%)
Mutual labels:  medical-imaging, segmentation
Brain-MRI-Segmentation
Smart India Hackathon 2019 project given by the Department of Atomic Energy
Stars: ✭ 29 (-65.48%)
Mutual labels:  medical-imaging, segmentation
Slicergitsvnarchive
Multi-platform, free open source software for visualization and image computing.
Stars: ✭ 896 (+966.67%)
Mutual labels:  segmentation, medical-imaging
Extensionsindex
Slicer extensions index
Stars: ✭ 36 (-57.14%)
Mutual labels:  segmentation, medical-imaging

Tensorflow implementation of V-Net

This is a Tensorflow implementation of the "V-Net" architecture used for 3D medical imaging segmentation. This code only implements the Tensorflow graph, it must be used within a training program.

Visual Representation of the Network

This is an example of a network this code implements.

VNetDiagram

Example Usage

from VNet import VNet

input_channels = 6
num_classes = 1

tf_input = tf.placeholder(dtype=tf.float32, shape=(10, 190, 190, 20, input_channels))

model = VNet(num_classes=num_classes, keep_prob=.7)

logits = model.network_fn(tf_input, is_training=True)

logits will have shape [10, 190, 190, 20, 1], it can the be flattened and used in the sigmoid cross entropy function.

How to use

  1. Instantiate a VNet class. The only mandatory argument is the number of output classes/channels. The default arguments of the class implement the network as in the paper. However, the implementation is flexible and by looking at the VNet class docstring you can change the network architecture.

  2. Call the method network_fn to get the output of the network. The input of network_fn is a tensor with shape [batch_size, x, y, z, ..., input_channels] which can have as many spatial dimensions as wanted. The output of network_fn will have shape [batch_size, x, y, z, ..., num_classes].

Notes

In a binary segmentation problem you could use num_classes=1 with a sigmoid loss and in a three class problem you could use num_classes=3 with a softmax loss.

Implementation details

The VNet class with default parameters implements the network as is in the original paper but with a bit more flexibility in the number of input and output channels:

  1. The input can have more than one channel. If the input has more than one channel than one more convolution is added before the input to increase the input number of channels to match n_channels. If the input has only one channel then it is broadcasted in the first skip connection (repeated ``n_channel` times).
  2. The output does not need to have two channels like in the original architecture.

The VNEt class can be instantiated with following arguments

  • num_classes: Number of output classes.
  • keep_prob: Dropout keep probability, set to 1.0 if not training or if no dropout is desired.
  • num_channels: The number of output channels in the first level, this will be doubled every level.
  • num_levels: The number of levels in the encoder and decoder of the network. Default is 4 as in the paper.
  • num_convolutions: An array with the number of convolutions at each level, i.e. if num_convolutions = (1, 3, 4, 5) then the third level of the encoder and decoder will have 4 convolutions.
  • bottom_convolutions: The number of convolutions at the bottom level of the network. Must be given separately because of the odd symmetry of the network.
  • activation_fn: The activation function. Defaults to relu, however there is prelu implementation in this code.
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].