I have a project in which I need to make neural network for face recognition.
Inputs of network should be features of face which needs to be recognized.
I searched a lot and found SURF Detector of Matlab's Computer Vision Toolbox to be the one which will help me extract the features of face. But SURF Detector extracts keypoints of face and for each of them sets vector with 64 or 128 values. Problem is that the number of keypoints varies,and I need it to be same for each face, to be able to feed the inputs of neural network.
So i thought to extract only some features which can be presented as single number, like proportions of nose,mouth,eyes to the face, or distance between eyes, etc.
How can i get these features, and will they be good enough to serve as inputs to neural network which will need to recognize faces? On the output of neural network there will be same number of neurons as there is different people in database, and in training phase I'm going to feed the network with extracted face features from photo, and if it is photo of let's say third of five people in database, my output layer will look like [0,0,1,0,0].
Is this good approach and can you give me some code which extracts those face features from face in Matlab?
Proportions of nose/mouth/eyes to the face and distance between eyes will give you very bad results. Those are not measures that are accurate or distinctive enough.
If you're looking for features for face recognition, you should consider LBP: http://www.scholarpedia.org/article/Local_Binary_Patterns#Face_description_using_LBP