Project 6. Face Recognition using PCA Solution



In this project, you will implement a face recognition algorithm using the PCA technique learned from the class. 120 face images from 12 persons (10 images per each person) are provided for this project. Please use 60 face images for PCA training, and the rest images for testing. This time, you don’t have to write a full report for this project, but you will need to prepare a 10-slide PowerPoint presentation to summarize your experimental results. A general guideline of the PowerPoint presentation is given below.

  1. Slides 1-2: Summarize the PCA-based face recognition algorithm.

  2. Slide 3-4: PCA analysis on the 60 training face images. (use the Matlab function EIGS to find a few eigenvectors with top largest eigenvalues).

    1. Slide 3: Based on the progressive increase of the sum of top largest eigenvalues, select an appropriate order of eigenfaces for PCA-based face representation (p).

    2. Slide 4: Show one mean face and top p eigenface images

  3. Slide 5: For each person, pick one (out of five) test image, show the PCA reconstruction results with reconstruction errors with different PCA orders ranging from 1 to p.

  4. Slide 6, you use PCA to reconstruct some non-face images and some new face images of an unknown person. Compute the reconstruction error for each image and discuss your findings.

  5. Slide 7-8: Compute the overall recognition accuracy on 60 test images with ranks 1, 2, 3 (by separate plots) by using different PCA orders ranging from 1 to p.

  6. Slide 9-10: Further discussion of any interesting findings.

  7. Matlab source codes should be uploaded along with the PowerPoint presentation.


  1. M. Turk and A. P. Petland, “Eigenface for Recognition”, Journal of Cognitive Neuroscience, 3(1), 1991,

  2. M. Turk and A. Pentland, “Face recognition using eigenfaces,” Proc. IEEE Conference on Computer Vision and Pattern Recognition, Maui, Hawaii, 1991.

% The code to read 12*5 images (90×60) from 12 directories

for i=1:12

for j=0:4



for k=1:90



A((i-1)*5+1+j,x:y)=double(face(k,:)); % reshape the image into a vector