Project 4: Eigenfaces

In this project we create a facial recognition system which reduces each facial image to a vector, then uses Principal Component Analysis to find the space of faces. Below are some results.

Experiments

Testing recognition with cropped class images

Procedure

Questions

  • If you recognize a female face, will the second, third and fourth matches usually be female? How about for male faces? Give supporting data.
  • In a real-life scenario with thousands of users would you use the entire user set to compute the face space? Why or why not?
  • Why might it be better to use a face set independent of the user set to compute the eigenfaces?
  • The average face and seven eigenfaces constructed.



    The average face and twelve eigenfaces constructed.



    The three faces mis-matched and the five best matches.








    Recognizing the undergraduate faces

    Procedure

    1. Use the cropped undergraduate students (in ugrads_cropped) to compute 12 eigenfaces.
    2. Use the small set of class undergraduate images (in class_ugrads_cropped) to compute a userbase.
    3. Have the program recognize the cropped, non-smiling student images in this userbase.
    4. Repeat your experimentation with 5, 10, 15, and 20 eigenfaces. Remember to regenerate the userbase each time.
    5. Why is it best to use as few eigenfaces as possible while still getting good results?

    Questions

    1. Of the students in the class set who are also in the class undergraduate set, how many did the program recognize correctly? Incorrectly?
    2. Are the incorrect identifications reasonable? Do they look similar to the actual person? Give some example images.
    3. Why does the program perform more poorly in this recognition task than the previous one? Give at least three reasons.
    4. How did changing the number of eigenfaces used change your results? What number worked best?
    5. The five students who looked like everyone else (or the five students that everyone else looked like).



    Cropping the undergraduate faces

    1. Use the eigenfaces file computed in the previous problem
    2. Use your program to crop at least ten of the uncropped undergraduate images
    3. Experiment with min_scale, max_scale, and step parameters to find ones that work robustly and accurately without taking more than 10 seconds or so to run on each image

    Questions

    1. What min_scale, max_scale, and scale step did you end up using?
    2. How many of your crop results look correct (cropped to the same part of the face as the pre-cropped images)? How many look incorrect?
    3. What is the problem with using a min_scale that is too small?

    Ten cropped images.


    Finding faces in a group photo

    Procedure

    1. Find two group photos, one of family or friends and one from the web of TV or movie characters, or famous people. Each image should have at least four faces.
    2. Use your program to find the faces in the photos (use the crop=false option)
    3. Does the program tend to think any non-face items in the image are actually faces? Give some examples.

    Questions

    1. Show the results of the face detections
    2. What min_scale, max_scale, and scale_step did you use for each image?
    3. If there are any errors, explain why the program might have failed and how you could improve the input or the algorithm to correct this.

    Marked family and marked image including Paul Erdos, famous Mathematician.







    Extra Credit

    I implemented image warping by simply traveling a given distance in the direction between the two images. Here are some results. Warped TAS and some other warped classmates



    I also implemented verify face which determines whether an image is that of a given user's image given a magic number, max_reconstructed_mse.

    Procedure

    1. Use the cropped, non-smiling students to compute 6 eigenfaces.
    2. Use the same set of images to compute a userbase.
    3. Have the program verify the cropped, smiling student images in the smiling userbase. Test by verifying each student against his or her smiling face, as well as each student against a smiling face which is of someone else.
    4. Experiment with various thresholds to find the one that gives the fewest false positives and fewest false negatives

    Questions

    1. What MSE thresholds did you try? Which one worked best? What search method did you use to find it?
    2. Using the best MSE threshold, what was the false negative rate? What was the false positive rate?
    3. In a real-life verification scenario, why might it be better to have a low false positive rate than a low false negative rate?