AT&T Eigenfaces

A Python class that implements the Eigenfaces algorithm for face recognition, using eigen decomposition and principle component analysis.

We use the AT&T data set, with 60% of the images as train and the rest 40% as a test set, including 85% of the overall energy, in order to reduce the number of computations.

Additionally, we use a small set of celebrity images to find the best AT&T matches to them.

All images should have the same size, namely (92 width, 112 height).

Example Calls

Normal AT&T face data set training and recognition:

$> python2.7 eigenfaces.py att_faces

or if we want to include also the celebrity faces evaluation:

$> python2.7 eigenfaces.py att_faces celebrity_faces

Results

Under the results/ folder there will be a att_results.txt file containing detailed results from the evaluation over the test images (40% of all faces).

If a celebrity data set was specified, for each face in the celebrity data set, there will be a folder with results for it, including the Top 5 matches from the AT&T faces, as well as the similarity score between them.

Plotting

We can also plot (using gnuplot) the accuracy results, depending on how much energy we want to use to recognise the faces. Currently the different energy values to be tested are hard-coded to be multiples of 5, but this can easily be changed form energy.py.

$> python2.7 energy.py att_faces
$> gnuplot plot_energy.gpi

Algorithm Reference

Link to the description of the algorithm in the OpenCV documentation.