In this project, We are going to label the pixels of a road in a given image using a Fully Convolutional Network (FCN). This project is an extension of Jonathan Long and Evan Shelhamer's work in the paper "Fully Convolutional Network for Semantic Segmentation".
Make sure you have the following is installed:
The dataset used for training the model can be downloaded. Download the Kitti Road dataset from here. Extract the dataset in the data
folder. This will create the folder data_road
with all the training a test images.
Here I implement the code in the main.py
module to develop the model using the layers of VGG Network using a skip layer architecture and then write optimization and training code for this model. And then this model is used to produce results using the test data of the Kitti Road Dataset
.
Run the following command to run the project:
python main.py
The implementation code for the fully convolutional network is available in the ipython notebook as well. You can use the jupyter notebook to study the code using a cell by cell approach to see what is happening under the hood.
Here are some cherry picked examples from the results produced.
When the following images go in:
Here are the results that we get.
You can also produce the same results yourself using the code here. The same model can also be used to process video files using minor modifiations to the code base.