Part One: Testing recognition with cropped class images

Procedure

1.             Use the cropped, non-smiling students to compute 10 eigenfaces. The width and height of the eigenfaces for my experiments are 25 by 25. . The results are as follow:

         

                                                                 

 

         Th average face is as this:

 

2         Use the same set of images to compute a userbase.

3         Try using the mean face plus 1 through 21 eigenfaces, at a granularity of 2.  Have the program recognize the cropped, smiling students. Plot the number of faces correctly recognized versus the number of eigenfaces used as follow:

 

Questions and Answers

1.             Describe the trends you see in your plots.   Discuss the tradeoffs; how many eigenfaces should one use?  Is there a clear answer?  

 

         As we can see from the above plot, the recognition accuracy is improved as we increase the number of eigenfaces used from 1 to 7. But after this ascending trend, there is a degradation in the middle part. If we keep increasing the number of eigenfaces used, the recognition accuracy will be improved a little bit and then stop ascending but keep constant.

        

The tradeoffs about how many eigenfaces to use is that:  the more eigenfaces we use, the better accuracy we may get. But on the other hand, it’s more expensive to store and compare faces. In order to find the proper number of eigenfaces, we can take a look at the decay of eigenvalues. From the below plot, we can see that after the 10th eigenvalue, the remaining eigenvalues are comparatively negligible. So we should use 10 eigenfaces.

 

 

                                                                

     

  1. You likely saw some recognition errors in step 3; show images of a couple.  How reasonable were the mistakes?  Did the correct answer at least appear highly in the sorted results?

 

        Using 10 25 by 25 eigenfaces, the recognition errors are as follow.

 

              is recognized as :                        (the correct one)         

 

  is recognized as              (the correct one)                   

 

  is recognized as                (the correct one)          

 

As we can see from the above three rows, the correct answer usually appear highly in the sorted results. But in the forth row below, the correct answer doesn’t appear highly in the sorted results. I think this is because this face picture is not well exposed when it was taken, so the face features are not well recorded in the picture. Besides, the view angle of this face picture is not very consistent with the others. As a result, it can’t be recognized easily.

 

  is recognized as                                   (the correct one)

 

Part Two: Cropping and finding faces

Procedure

1.             Use the 10 eigenfaces file computed in the previous problem.

2.             Use your program to crop the elf.tga image. Use min_scale,max_scale, step parameters of .45, .55, .01. You should be able to successfully crop the image; if not, work on your code!

          Use min_scale,max_scale, step parameters of .45, .55, .01., the cropped face picture is as follow:        

 

  1.    Find a digital picture of yourself; if you really don't have one, use any portrait on the web.  Use your program to crop the picture.          

4.             Experiment with min_scale, max_scale, and step parameters to find ones that work robustly and accurately.

 

I have tested my code on the group pictures from our students. It’s comparatively easy to detect faces in these pictures since the eigenfaces we use are generated from their faces. The optimal min_scale and max_scale are separately 0.45 and 0.55. The step size can be 0.01, 0.02, or even 0.04.

 

                                               

 

5.             Find the faces in two different photos (use the crop=false option)

1.                   First, try the gropu1.tga image given; you should be able to find all 3 faces. If not, work on your code!

 

            Use min_scale,max_scale, step parameters of .45, .55, .01., the marked face picture is as follow: 

 

2.                   Find and try another group photo.  This could be of family and/or friends, or one from the web.  The photo should have at least four faces.

                               I have tried some friends pictures but they can’t be used for our code because of the image descriptor problem.

 

Questions and Answers

1.             What min_scale, max_scale, and scale step did you use for each image?  

 

The proper value for min_scale and max_scale depends on the resolution of the pictures. If the face picture is of high resolution compared with the students’ pictures, then small scales may work robustly and accurately. Conversely, if the picture is of low resolution compared with the students’ pictures, then large scales will work better.  For the students’ pictures, I use min_scale,max_scale, step parameters of .45, .55, .02. For the test on the picture of elf.tga, I use the same parameters. For the picture of three men, the min_scale and max_scale are separately 0.8 and 0.9, and the step parameter is 0.01.

         

  1. Did your attempt to find faces result in any false positives and/or false negatives?  Discuss each mistake, and why you think they might have occurred.

 

When I test my code on these pictures, some false positives appear as follow. The reason for the false positive detection might be that the recognized areas are nearer the face space than those true face areas. Considering that we only use 21 faces to train our PCA detector and then use 10 eigenfaces to represent each face, it is unavoidable that there will be false detections.

    

                                                       

 

     

 

 

Part Three: [Extra Credit] Verify Face

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?

 

(1)   The fewest false negative means the largest true positive. We can plot the receiver characteristics curve (ROC) to see how TP rate and FP rate change with different MSE threshold values.

(2)   First verify each student against his or her own smiling face, we can then find out the range of MSE associated with each face verifying test as follow.  Among these 21 student face verifying tests, the largest MSE is 230345 and the smallest MSE is 3610.

 

                                    

 

(3)   Try different MSE threshold values from 3610 to 230345, at a granularity of 7557.  With each MSE threshold value, have the program verify each student against his or her own smiling face, as well as all the other smiling faces. Count how many false positive and true positive there are under a specific MSE threshold value. Plot the ROC curve as follow.

According to the plot, if we want high true positive rate and low false positive rate, the MSE threshold value can be set around 150000.

 

 

 

 

 

  1. Using the best MSE threshold, what was the false negative rate? What was the false positive rate?

        

             If we set MSE threshold around 1500000, the false negative rate is about 1 – 90% = 10% and the false positive rate is about 35%.