[50 points] You are given a set of 50 face images pertaining to 10 different subjects (5 images per subject).
Compute the eigen-faces (i.e., basis images) using 30 face images (first 3 images per subject). Show the mean face and the eigen-faces corresponding to the top 100 eigen- values.
Using the mean face and the top 100 eigen-faces, compute the eigen-coefficients (i.e., the 100-dimensional feature vector) for all the images in the dataset, including the 30 face images you had used in 1a.
Generate genuine scores and impostor scores by computing the Euclidean distance between the feature vectors of every pair of face images. Plot the histograms of genuine and impostor scores in the same graph. Use a different color for each histogram.
Plot the ROC curve summarizing the matching performance using these scores. You can use the matlab code available here to plot the ROC curve. The code can be invoked as roc(gen, imp, ’d’). Here, gen and imp are the set of genuine and impostor scores, respectively.
Repeat the above after selecting the top (i) 25, (ii) 50, (iii) 75 eigen-faces. Plot the ROC curves for each case. Comment on the change in matching performance as you vary the number of eigen-faces used to generate the feature vector.
Select 10 of your own frontal face photos (“selfies”). Crop each photo so that only the face is seen. Next, rescale each cropped face photo to a size of 30 × 30. Finally, convert the cropped and scaled photos from color to grayscale.
Display the 10 grayscale images.
Compute the fisher-coefficients of the 10 faces using the top 25 eigen-faces computed in
Compute the genuine scores between every pair of faces (there will be 45 genuine scores).
Plot the histogram of 45 genuine scores on the same graph as 1c. For this part, you can re-plot the histograms from the previous question and use them here.
Comment on the accuracy of the face matcher.