PAM Face Authentication Musings: Face Verification using cascaded MACE and LBP based Classifier

http://code.google.com/p/pam-face-authentication/

By Rohan Anil, BITS Pilani Goa Campus

Our objective is to verify whether the given test image of face belongs to a particular class ( a user ) , in other words to check if it is what it claims to be.I will be introducing two methods and how I cascaded it to produce high Verification rate. The Cascading helped in reducing false acceptance ( an imposter getting verified , although the claim was false) and reducing false rejection ( a true user getting rejected as an imposter ).

MACE FILTER

Mace stands for Minimum Average Correlation Energy, it was introduced by Mahalanobis et al in 1987 ( way before I was even born ) , Its was applied to Face Verification by Vijayakumar , Savvides et all. They had successfully applied to CMU PIE Database Giving phenomenal results. Correlation can be described as matching , it has been used widely in Number Plate recognition et. It is a very easy concept, you can read it from almost every Introductory Image processing text books. One interesting thing about correlation is its equivalent in frequency domain is a simple element by element multiplication (taking the conjugate transpose of the first matrix).

The filter is produced through the following equation

There X is the Matrix d X N where N is the number of training images and d = image_width X image_height , and matrix D is a diagonal matrix of size d x d , the values are the average Fourier spectrum of training images. You can find different types of modification of the D matrix in the literature , one such is MINACE.

The h is a filter in frequency domain , now given a test image , for verification , we correlation, so in frequency domain, it becomes a simple multiplication.

Equation used for Correlation is iFFT( Conj_Transpose(FFT(TestImage)) .(X) h ) , this equation would give us the correlation output in Spacial domain. Now the next question is How do we verify? To do that we need a measure which shows how close the image is to the face of the claimed user. In the code there are two measures, one is Peak to side lobe ratio (PSLR) another is Peak correlation energy ratio (PCER), but currently only PSLR is used, since it gave higher verification rate on a small dataset than PCER. You can read the following paper [1] for the equation. Higher the PSLR the closer the image is to the face of the claimed user. The thresholds for PSLR is automatically (or automagically ) found from the training set itself. Problems I think with MACE filter is that, its a ratt-learner (ratt in hindi means by-heart ) , it just ratt's the the training images, which sometimes allows imposters to get verified. MACE filter also has problems coping with illumination datasets, and registration errors (eyes detected with >2% error (length) which seems small) can cause a very serious problem for verification. So for each illumination set a different MACE filter is trained.

LBP METHOD

LBP is a spatial filter(sort-of), it expands to Local Binary Pattern was introduced by Ojala et al. and can be used to get the texture features out of the Image. It is illumination tolerant to a great extent. It is very simple to compute. The operator assigns a label to every pixel of an image by thresholding the 3×3 neighborhood of each pixel with the center pixel value and considering the result as a binary number.A Local Binary pattern is uniform if the binary pattern contains at most two bitwise transitions from 0 to 1 or vice versa, in a circular fashion. This paper [2] would be an ideal way to start learning on its use.The following Images , represents the LBP output.


I have taken the average face of each Set and applied this operator and used a Chi Square distance (refer [2]) , if the test image falls below a certain threshold ( which was found through some analysis on a dataset) , this stage is declared as 'passed'.

CASCADING

A Picture Speaks a thousand words, I hope to make up for around 10-20 sentence that I have not written with the following picture.


The following method is giving less than 1% False Acceptance on a private dataset , i will provide the results on YALE dataset later ( as soon i get a new dell laptop , this one is dying )


[1] http://www.ece.cmu.edu/~kumar/Biometrics_AutoID.pdf

[2] http://www.idiap.ch/~marcel/professional/publications/marcel-ijivp-2007.pdf



1 comments:

James Klima said...

Thank you for your explanation. I was just looking through your code, can you tell me what are you doing with featureLBPSum function. Are you implementing normalized image our all pixels as described in the paper?

I would really appreciate your help in understanding this code?

Thanks,
James