SIMPLE FACE RECOGNITION IMPLEMENTATION
FOR COMPUTER AUTHENTICATION
Josh Easton, Tin-Yau Lo
The topic of face recognition for video and complex real-world environments has
garnered tremendous attention from governments for crime fighting as well as airport
terrorism deterrence. However, there has been little attention towards consumer use of
face recognition products. The aim of this project is to come up with a simple
implementation for computer authentication to replace the popular pass-phrase based
authentication on personal computers. The popularity of high-resolution cameras on
market made the possibility of face recognition based computer authentication possible.
Humans can recognize face even when the matching image is distorted, such as a
person wearing glasses, and humans can perform the task fairly easy. Understanding how
humans decipher and do matching is an important research topic for medical and neural
Facial recognition is an easy task for a human to perform; it is nearly automatic,
and requires little mental effort. A computer, on the other hand, has no innate ability to
recognize a face, and must be programmed with an algorithm to do so. Even the best
algorithms available today are not even close to perfect, and rely a lot on statistically
There are a few algorithms that can be used, one of which is the Eigenfaces
algorithm. It first must be trained by being given several images of the same face. These
images are used to train the computer to recognize several features of a person’s face.
Since the face will not be in the exact same pose every time, the face in the picture must
be centered and scaled. Generally the person’s eyes are used to center the images. After
this minor preprocessing, over a hundred signatures are taken of the face. In order to get a
good set of signatures, the face needs to be completely exposed, without any form of
After the computer has been trained to recognize a certain face, it can then look at
any picture of a face, calculate a set of signatures on it, and compare it to every face it has
been trained to recognize. It then will compute a set of probabilities for each trained face,
and whichever is the most probable will be considered a match. If none of the faces
appear to be very probable, then no match will be returned.
The Hidden Markov Models method works in much the same way. A set of
signatures are taken of a face to train it, and are used to compare to a target face to find a
The first step in our project consisted of researching the various facial-recognition
algorithms, and determining which would be the most fit for our application. There are
many open source libraries and applications available, each with a different level of ease-
of-use and completeness. Intel OpenCV and CSU Face Recognition engine are very
featured-rich but they are overly bloated. We decide to use Eigenface engine by Konrad
Darnok. As the engine itself was written in Java, we used Java to implement the video
grabbing and the rest of the front-end. The result is a program that can be used in
conjunction with a video camera. The capture program is shown at figure #1.
The “FaceRecognitionCap” program in figure #1 is written in Java which utilizes
Quicktime Java library sequence grabber library, running on Mac OS X and Windows
(with Quicktime installed) to take Snapshot into gray scale image. Therefore we simulate
the authentication by taken a series of trained image using the firewire camera and in our
QuickTime™ and a
TIFF (LZW) decomp resso r
are need ed to see this picture.
case, the Apple iSight to capture a 320x240 image from sequence grabber (using
Quicktime Java) and convert it into grayscale (with java.awt framework) and finally save
it into JPEG format using Sun’s JIMI image library.
Then the “FaceRecognition” Java program is to run the resultant test image
against a trained library. The result is printed out in a text window. In a real system, this
would be passed to a program that wanted to authenticate a user, such as a screen saver or
QuickTime™ and a
TIFF (LZW) decomp resso r
are neede d to see this picture.
The resulting program we created seemed to function as one would expect by
matching the test image to the closest image. It is good enough for a user to use to login
to their computer. However, it took considerably a while to be able to come up a
matching as the algorithm has to enumerate the trained images.
Using facial recognition for a simple task such as computer authentication is very
ideal. Computer users often have several passwords to remember, and using such
software can eliminate the need to remember them.
Facial recognition software is currently used mostly for surveillance. However,
computer authentication could potentially be a better use of such software. One reason
why is because for normal consumer use, the occasional false negative can be dealt with.
However, when doing surveillance, false negatives and false positives are a huge
All computer facial recognition algorithms in use today have trouble dealing with
obstructions on a person’s face, such as sunglasses. These obstructions can cause false
negatives. For a home or small office user, a false negative is ok, since the solution is to
simply remove the obstruction from the person’s face and to retry.
Also all computer facial-recognition systems which take images from camera can
be easily fooled. A simple method is to put a picture of the person in front of the video
camera, and then requesting authentication. This will trick the program into thinking the
real user is there and grant access. This method should therefore not be used for systems
that require high security. Instead it is only sufficient to protect unimportant data, such as
for someone’s personal email.
However, when using facial recognition on a large scale, such as for surveillance,
false negatives are very bad. Since simply wearing sunglasses can defeat the software,
then the criminal/bad guys can walk around undetected by wearing sunglasses. There is
not an easy solution for this problem. For the home user, you can simply ask them to
remove the obstruction and retry. However, on a large scale, you cannot make sunglasses
illegal, and so the problem cannot be worked around.
One more issue to keep in mind is the difficulty a facial recognition device will
have scaling up to a large database of faces. Large events such as the Olympics are places
where facial recognition software is touted as being a great tool. However it is also large
public events like this where the software would encounter major scalability problems. A
large database of people becomes too much of a strain when dealing with large crowded
events like this, as there are too many faces to check.
For computer authentication, you are generally authenticating a single person. It
also does not have to be done instantaneously, as most people are willing to wait a couple
of seconds to login. So in a situation such as this, facial recognition software is perfect.
Hopefully more work will be done in the coming years to bring facial recognition
to the everyday person. This is an area where the software will stand out, and can make
everyone’s life a little bit easier.
TASK PERFORMED BY MEMBERS
Description of task % done by Josh Easton % done by Tin-Yau Lo
Research for project 50% 50%
Programming 50% 50%
Report 50% 50%
PowerPoint presentation 50% 50%
Overall contribution 50% 50%
Tracking and Recognizing Rigid and Non-Rigid Facial Motions using Local Parametric
Model of Image Motion". In Proceedings of International Conference on Computer
E. Hillesland, S. Molinov, R. Grzeszczuk, Nonlinear Optimization Framework for Image-
Based Modeling on Programmable Graphics Hardware. ACM Transactions on Graphics.
22 (3), 2003.
Ara V Nefian, Lu Hong Liang, Xiao Xing Liu, Xiaobo Pi and Kevin Murphy, Dynamic
Bayesian networks for audio-visual speech recognition, to appear in EURASIP, Journal
of Applied Signal Processing, special issue on Joint Audio Visual Speech Processing.
RUNNING THE PROGRAMS
The distribution came with the directory “FaceRecognitionCap” and
FaceRecognitionCap is a Quicktime Java program, that requires Quicktime 6.1
and a compatible camera that support Quicktime on Windows with a simple
recompilation. It runs out of the box on MacOS X by double-clicking the
“FaceRecognitionCap” Icon. Push “Power” to initialize the Firewire bus, and click “Take
Snapshot” to produce a 320x240 greyscale image suitable for “FaceRecognition”. The
resultant capture file is “test.jpg”
FaceRecognition is the actual face recognition engine. Type the following at the
“FaceRecognition” directory :
java FaceRecognition trainedimages testing.jpg
A sample running such as the following will be produced :
kenneth% java FaceRecognition trainedimages testing.jpg
Constructing face-spaces from trainedimages ...
Comparing testing.jpg ...
Most closly reseambling: 15.jpg with 2.108734631580217