The goal of this project was to implement and evaluate an automatic face recognition system.
Face localization was adapted from the algorithm of Rowley et.al. A 20*20 pixel sliding window scans a pyramid of the input image, feeding into several neural networks. The router network estimates rotation, while three detector networks classify the window as a face or non-face. This approach is very computationally intensive, and estimating rotation is the most demanding aspect. Our contribution to the localization algorithm is to reduce this processing time by i) using a genetic algorithm to evolve a more sparsely connected router network, and ii) to limit the search space by thresholding the input image on skin colour and texture.
An eigenface based algorithm was used for face recognition. Our contribution was to have the system automatically extract multiple and differently segmented faces from the training image, rather than manually segmenting a single face.
Evaluation of the localization algorithm demonstrated that it is generally robust, able to correctly andaccurately segment faces despite variations in lighting, rotation, scale, facial expression and occlusion. Furthermore, although the difference between network topologies was small, the evolved router topology improved speed by roughly 13%, while improving the localization rate compared to Rowleys fully connected topology by 3%. Texture thresholding reduced the running time of the algorithm by almost two thirds in both colour and grayscale images, while skin colour thresholding independently reduced the running time by 45%. In colour images the combined effect was a reduction in processing time of 75%.
Benchmarking of the recognition algorithm demonstrated that eigenface-based recognition is very sensitive to variations in face segmentation relative to the stored template. However, because automatic segmentation is likely to vary somewhat compared to a manual segmentation of the same face, performance of the eigenface based approach can be improved by automatically extracting and storing several slightly differently segmented templates per person.
The program was implemented in C, and new libraries for neural networks, image processing, TIFF reading/writing and genetic algorithms were written to make the system fast and flexible.