The goal of this project is to implement U-Net from scratch and apply it to DRIVE Dataset for Retinal Blood Vessel Segmentation.
UNet was introduced in 2015, and is one of the popularly used approaches in semantic segmentations. The architecture has four main components.
- Encoder : Acts as the feature extractor and learns an abstract representation of the input image through a sequence of the encoder blocks.
- Skip connections : Provides additional information that helps the decoder to generate better semantic features.
- Bridge : Connects the encoder and the decoder network and completes the flow of information. It consists of two 3×3 convolutions, where each convolution is followed by a ReLU activation function.
- Decoder : It is used to take the abstract representation and generate a semantic segmentation mask. The decoder block starts with a 2×2 transpose convolution.
Original paper : U-Net: Convolutional Networks for Biomedical Image Segmentation
The dataset contains images and their corresponding masked versions of retinal blood vessels from patients with various conditions. Here is an example:
Image | Mask | 1st Manual |
---|---|---|
The U-Net model is implemented in the file model.py
E:.
├───DRIVE
│ ├───test
│ │ ├───images
│ │ └───mask
│ └───training
│ ├───1st_manual
│ ├───images
│ └───mask
├───results
└───saved_files
├───test
│ ├───image
│ └───mask
└───train
├───image
└───mask
More results can be found on /results
folder.