header photo

Level 4a - Getting Ready For FACE RECOGNITION - the BASICS

Welcome my dear readers! at requests of my regular readers, i've started working on the face RECOGNITION tutorial series! hope that makes you happy! ^_^

As ALWAYS i shall stress my readers to NEVER skip out the basics whenever learning or implementing something NEW to you! Reason being that there are bits of vital information in basics that ALWAYS  help us do our best and more efficiently!

i have made this tutorial as a 19min video in two parts below, covering all the content of this tutorial - i think video makes "theory" LESS boring :P  for clear readability, you can read the slides from the below video, HERE.

OR, go ahead with the geeky version of the tutorial below, and read the whole tutorial by starting off with knowing what exactly is Face Recognition by "definition" :)

frankly you'd find tons of answers to this question.  but here's my short version:

Face recognition is the task of identifying an already detected object as a KNOWN or UNKNOWN face, and in more advanced cases, telling EXACTLY WHO'S face it is!

Often the problem of face recognition is confused with the problem of face detection.
Ok, in 1.1, the above definition, note the stress i placed on the object being "detected already". in short:

Face detection
is to identify an object as a "face" and locate it in the input image.
Face Recognition on the other hand is to decide if this "face" is someone KNOWN, or UNKNOWN, basing on the database of faces it uses to validate this input face.

so face detection's output( the face) is in fact recognition's input. and recognition's output is the final decision: face known/face unknown! clear enough i hope? here's a "visual" explanation:

its a bit rough, but i hope you got the picture? :) Right then, moving ON!



Positive identification of individuals is a very basic societal requirement. In small tribes and villages, everyone knew and recognized everyone else. You could easily detect a stranger or identify a potential breach of security. In today's larger, more complex society, it isn't that simple. In fact, as more interactions take place electronically, it becomes even more important to have an electronic verification of a person's identity. Until recently, electronic verification took one of two forms:
1- It was based on something the person had in their possession, like a magnetic swipe card, or
2- something they knew, like a password.

The problem is, these forms of electronic identification aren't very secure, because they can be given away, taken away, or lost and motivated people have found ways to forge or circumvent these credentials.
So, the ultimate form of electronic verification of a person's identity is biometrics; using a physical attribute of the person to make a positive identification.

There are many robust biometric techniques like fingerprinting which can be used for human authentication then why go for face recognition?

In many applications like the surveillance and monitoring ,say, of a public place, the traditional biometric techniques will fail as for obvious reasons we can not ask everyone to come and put his/her thumb on a slide or something similar. So we need a system which is similar to the human eye in some sense to identify a person. To cater this need and using the observations of human psychophysics, face recognition as a field emerged.

Different approaches have been tried by several groups, working world wide, to solve this problem. Many commercial products have also found their way into the market using one or the other technique. But so far no system / technique exists which has shown satisfactory results in all circumstances [^]

well here's a great document for you. just read page 1-4. yep! that's it and you'll know the briefest possible vital info on approaches of Face Recognition! DO READ all that i've highlighted in this document at ALL costs please! 

So, here's what we learnt:
A.Recognition algorithms can be divided into two main approaches:

1- geometric: which looks at distinguishing features.
2- photometric: which is a statistical approach that distill an image into values and comparing the values with templates to eliminate variances.
B.Popular recognition algorithms include
1. Principal Component Analysis using Eigenfaces
2. Linear Discriminate Analysis,
3. Elastic Bunch Graph Matching using the Fisherface algorithm
4. the Hidden Markov model, and
5. the neuronal motivated dynamic link matching.

Ah yes! we'll be using Principal Component Analysis using Eigenfaces !

2.1.WHY SELECT 'PCA based Eigenfaces' method?
well, PCA based Eigenface method is at the most primary level and simplest of efficient face recognition algorithms --- and is therefore a great place for beginners to start learning face recognition!
You see, PCA based Eigenfaces method for recognition is as supported by EmguCV library as is Viola-Jones method for detection is! So, implementing it in ASP.NET is SIMPLE: Plug-n-Play!
i.e, load the classes, call their functions and TADA! you're done! YES-- you DO NOT NEED TO CODE the algorithm! - simple enough?! :)
in other words "Why start in a HARD way when you CAN start it in a SIMPLE, EASY WAY?!"

FIRSTLY: NO, and i mean NO face RECOGNITION algorithm is YET 100% efficient  ! yes, it could reach 100% efficiency but NOT ALWAYS! So, NO EXISTING face recognition algorithm is 100% foolproof!!!
THAT is why, its a very hot topic of research today: to optimize face recognition such that it gives near-perfect efficiency in REAL-TIME and CRITICAL environment!
Therefore Secondly:  NO, on an average, PCA based Eigenfaces method is NOT 100% efficient! in fact, on the average, it goes up to 70% to 75% efficiency honestly.

2.1.2."cheh! then why even use it?!"
well, indeed you won't see security level recognition from Eigenface. However, It works good enough, to be used in a beginner or hobbyist robotics/computer vision project. because, just remember, that even though there are other better existing algorithms for face recognition, they are still NOT 100% efficient!
And those other recognition algorithms, though better than PCA based EigenFace, have a BIGGER overhead of "coding" effort you need to put in to implement them in your project if you're using EmguCV(or OpenCV), AND the results won't be "To Die For", considering the extra effort you will put in!

im NOT saying that don't go for other algorithms! its just that i suggest you to start SIMPLE please :) SO
1- IF you're a newbie to implementing face recognition, start with PCA based Eigenfaces Method! then if you'd like, move on to the better ones and see the difference and betterment yourself :)

2- BUT if you're an advanced user, doing research and all, Dear sir/madam, how can i even stop you from trying all that is more complex and demanding?? its ALL worth your effort! :)

Please start watching the video above at 13:19  that part inroduces you to this method in brief.
To understand how PCA Eigenfaces works to recognize a face calls for details , so let us continue that in our next topic, talking solely about PCA Eigenfaces method.

See you in the next Tutorial :) 

Go Back

Really cool works..........helped me a lot......

Awesome video!! Thanks a lot :)

Hi Mahvish and Tania,

Thank you so much for putting up this info. It is true that all this stuff about recognition is very new and there isn't a whole lot of info available. So I really do appreciate the work you are doing and am also glad that you take the effort to stylize your tutorials and website with cute graphics and friendly tone :)

I'm using Python and openCV and will document my work on my site soon: http://samkhan13.wordpress.com

There are stronger methods than PCA like Linear Discriminate Analysis and in a month's time I'll put info about those methods.

You can also gain source code in c++ and some helpful stuff in openTLD for your future endeavors: https://github.com/gnebehay/OpenTLD

the original openTLD codes were in matlab written by Zdenek Kalal for his PhD thesis.

Have fun ;)

All the best,

I like ur video. Keep up the good work.

This tutorial make me smile.

Thank you so much Mahvish for these tutorials. Thankful for your effort, but I really do hope the face recognition will be up soon :(. Or maybe just the source code for us to test and play around. I can see you are the most sincere in helping beginners/advance. Thank You Very Much

ı dont understnad :(

your current level4a tutorial is best tutorial available on net
Sir , please upload the tutorial i need to complete and submit the project on 20 April so please please

i am also waiting for the tutorials. hope you could really released it soon. this tuesday is the checking of our project. hope i can have the tutorial by then. thanks.:)

thank you very much..
but i want the face recognition tutorial quickly..
it is very important to my project.