The architecture was inspired by U-Net: Convolutional Networks for Biomedical Image Segmentation.
The data for training contains 30 512*512 images, which are far not enough to feed a deep learning neural network. I use a module called ImageDataGenerator in keras.preprocessing.image to do data augmentation.
See dataPrepare.ipynb and data.py for detail.
This deep neural network is implemented with Keras functional API, which makes it extremely easy to experiment with different interesting architectures.
Output from the network is a 512*512 which represents mask that should be learned. Sigmoid activation function makes sure that mask pixels are in [0, 1] range.
The model is trained for 5 epochs.
After 5 epochs, calculated accuracy is about 0.82.
Loss function for the training is Dice coefficient.
The dependencies for this project is given as an eviornment file.
- conda create -f enviornment.yml
You will see the predicted results of test image
Use the trained model to do segmentation on test images, the result is statisfactory.