|
Department of Electrical Engineering The Vision and Image Science Laboratory |
| Subject: | Face Recognition using Neural Network |
| Students: | Asaf Cohen & Nadav Busani |
| Supervisor: | Johanan Erez |
Project Goal
Our goal in this project is to implement a Face Recognition application,
which relies on a database of face pictures of different people. The application
should be able to identify a person from the database.
Our Aproach
The system implemented in this project is composed of two major units.
The first one is based on the Eigen Faces algorithm. The second one is
the identification application which is based on a Back Propagation Neural
Network.
The purpose of the Eigen Faces algorithm is to create a spanning base
of the pictures (The Eigen Faces). Using this base we can represent face
pictures with several coefficients (about ten) instead of having to use
the whole picture.
Figure 1: Three Eigen Faces (Base Pictures).
The aim of the second unit is to perform the identification using the Neural Network. The network is being trained on the pictures from the database first, and then it is ready to identify face pictures given to it.
Figure 2: An example of a three layers Neural Network.
The algorithm main steps
Eigen Faces Unit:
1 Load the pictures from the database.
2 Calculate the covariance matrix out of the pictures.
3 Calculate the eigen vectors which correspond to the largest
eigen values of the covariance matrix. These vectors form the spanning
base (The Eigen Faces).
Neural Network Unit:
1 Load the pictures to the network. Note that what enters the
network are the picture’s coefficients, calculated using the spanning base,
and not the picture itself.
2 Train the network on these pictures for a number of iterations.
3 Load a picture to identify (and calculate its coefficients).
4 Identify picture by using the network.
Tools
The Eigen Faces algorithm was implemented as a matlab program, which
creates an output file containing the Eigen Faces.
The Neural Network application was implemented in Visual C++, under
Windows 95 environment.
Results
The network was trained on a database of 5 different persons each had
10 different face pictures.
There was a 100% success in identifying pictures from the database,
which the network was trained on, and about 90% success in identifying
pictures the network was not trained on, and noisy pictures. There was
not a single case of a false identification, i.e. identifying one person
as another one.
Figrure 3: Pictures from the database that were identified.
Figrure 4: Pictures not from the database that were identified.
Figure 5: Noisy pictures that were identified.
Figure 6: Noisy pictures that were not identified.
Conclusions
1 It is important that the Neural Network’s input series will
be as short as possible in order to decrease the application’s running
time (Therefore we use the Eigen Faces coefficients).
2 The database should include a wide variety of pictures per
each person to obtain successful identification percentage by the Neural
Network.
3 There is a great importance to the number and order of iterations.
The network is to be trained alternately on different persons rather than
perform training iterations only on one person and than move to another.
Activating the network in the second way damages the identification percentage.
4 The targets to the network should be carefully chosen.
5 The pictures should be normalized to the same standard, which
means uniform size, contrast etc.
6 The pictures should include only the face without any background.
Therefor a real system should have an image processing program which detects
first the face in a picture, and then perform the identification process
on the face picture.
Acknowledgments
We would like to thank our supervisor Johanan Erez and the VISL laboratory for their support and guidance and to the Ollendorff Minerva Center Fund which supported this project.