ML | Face Recognition Using Eigenfaces (PCA Algorithm)
Last Updated : 24 Sep, 2021
In 1991, Turk and Pentland suggested an approach to face recognition that uses dimensionality reduction and linear algebra concepts to recognize faces. This approach is computationally less expensive and easy to implement and thus used in various applications at that time such as handwritten recognition, lip-reading, medical image analysis, etc.
PCA (Principal Component Analysis) is a dimensionality reduction technique that was proposed by Pearson in 1901. It uses Eigenvalues and EigenVectors to reduce dimensionality and project a training sample/data on small feature space. Let's look at the algorithm in more detail (in a face recognition perspective).
Training Algorithm:
Let's Consider a set of m images of dimension N*N (training images).
👁 lfw_people_training_images Training Image with True Label (LFW people's dataset)
We first convert these images into vectors of size N2 such that:
👁 imagetovector
Now we calculate the average of all these face vectors and subtract it from each vector
👁 average_face average_face
Now we take all face vectors so that we get a matrix of size of N2 * M.
Now, we find Covariance matrix by multiplying A with AT. A has dimensions N2 * M, thus AT has dimensions M * N2. When we multiplied this gives us matrix of N2 * N2, which gives us N2 eigenvectors of N2 size which is not computationally efficient to calculate. So we calculate our covariance matrix by multiplying AT and A. This gives us M * M matrix which has M (assuming M << N2) eigenvectors of size M.
where,
and
From the above statement It can be concluded that and C have same eigenvalues and their eigenvectors are related by the equation . Thus, the M eigenvalues (and eigenvectors) of covariance matrix gives the M largest eigenvalues(and eigenvectors) of
Now we calculate Eigenvector and Eigenvalues of this reduced covariance matrix and map them into the by using the formula .
Now we select the K eigenvectors of corresponding to the K largest eigenvalues (where K <
M). These eigenvectors has size N2.
In this step we used the eigenvectors that we got in previous step. We take the normalized training faces (face - average face) and represent each face vectors in the linear of combination of the best K eigenvectors (as shown in the diagram below).
In this step, we take the coefficient of eigenfaces and represent the training faces in the form of a vector of those coefficients.
Now, we project the normalized vector into eigenspace to obtain the linear combination of eigenfaces.
From the above projection, we generate the vector of the coefficient such that
We take the vector generated in the above step and subtract it from the training image to get the minimum distance between the training vectors and testing vectors
If this is below tolerance level Tr, then it is recognised with l face from training image else the face is not matched from any faces in training set.