$25
separate zip file to Camino.
You are given a face image database of 10 subjects (in the att_faces_10.zip file). Each subject has 10 gray-scale images of 112×92 pixels. You will use the database for a face recognition task. For simplicity, for each subject, use face images 1,3,4,5,7,9 as the training images, and face images 2,6,8,10 as the test images. Convert each image to a vector of length D=112×92=10304. Stack 6 training images of all 10 subjects to form a matrix of size 10304×60. Apply singular-value decomposition (SVD) for dimensionality reduction. Find the top-K left singular vectors (K=1,2,3,6,10,20, 30, and 50) corresponding to the K largest singular values of the data matrix. Project the face images to the top-K left singular vectors and apply the nearest-neighbor classifier in the reduced
dimensional space. Plot the recognition accuracy rate (𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑐𝑜𝑟𝑟𝑒𝑐𝑡 𝑐𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 %) versus different K values.
𝑡𝑜𝑡𝑎𝑙 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑡𝑒𝑠𝑡 𝑖𝑚𝑎𝑔𝑒𝑠
Analyze the results you observe.
Note: the plotted figure should also include: xlabel, ylabel, x-coordinates, y-coordinates, legend, grid, and a figure caption.
Demo/Explain to TA (10%):
1. How do you construct the training data matrix?
2. How do you do SVD and find principal components of a different rank?
3. How do you project training and test images onto the principal components?
4. How do you do nearest-neighbor classification?