Neural Network project on Facial Keypoint Detection

I started work on my minor project for this semester, the topic for which I have chosen to be Facial Keypoint Detection using Convolutional Neural Networks. I have worked with Neural Networks in the past and they are an extremely useful algorithm in Machine Learning problems. They generally make the use of several hidden layers to prevent overfitting. But Convolutional Neural Networks are a different breed than the usual Neural Networks.

Regular neural networks do not scale well to images. Convolutional neural networks are an architecturally different way of processing dimensioned and ordered data. Instead of assuming that the location of the data in the input is irrelevant (as fully connected layers do), convolutional and max pooling layers enforce weight sharing translationally.

Further Reading:-
http://cs231n.github.io/convolutional-networks/
http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/

I have worked on image recognition before and it is a fascinating and a novel field to be working in. Earlier I had dabbled with image recognition softwares and classifiers.

Facial keypoint detection has far reaching applications in various fields of research like :-

  • tracking faces in images and video
  • analysing facial expressions
  • detecting dysmorphic facial signs for medical diagnosis
  • biometrics / facial recognition
  • age/ gender detection

In this project, I’ll be working on a dataset by the University of Montreal, which consists of information of about 7000 grayscale images, in the form of their pixel values, with the associated parameters. Every image has 30 features associated with it the training set, like the centres of the left and right eyes, the centres of the mouths etc in the training set given. Using these parameters, we will train our Neural Network, so that it can identify the keypoints from an arbitrary image whose pixel values are given (in the test data).

I have begun reading blogs, ebooks and research papers on using Neural Networks and Facial detection and recognition.
Deep Convolutional Network Cascade for Facial Point Detection
Facial Keypoints Detection

I will also be taking help from Daniel Nouri’s blog on the same topic, which is an excellent tutorial and will help me during the inital stages of the project.
Daniel Nouri’s blog on Facial Keypoint Detection

The various hardware and software specifications I will be working on are as follows:-
OS – Linux Based Operating System    CPU – Core i5/Core i7     RAM – 4gb/8gb

Programming Language – Python 2.7

Scikit-learn – Python based Machine Learning library

Theano – Python library used to optimize and evaluate mathematical expressions involving multi-dimensional arrays efficiently

Lasagne – Library used to build and train Neural Networks in Theano

I hope to continously update my progress/roadblocks on this project, so that this blog can prove to be a help for anyone who wants to experiement with Neural Networks, or in the field of facial detection and facial feature recognition.

~jigsaw