Document Sample
hw6 Powered By Docstoc
                                            Fall 2010

                              Assignment 6: Face Recognition

                                   Due: November 23, 2010

Lab Description:
In this lab you will attempt to identify human faces from a dataset of 66 subjects taken under
22 different lighting conditions. To do this you will use a subset of the CMU PIE dataset in
which all the faces are in a frontal pose (pose 27 according to the CMU PIE dataset naming
conventions). In addition, the subset of frontal face images has been cropped and
geometrically aligned so that the eyes (and mouth corners) of each face are in roughly the
same location. Your assignment is to program two simple face recognition systems.

1. Face Recognition System 0.1

You are to program a very simple face recognition system. (As there is a lot of overhead for
those of you who do not know Matlab, I have essentially done this part of the assignment for
you.) For the features that you feed to the classifier, you are to use the raw pixel values at
whatever resolution you choose. Using these features, you are to program a simple nearest
neighbor classifier.

In face recognition, the gallery images are the images in which each subject is labeled. (In
actuality all of the data that I give you are labeled, but you will only use the labels for the
gallery images.) You are allowed only a single gallery image per subject. This image is from a
frontal pose (pose 27) and is taken under frontal lighting (lights 8).

The probe images are the images used for testing your system, none of these images are
labeled. (Again, in actuality all of the data that I give you is labeled, but you will only use the
labels for the gallery images.) For each of the probe images you are to assign a label, i.e., the
classifier’s guess at the subject number.

2. Face Recognition System 0.5

You are to improve on your face recognition system in one of two ways: either by using a
more sophisticated classifier, or by processing your image features to make them less
sensitive to lighting. You are free to do what you like, but the goal here is to IMPROVE
performance. Also, whatever you choose to do most be documented and reported on in the
report. (Students in the 6000 level course must do both 2.1 and 2.2.)

2.1. If you use a more complex classifier….

Although the nearest neighbor classifier is parameter free and does not need training data,
your second classifier may. You are allowed to use all images of the first 10 people from the
dataset to train the parameters of whatever classifier you develop. These images are to be
removed from the dataset and not used as part of the gallery or probe images! (“Bootstrap”
data of this type is tricky to use as it does contain subject specific information; I will talk about
this in class.) Keep in mind that by removing these 10 subjects were are making the
classification problem a little easier to start with, as we have fewer subjects from which to

2.2 If you choose to extract better features…

This is a bit of a bottomless pit in terms of things you could try, but locally normalizing the
image brightness might go along way toward improving the results.

As with the previous four labs, you are to consider this lab as a friendly competition between
you and the other class members. The winner – as determined by the TAs – will get a
guaranteed increase in their letter grade by 1/3.

What to Program:

You are to program your face recognition system in Matlab.

What to Hand In:

Please put all your files into a directory named hw6_{your_UNI}, zip it into a file named
hw6_{your_UNI}.zip, and email the zipfile to Thomas (, with subject
“Biometrics hw6 from {your_UNI}.” Your submission should include the following:

1. A description of the experimentation done, including the logic behind your choice of
features and classifiers, as report.pdf. Note that in this lab you will be able to calculate your
own accuracy, so you can include a discussion of your performance in the report.
2. Your well commented source code. (Make sure to test your code in Matlab on cunix or clic).
You should have two (4000 level) or three (6000 level) functions. classifier1.m, should
implement part 1 of the assignment. classifier2a.m (and classifier2b.m for 6000 level)
should implement the one or two classifiers for part 2 of the assignment, according to your
course level. These functions should be callable like this
>> classifier1(path-of-image-directory, path-of-output-file)
The function should write to path-of-output-file a text file with one line for each image in
the probe set. That line should consist of the filename of the image and the subject number
output by your classifier for that image, separated by a space.

3. Two or three (depending on your level) text files as output by your functions described
above. Name these files classifier1_output.txt, classifier2a_output.txt, and
classifier2b_output.txt appropriately.

Please do not include the images, or intermediate images generated by your system, in your

Additional Information:

1. The face images are downloadable from the course website in a zip file called

2. A Matlab data file called iminfo.mat contains a matlab structure describing the data. This is
   contained in the above zip file.

3. A Matlab script file called sample.m contains sample code for how to read in the images
   and parse them into gallery, probe (and training sets). This is also contained in the above
   zip file. It also has essentially all of the code for doing face recognition system 0.1 above.
   (It may contain a bug or two, but it is correct in spirit.)

Shared By: