Homework 2 - due Oct 8

In this homework we will be implementing "Face Recognition Using Eigenfaces".

First download the AT&T face dataset. This consists of face images for 40 individuals, with 10 example images per person.

In Matlab:

Part 1: Face Recognition

  1. Resize all face images to thumbnail size 32x32.
  2. The first 5 images for each individual will be used as your training set, the other 5 as your test set.
  3. Perform PCA on the training faces and extract the first k eigenvectors (eigenfaces). These will form the basis for your new lower dimensional "face space". Note you should calculate PCA yourself rather than using matlab's built in PCA function.
  4. For each test image, compute its projection into your face space. Classify each test image as the category of the nearest (SSD) face in the training set.
  5. Visualize the top 20 eigenfaces and produce a plot showing the computed eigenvalues in sorted order.
  6. Produce a plot showing how recognition performance varies with k (choose some rough sampling for values of k between 1 and 1024).

Part 2: Face Detection

  1. Collect some non-face images and resize them to thumbnail size 32x32.
  2. Project these images into your face space (for the k of your choice).
  3. Look at how the reconstruction error varies between face and non-face images.
  4. Find a good threshold on reconstruction error to divide your non-face images from face images.

What to Turn in

Email to cse591@gmail.com: your code + a web page describing the results of your experiments. Your web page should include images showing: the first 20 eigenfaces computed by PCA, your plot showing eigenvalues in sorted order, your plot showing how performance varies with k, and a table showing face/non-face images nearby, but on either side of your computed threshold.