Java Face Recognition


Introduction

Java Face Recognition is a small part of a larger project called CyberFridge. Two other parts are an electronic message board and a photo gallery. Face recogition will be used with the message board to provide a means of receiving private messages by the intended recipient.

Java Face Recognition is a Java application, once it's given a training set of images, that will perform face recognition to try to identify an individual in front of the camera. Once the identification is made, the program passes the identity to a script which enables the Message Board program to display messages to that particular user. At the same time, messages to other individuals are kept hidden, providing some measure of privacy of message content.

Background

The recognition process uses eigenfaces to help decide the identity of the mystery person. The premise of using eigenfaces is the ability to create a mathematical model of a person's face. This model is compared to other models the program currently knows based on its training set. If the differences between two models falls within acceptable limits, the program outputs that a match has been made. Otherwise, the models are of two different people.

Platform Requirements

Web Server
Machine needs to be able run cgi scripts and the java interpreter. The cgi scripts are written in C and Perl.

Client
For the messageboard, a web browser such as Netscape provides an interface for interaction with user. For face recognition, a PC with an ISA slot for the video capture card. Also, a video camera and software to capture images.

Installation

There are two parts to installing Java Face Recoginition, installing the message board and the face recognition software.

Part I
Step 1. Download Source
The source for Java Face Recognition is available at: http://www.prism.gatech.edu/~gt9922a/jfr.tar.

Once the file is downloaded, untar the file using the tar command:
tar -xf jfr.tar

Step 2. Compiling Source Files
The Java class files are included in the tar file, however if you wish to compile the code enter the following:
javac eigenface.java
javac frontend.java (optional)
javac jfr.java

This will produce all necessary class files. The frontend.java file is a graphical interface to the program that shows the processing of images. At the moment, it is commented out in the eigenface.java file.

The class files need to reside in a single directory. Within this directory, there should be at least two other subdirectories. One called "recog" and the other "training". Java Face Recognition supports classification of images as well. For example, if a group of students, faculty, and visitors need to be stored, use the following directory structure:
remove the training directory
create a directory for students labelled "students",
one for faculty labelled "faculty", and so forth.

Java Face Recognition will recurse into these directories and load any images there automatically.

Part II
Step 1. Download the source
The Message Board is located at http://www.cc.gatech.edu/computing/classes/cs3302_96_spring/projects/Team6/messageboard.proto.01.tar.gz.
Move the tar file to the location where it will be unpacked. Root access is notrequired to install the Message Board.

Step 2. Unpacking the file
First, you must gunzip the file by entering:
gunzip messageboard.proto.01.tar.gz

Followed by untarring the file using the tar command:
tar messageboard.proto.01.tar

Once the file has been unpacked, there will be a messageboard directory created in the current directory. Inside of that directory will be an install program, a configuration file, and a directory containing sources.

Step 3. Editting the config file
Edit the config file to reflect information about your system. Items that will need to be changed are:


Step 4. Run the installation program
When the config file has been modified, type in
./install
The modified Message Board files will be copied to new directories within the messageboard directory. The files are updated to contain the proper paths.

Putting the Pieces Together
To incorporate Java Face Recognition with the Message Board, a modified version of addmsg.cgi is included within the Java Face Recognition archive. To facilitate ease of installation, place all Java class files within the cgi-bin directory of the Message Board directory structure.

Here is a diagram showing how the pieces interact:

From Image Capture to Receiving Messages

By using a video camera and a video capture card, frames are captured to produce images for recognition. The images are captured are placed within the messageboard/cgi-bin/recog directory.

To start the Message Board system, on the server type in:
java server&

At the client, click on Start Applet from the Message Board web page. Whenever the user adds a message, the Java Face Recognition program is started. It will check the recognition directory for images and load them. It will also load images from its training set of people that are known to the program. Then the recognition process starts. In the instance of a match, the classification and name of the person are stored. The person's name is passed to a script to determine which of the messages stored is for them. A search is performed on the messages based on the recipient's name and the person identified by Java Face Recognition. Any messages found are sent the Message Board server. The server then passes the message on to the client's screen and the user can read their messages.

To start the program type java jfr. This starts a thread that polls the "recog" directory. an image. Images can be in either GIF or JPEG formats. At the moment, the filenames for images should incorporate the individual's name or login id. For example, one has ten images of Bob. They can be called bob1 up to bob10. Once an image is loaded, the program then processes the image, and produces a response. If a match is found, the program will classify the image and return the name of the image. The name of the image is passed to a script which searches for all messages to that individual. Then, those messages are sent to the Message Board so that they may be displayed to the user. All other messages are blocked.

Any questions or suggestions can be sent to Scott Campbell.
E-mail: scamp@avana.net
Phone: 770-522-0677