CSE 446 Project 4:  Eigenfaces for Recognition

Yanping Huang
huangyp at u dot washington dot edu
March 13st, 2008

Testing recognition with cropped class images

Methods

Each face is treated as a vector. Principal Component Analysis (PCA) can be used to find the eigen space of covariance matrix. A face can then be represented by a vector of coefficients weighting the eigenfaces.  The vector of coefficients of a user’s face can be computed by projecting the face onto the eigen space. Given a query face, we first compute the vector of coefficients for it. We then compute the MSE between its coefficients and the coefficients of each user’s face in the user base. The face in the user based of the least MSE will be the best match.  To speed up the computation, I implemented the linear kernel trick described in the project webpage (extra credits). I also implement other different kernel PCA methods.(extra credits)

Results

 

Average face

 

Top ten eigenfaces.

 

Recognition Graph

 

Discussion

1. The above plot shows that we can more the correctly recognized faces with  more eigenfaces. However, the increased number of eigenfaces will lead to the increased computational cost. Therefore, there is a trade off between recognition accuracy and computational cost.

2. Mismatch pairs

  was recognized as , while his nonsmile face   ranked 9th in the order list.

  was recognized as , while his nonsmile face   ranked 2nd in the order list.

  was recognized as , while his nonsmile face   ranked 20th in the order list.

  was recognized as , while his nonsmile face   ranked 2nd in the order list.

  was recognized as , while his nonsmile face   ranked 11th in the order list.

  was recognized as , while his nonsmile face   ranked 4th in the order list.

 The mistakes seem somewhat hit or miss. But those mismatch pairs did share a lot of similarites. Saddly I myself was recognized as a female (so was this guy ). Even with different guassian and polynomial kernels, those six guys cannot be recognized sucessfully.

 

Crop and find faces

Methods

To enhence the performance, I used a color cue to find a proper area (extra credit).  It is modified from Human Skin Colour Clustering for Face Detection 2003

% The skin colour at uniform daylight illumination

R > 95 AND G > 40 AND B > 20 AND

|R − G| > 15 AND // also R and G components must not be close together, otherwise we are not dealing with the fair complexion

R > G AND R > B //R component must be the greatest component

OR  // The skin colour under flashlight or (light) daylight

R > 220 AND G > 210 AND B > 170 AND

|R − G| ≤ 15 AND // R and G components must be close together

R > B AND G > B //B component must be the smallest component

 

To take care of the color noise, I check this constraint over a 21X21 patch centered around that pixe. If 90% or above are non skin, the pixel will be rejected ( a very very soft constraint).

 

To determine whether an area is a face, the area is then projected onto the face space. The projection and the original area are then used to compute MSE. I also used the technique multiplying MSE by the distance from the area from the face mean and then dividing by the variance of the area.

 

To save computational time, I only use scale = 0.55 for most faces.

 

Results

 

Chop elf.tga  

 

Black dots are considered as skin pixel.                         Reject 21X21 patch that contains 90% of non skin pixeles.

 

Group  nonsmiling images

 

 

 

   Group smiling images

 

 

 

 

Group Image

scale = 1 to 1.6 with step 0.2

 

 

6 faces are found!

 

Human and animals ^_^. (extra credits)

 

 

Verify Faces (extra credits)

Nosmiling user vs. smiling himself and 

                       vs. a smiling face of his neighbors(+1)

 

Using binary search,  I tried are MAX_MSE with 1e+3, 1.3e+3, 1.5e+3, 1.8e+3, and 2e+3. Among them, 1.5e+3 worked best.The false negative rate is 8.3%(2/24), and the false positive rate is 20.8%(5/24).

Extra credits

1.  Use a color cue to find faces.

2.  Implement this speedup for calculating eigenvectors. This tenique is actually linear kernel trick.

3.  Implement Kernel PCA: with both Guassian kernel and Polynomial kernel. The results from kernel PCA is the same as the results from 24 eigen-vectors. 18 out of   24 faces were recognized.

4.  Use eigenfaces to recognize images other than faces or to recognize animal faces even toies.

 

5.  Verify faces