Académique Documents
Professionnel Documents
Culture Documents
On
(Face Recognition)
Submitted in partial fulfillment of the requirements
For the award of the degree of
Bachelor of Technology
In
Computer Science and Engineering
By
(Ramesh Kumar Verma)
Roll. No. 1309710918
Semester VII
Under the Supervision of
(Mr. Lucknesh Kumar)
CERTIFICATE
This is to certify that the project report entitled Face Recognition submitted by
Ramesh Kumar Verma, Deepak Kumar And Arun Kumar to the Dr. A.P.J. Abdul
Kalam Technical University, Utter Pradesh in partial fulfillment for the award
of Degree of Bachelor of Technology in Computer science & Engineering is a
bonafide record of the project work carried out by them under my supervision during
the year 2015-2016.
ACKNOWLEDGEMENT
The significant contribution in the preparation of this project would not have been
possible without mentioning few names, which have extended substantial support.
It is with great pleasure that we present our project report on Human Face Detection
and Recognition to Department of Computer Science Engineering in Galgotias
College of Engineering & Technology Greater Noida.
I am grateful to Galgotias College of Engineering & Technology for permitting me to
undergo for a research project on Human Face Detection and Recognition. While
developing this project, I have learnt a lot. This will be an un-forgetful experience. While
developing this project, a lot of difficulties were faced by me. But it was the help of some
special people that I have gained much confidence and developed the project quite well.
On the submission of our thesis report on Human Face Detection and Recognition, we
would like to extend our gratitude and sincere thanks to our supervisor Mr. Lucknesh
Kumar, Department of Computer Science and Engineering for his constant motivation
and support during the course of our work in the last one year. We truly appreciate and
value his esteemed guidance and encouragement from the beginning to the end of this
thesis. We are indebted to him for having helped us shape the problem and providing
insights towards the solution.
I would like to thank all the Staff of Galgotias College of Engineering & Technology
Greater Noida for their support and for making my training valuable.
Deepak Kumar
Roll no.-1209710033
Arun Kumar
Roll no. - 1209710024
ABSTRACT
Keyword: PCA (principal component analysis), MPCA, LDA, EgineFace and
OpenCV.
Human face detection and recognition play important roles in many applications such as
video surveillance and face image database management. In our project, we have studied
worked on both face recognition and detection techniques and developed algorithms for
them. In face recognition the algorithm used is PCA (principal component analysis),
MPCA(Multilinear Principal Component Analysis) and LDA(Linear Discriminant
Analysis) in which we recognize an unknown test image by comparing it with the known
training images stored in the database as well as give information regarding the person
recognized. These techniques works well under robust conditions like complex
background, different face positions. These algorithms give different rates of accuracy
under different conditions as experimentally observed. In face detection, we have
developed an algorithm that can detect human faces from an image. We have taken skin
color as a tool for detection. This technique works well for Indian faces which have a
specific complexion varying under certain range. We have taken real life examples and
simulated the algorithms in C# (.NET) successfully
LIST OF FIGURES
Figure Title
Page
3.1
70
4.1
Vertical Manifold
95
4.2
95
4.3
95
4.4
Spiral Manifold
95
4.5
o
Spiral Manifold Configuration ( = 225 )
96
4.6
Spiral Manifold with Different Flow Entry Angles (20O, 32.5O and 45O)
96
4.7
Helical Manifold (Helical Angles 30O, 35O, 40O, 45O and 50O)
97
4.8
Spiral Manifold
97
CONTENTS
Title
Page
CERTIFICATE
ACKNOWLEDGEMENTS
II
ABSTRACT
III
LIST OF FIGURES
IV
CHAPTER 1 INTRODUCTION
1.1
1.2
Introduction
Face Recognition
7
7
CHAPTER 2 TOOLs/ENVIRONMENT
2.1
2.2
Software Requirements
Hardware Requirements
9
9
CHAPTER 3 ANALYSIS
3.1
Modules
10
3.2
Flow Diagram
13
CHAPTER 4 DESIGN
4.1. Mathematical Background
14
18
CHAPTER 5
5. Conclusion
22
References
23
CHAPTER- 1
1.1. INTRODUCTION
Humans are very good at recognizing faces and complex patterns. Even a passage of time
doesn't affect this capability and therefore it would help if computers become as robust as
humans in face recognition. Face recognition system can help in many ways:
Checking for criminal records.
Finding lost children's by using the images received from the cameras fitted at public
places.
Knowing in advance if some VIP is entering the hotel.
Detection of a criminal at public place.
Can be used in different areas of science for comparing an entity with a set of entities.
7
Pattern Recognition.
This project is a step towards developing a face recognition system which can recognize
static images. It can be modified to work with dynamic images. In that case the dynamic
images received from the camera can first be converted in to the static one's and then the
same procedure can be applied on them. But then there are lots of other things that should
be considered. Like distance between the camera and the person, magnification factor,
view [top, side, front] etc.
1.2. FACE RECOGNITION
The face recognition algorithms used here are Principal Component Analysis(PCA),
Multilinear Principal Component Analysis (MPCA) and Linear Discriminant
Analysis(LDA). Every algorithm has its own advantage. While PCA is the most simple
and fast algorithm, MPCA and LDA which have been applied together as a single
algorithm named MPCALDA provide better results under complex circumstances like
face position, luminance variation etc. Each of them has been discussed one by one
below.
2.1 PRINCIPAL COMPONENT ANALYSIS (PCA)
Principal component analysis (PCA) was invented in 1901 by Karl Pearson. PCA
involves a mathematical procedure that transforms a number of possibly correlated
variables into a number of uncorrelated variables called principal components, related to
the original variables by an orthogonal transformation. This transformation is defined in
such a way that the first principal component has as high a variance as possible (that is,
accounts for as much of the variability in the data as possible), and each succeeding
component in turn has the highest variance possible under the constraint that it be
orthogonal to the preceding components. PCA is sensitive to the relative scaling of the
original variables. Depending on the field of application, it is also named the discrete
KarhunenLove transform (KLT), the Hotelling transform or proper orthogonal
decomposition (POD).
The major advantage of PCA is that the eigenface approach helps reducing the size of the
database required for recognition of a test image. The trained images are not stored as
raw images rather they are stored as their weights which are found out projecting each
and every trained image to the set of eigenfaces obtained.
2.1.1 The eigenface approach
8
CHAPTER - 2
Tools/Environment Used
Software Requirements:
9
Operating System
Language
: C#
Hardware Requirements:
Processor
RAM
Hard disk
Monitor
Web camera.
CHAPTER - 3
Analysis
3.1Modules
10
Add Image/Registration
Image Capture
Login
Eigen face Computation
Identification
A module is a small part of our project. This plays a very important role in the project and
in coding concepts. In Software Engineering concept we treat it has a small part of a
system but whereas in our programming language it is a small part of the program, which
we also called as function in, some cases which constitute the main program.
Importance of modules in any software development side is we can easily understand
what the system we are developing and what its main uses are. At the time of project we
may create many modules and finally we combine them to form a system.
Module Description
Add Image/Registration
Add Image is a module that is considered with adding image along with the user id for
login of the person of whom we are taking image. In this we add Image by capturing
from web camera and store them in our system. During registration four images are
captured. Each image is stored four times as minimum of sixteen images are required for
the algorithm of comparison.
Image Capture Module
This module is used to capture image using web camera. This is written as a separate
thread to avoid system hanging. This module is used to capture image in login module
and registration module.
11
Login
This modules function is to compare the captured image with stored images in the
system. This module uses Eigenface computation defined in next modules for
comparison.
Eigenface Computation
This module is used to compute the "face space" used for face recognition. The
recognition is actually being carried out in the FaceBundle object, but the preparation of
such object requires doing lots of computations. The steps are:
* Compute an average face.
* Build a covariance matrix.
* Compute eigenvalues and eigenvector
* Select only sixteen largest eigenvalues (and its corresponding eigenvectors)
* Compute the faces using our eigenvectors
* Compute Eigenspace for our given images.
Identification
This module contains the functionality to take the image from above module and it
compares or searches with the images already there in the database. If any image is
matched then a success` message is shown to the user.
12
Registration:
Create Username
Registration
Login:
Enter Username
False
True
Authentication Provided
13
Authentication Declined
Flow Diagram:
Start
Login
Action
Register
Enter Login
Id
Capture Image
Capture Image
Compare
Store
Success
Success
Message
Failure
Message
Feature extraction
14
Facial image
classification
CHAPTER -4
Design
5.1
Mathematical Background
This section will illustrate mathematical algorithm that are the back bone of Principal
Component Analysis. It is less important to remember the exact mechanics of
mathematical techniques than it is to understand the intuition behind them. The topics are
covered independently of each other and examples are given.
Variance, Covariance, Covariance Matrix and Eigenvectors and Eigenvalues are basis of
the design algorithm.
a. Variance
The variance is a measure of the spread of data. Statisticians are usually concerned with
taking a sample of a population. To use election polls as an example, the population is all
the people in the country, whereas a sample is a subset of the population that the
statisticians measure. The great thing about statistics is that by only measuring a sample
of the population, we can work out what is most likely to be the measurement if we used
the entire population.
Let's take an example:
X = [1 2 4 6 12 25 45 68 67 65 98]
We could simply use the symbol X to refer to this entire set of numbers. For referring to
an individual number in this data set, we will use subscript on the symbol X to indicate a
specific number. There are number of things that we can calculate about a data set. For
example we can calculate the mean of the sample. It can be given by the formulae:15
b. Covariance
Variance and SD are purely 1-dimensional.Data sets like this could be: height of all the
people in the room, marks for the last CSC378 exam etc. However many data sets have
more than one dimensions, and the aim of the statistical analysis of these data sets is
usually to see if there is any relationship between the dimensions. For example, we might
have as our data set both the height of all the students in a class, and the mark they
received for that paper. We could then perform statistical analysis to see if the height of a
student has any effect on their mark. It is useful to have measure to find out how much
the dimensions vary from the mean with respect o each other.
Covariance is such a measure. It is always measured between 2 dimensions. If we
calculate the covariance between one dimension and itself, you get the variance. So if we
had a three dimensional data set (x, y, z), then we could measure the covariance between
the x and y dimensions, the x and z dimensions, and the y and z dimensions. Measuring
the covariance between x and x, or y and y, or z and z would give us the variance of the x,
y and z dimensions respectively.
The formula for covariance is very similar to the formulae for variance.
16
How does this work? Lets use some example data. Imagine we have gone into the world
and collected some 2-dimensional data, say we have asked a bunch of students how many
hours in total that they spent studying CSC309, and the mark that they received. So we
have two dimensions, the first is the H dimension, the hours studied, and the second is the
M dimension, the mark received.
So what does the covariance between H and M tells us? The exact value is not as
important as its sign (ie. positive or negative). if the value is positive, then that indicates
that noth dimensions increase together, meaning that, in general, as the number of hours
of study increased, so did the final mark.
If the value is negative, then as one dimension increase the other decreases. If we had
ended up with a negative covariance then would mean opposite that as the number of
hours of study increased the final mark decreased.
In the last case, if the covariance is zero, it indicates that the two dimensions are
independent of each other.
17
dimensions x,y and z. Then the covariance matrix has 3 rows and 3 columns, and the
values are this:
cov(x,x) cov(x,y) cov(x,z)
C=
Point to note: Down the main diagonal, we see that the covariance value is between one
of the dimensions and itself. These are the variances for that dimension. The other point
is that since cov(a,b) = cov(b,a), the matrix is symmetrical about the main diagonal.
18
Lastly, all the eigenvectors of a matrix are perpendicular, ie. at right angles to each other,
no matter how many dimensions you have. By the way, another word for perpendicular,
in math talk, is orthogonal. This is important because it means that we can express the
data in terms of these perpendicular eigenvectors, instead of expressing them in terms of
the x and y axes. Every eigenvector has a value associated with it, which is called as
eigenvalue. Principal eigenvectors are those which have the highest eigenvalues
associated with them.
5.2
PCA Algorithm
matrix of images. Where one image is just a single point in high dimensional space [n *
n], where n * n are the dimensions of a image. There can be many eigen vectors for a
covariance matrix but very few of them are the principle one's. Though each eigen vector
can be used for finding different amount of variations among the face image. But we are
only interested in principal eigen vectors because these can account for substantial
variations among a bunch of images. They can show the most significant relationship
between the data dimensions.
Eigenvectors with highest eigen values are the principle component of the Image set. We
may lose some information if we ignore the components of lesser significance. But if the
eigen values are small then we won't lose much. Using those set of eigen vectors we can
construct eigenfaces.
b. Finding EigenFaces
(1) Collect a bunch [say 15] of sample face images. Dimensions of all images should
be same. An image can be stored in an array of n*n dimensions [ ] which can be
considered as a image vector.
{ ii=1,2, .., M }
Where M is the number of images.
(2) Find the average image of bunch of images.
M
1
= i
M i=1
(1)
(3) Find the deviated [avg - img1 , avg - img2, ......... , avg - img.n] images .
i= i-;
i=1,..M.
(2)
C=AAT ,
C=
c (d , 1) c (d ,2) c (d , d)
(3)
where
But the problem with this approach is that we may not be able to complete this operation
for a bunch of images because covariance matrix will be very huge. For Example
Covariance matrix ,where dimension of a image = 256 * 256, will consist of [256 * 256]
rows and same numbers of columns. So its very hard or may be practically impossible to
store that matrix and finding that matrix will require considerable computational
requirements.
So for solving this problem we can first compute the matrix L.
L=AATA
(4)
Vi (i=1,..M)
Eigen Vectors for Covariance matrix C can be found by
Where ui
(i=1,.M)
(5) Using these Eigen vectors , we can construct eigen faces . But we are interested in the
eigen vectors with high Eigen values . So eigen vectors with less than a threshold Eigen
value can be dropped .So we will keep only those images which correspond to the highest
eigen values. This set of images is called as face space. For doing that in java, we have
used colt algebra package. These are the steps involved in the implementation -->
i) Find L=ATA [from 4]
Convert it in to a DoubleDenseMatrix2D by using colt matrix class.
ii) Find the eigen vector associated with that by using class :cern.colt.matrix.linalg.EigenvalueDecomposition
This will be a M by M [M = number of training images] matrix.
iii) By multiplying that with 'A' [Difference image matrix] we'll be able to get the actual
eigenvector matrix [U] of covariance of 'A'. It will be of M by X [Where X is the total
number of pixels in a image].
c. Classifying Face Images
The eigenfaces derived from the previous section seem adequate for describing face
images under very controlled conditions; we decided to investigate their usefulness as a
tool for face recognition. Since the accurate reconstruction of the image is not a
requirement, a smaller number of eigenfaces are sufficient for the identification process.
So identification becomes a pattern recognition task.
Algorithm:
1. Convert image into a matrix [ ] so that all pixels of the test image are stored in a
matrix of 256*256[rows] by 1 [column] size.
22
2. Find weights associated with each training image. This operation can simply be
performed by,
Weight
Matrix
TransposeOf
(EigenVector-of-CovarianceMatrix)
DifferenceImageMatrix.
This matrix will be of size N by N, where N is the total number of face images. Each
entry in the column will then represent the corresponding weight of that particular image
with respect to a particular eigenvector.
2. Project
above. But here we are projecting a single image and hence we will get a matrix of size N
[rows] by 1 [columns].Let's call this matrix as 'TestProjection' matrix.
23
CHAPTER -5
Conclusion
1. The user will be authenticated not only with the username also with the image of
the user
2. For the processing, some of the lines on the face will be used so that the image
can be identified with the different angles.
3. The image processing process is good enough to provide security for the website.
Future Enhancements
1. The project can be enhanced for processing 3D images.
2. Authentication can be implemented by capturing video clip of a
person.
3. This can also be used to process the signatures of a person for
providing the authentication.
24
References
[01 ]Yong Zhang, Member, IEEE, Christine McCullough, John R. Sullins, Member, IEEE
Hand-Drawn Face Sketch Recognition by Humans and a PCA-Based Algorithm IEEE
TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS SYSTEMS AND HUMANS,
VOL. 40, NO. 3, MAY 2010.
[02] K. W. Bowyer, K. Chang, P. J. Flynn, and X. Chen, Face recognition using 2-D, 3D and infrared: Is multimodal better than multisampling?Proc. IEEE, vol. 94, no. 11, pp.
Nov.2012.
[03] G. Medioni, J. Choi, C.-H. Kuo, and D. Fidaleo, Identifying no cooperative subjects
at a distance using face images and inferred three-dimensional face models, IEEE
Trans. Syst., Man, Cybern. A, Syst.,Humans, vol. 39, no. 1, pp. 1224, Jan. 2009.
Websites
http://www.imageprocessingplace.com/
http://www.graphicsmagick.org/
http://www.imagemagick.org/
http://www.mediacy.com/
Books
25
26