V-Net is a convolutional neural network for 3D image segmentation.
To train your model using mixed precision with Tensor Cores or using FP32, perform the following steps using the default parameters of the V-Net model on the Hippocampus head and body dataset present on the medical segmentation decathlon website.
- Clone the repository
git clone https://github.com/NVIDIA/DeepLearningExamples
cd DeepLearningExamples/TensorFlow/Segmentation/V-Net_tf
- Download and preprocess the dataset
The V-Net script main.py operates on Hippocampus head and body data from the medical segmentation decathlon. Upon registration, the challenge's data is made available through the following link:
The script download_dataset.py is provided for data download. It is possible to select the destination folder when downloading the files by using the --data_dir flag. For example:
python download_dataset.py --data_dir ./data
Once downloaded the data using the download_dataset.py script, it can be used to run the training and benchmark scripts described below, by pointing main.py to its location using the --data_dir flag.
Note: Masks are only provided for training data.
- Build the V-Net TensorFlow container
After Docker is correctly set up, the V-Net TensorFlow container can be built with:
docker build -t vnet_tf .
- Start an interactive session in the NGC container to run training/inference.
Run the previously built Docker container:
$ docker run --runtime=nvidia --rm -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -v /path/to/dataset:/data vnet_tf:latest bash
Note: Ensure to mount your dataset using the -v flag to make it available for training inside the NVIDIA Docker container. Data can be downloaded as well from inside the container.
- Start training
To run training on all training data for a default configuration (for example 1/4/8 GPUs FP32/TF-AMP), run the vnet_train.py script in the ./examples directory:
usage: vnet_train.py [-h]
--data_dir DATA_DIR
--model_dir MODEL_DIR
--gpus {1, 8}
--batch_size BATCH_SIZE
--epochs EPOCHS
OPTIONAL [--amp]
For example:
python examples/vnet_train.py --data_dir ./data/Task04_Hippocampus --model_dir ./tmp --gpus 8 --batch_size 260 --epochs 50 --amp
To run training on 9/10 of the training data and perform evaluation on the remaining 1/10, run the vnet_train_and_evaluate.py script in the ./examples directory:
usage: vnet_train_and_evaluate.py [-h]
--data_dir DATA_DIR
--model_dir MODEL_DIR
--gpus {1, 8}
--batch_size BATCH_SIZE
--epochs EPOCHS
OPTIONAL [--amp]
This is useful to estimate the convergence point of the training. For example:
python examples/vnet_train_and_evaluate.py --data_dir ./data/Task04_Hippocampus --model_dir ./tmp --gpus 1 --batch_size 8 --epochs 260 --amp
- Start inference/predictions
To run inference on a checkpointed model, run the
vnet_predict.pyscript in the./examplesdirectory:
usage: vnet_predict.py [-h]
--data_dir DATA_DIR
--model_dir MODEL_DIR
--batch_size BATCH_SIZE
OPTIONAL [--amp]
For example:
python examples/vnet_predict.py --data_dir ./data/Task04_Hippocampus --model_dir ./tmp --batch_size 4 --amp