Travis McCoy: EigenFaces

Testing recognition with cropped class images

Procedures:

1.  Cropped, non-smiling eigenfaces:

Average: average_face.jpg

Eigenface0:eigen_face_0.jpg

Eigenface1:eigen_face_1.jpg

Eigenface2:eigen_face_2.jpg

Eigenface3:eigen_face_3.jpg

Eigenface4:eigen_face_4.jpg

Eigenface5:eigen_face_5.jpg

Eigenface6:eigen_face_6.jpg

Eigenface7:eigen_face_7.jpg

Eigenface8:eigen_face_8.jpg

Eigenface9:eigen_face_9.jpg

 

3. The number of faces recognized based on # of faces considered: (x axis = #used y-axis = #recognized)

 

 

Question 1: Based on the data, one could argue that two ranges of values for number of faces to be considered would be valid, depending on one’s preference for performance over accuracy. 9 faces appears to have the best trade-off between speed and accuracy, offering good accuracy for a minimal number of faces. At the same time, 18 faces gives the same accuracy as 25 faces, but uses 7 fewer faces. Consequently, there is no clear answer, and thus depending on the needs of the user, 9 or 18 would both be good choices.

 

Question 2: image 2 has a hard time recognizing the smiling version of the picture. The two are shown below:

 

02_smiling.jpg02_nonsmiling.jpg

 

While the correct result is listed as the 8th strongest match, the pictures aren’t dramatically different in angle or lighting, so we should reasonably expect the accuracy to be better.

 

In contrast, image 11 doesn’t match as the first result, but is recognized as the second. The images are shown below:

 

11_smiling.jpg11_nonsmiling.jpg

 

The two images are very close to each other, and as we would expect, they are ranked closely, though not as each other’s top match.

 

Cropping and finding faces

Due to time constraints, I was unable to successfully complete this feature by the deadline. Please note that all other 6 TODO methods in the project are present and working properly.

Verify Face

Procedure:

 

For the first six smiling and non-smiling images, they had the following MSE’s

1

2

3

4

5

6

1

9395

205716

66967

13144

73356

282957

2

35541

193812

70681

35228

43806

204327

3

153856

64697

20657

163729

265130

135602

4

46887

143308

36932

35599

127625

182140

5

86473

333305

153801

74181

40944

327688

6

564335

263465

269796

517585

597838

76881

 

Rather than search for the best threshold, we can plot out the MSE for each image pair and compute the best threshold. From the data, we see that that a mean squared error threshold of approximately 41000 generates the best results, balancing between finding all matches and limiting false positives. With such a threshold, we have a false negative rate of 33%, and a false positive rate of 13%. It’s worth noting that to get a better false negative rate, we would have to increase the threshold to 77000, dramatically increasing the false positive.