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! ^_^
1.KNOW THE BASICS BEFORE IMPLEMENTING THE TECHNOLOGY!
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" :)
1.1.WHAT IS FACE RECOGNITION?
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!
1.2.DIFFERENCE BETWEEN FACE RECOGNITION & FACE DETECTION?
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!
1.3.WHY USE FACE RECOGNITION - NEED FOR ITS EMERGENCE?
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
1.4.DIFFERENT APPROACHES OF FACE RECOGNITION:
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,(OUR HERO :P )
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.
2.OUR SELECTED ALGORITHM FOR IMPLEMENTATION:
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?!"
2.1.1. IS 'PCA BASED EIGENFACES' METHOD 100% EFFICIENT???
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!
2.2. SHOULD I "NOT" TRY THE OTHER ALGORITHMS THEN?!
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! :)
2.3 WORKING OF PCA BASED EIGENFACES METHOD:
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 :)