For a Face Recognition system which one is better using Neural Network or the Histogram with pattern matching concept ?? which one is more accurate??

I need to integrate the face recognition engine to a Java project so I think it is hard to integrate a math lab project to a java project. So I need to know about Histograms and pattern matching in OpenCv (C++) and Neural Networks. Which one is better??


migrated from stackoverflow.com Jan 24 '12 at 11:57

This question came from our site for professional and enthusiast programmers.

  • $\begingroup$ you can use haar-like-features+adaboost+PCA,LDA or more complicated AAM,ASM approaches. $\endgroup$ – mrgloom Aug 14 '12 at 6:59
  • $\begingroup$ Could you add some links to papers which explain those techniques? Also, when you use an acronym, there are very likely some users who do not know what they stand for - spelling it out and adding references for them would be most helpful. $\endgroup$ – Martin Thompson Dec 28 '12 at 15:36

Well, it's important to understand that face recognition (just like object recognition process) is a two-stage process, the first one is the Computer Vision phase, which is to represent the image (face) in feature space that works well (depending on the task you want to do) so for example, the image itself is a set of ordered pixels (let's say 300x300), which makes each image representative by 90000 numbers, this is the dimensionality of your data points (images) and just FYI, 90000 is insanely huge, if you try to use Neural Networks, Support Vector Machines, or any other classification tool using this high dimensions, you will absolutely learn nothing - this is the curse of dimensionality (you will need to provide tremendously larger set for training, in other words, to learn any classifier you will need many more images than 90000, which is hard and unreasonable thing to do).

So you will need to represent the images in a different space (called feature space), for face recognition, there is something called eigenfaces (look it up), but the idea is that you find the most discriminate features of the faces then for each image, you convert that image to a set of numbers that will use the discriminant features to describe the image, so each image will be represented as a set of numbers (.3, .1, .1, ...) which will be much smaller than 90000. By the way (.3, .1, .1, ...) will mean something like for example .3 there's a difference between hair and face, .1 there's difference between face and background and so... However, this is a really hard step (feature selection) and it may vary based on the kind of images you have (like the basic eigenfaces only work when your images are aligned, are your images aligned?). Of course using Color Histograms is another approach to represent the image/face (personally (this is only my opinion), I think that color histograms won't be so efficient for face recognition, I might be wrong and would love to know if anyone knows)

The second step is the classification step, here you can use Neural Networks (which also needs a lot of parameter tuning), Support Vector Machines (popular), or decision trees (simple and interpretable), adaboost (popular), and some other approaches. - so you will provide your images in the feature space instead of the pixel-representative and hopefully you'll learn a good classifier that will classify with high accuracy.

Hope that helps


I am not sure about the state of art in Neural Network implementations. However, you might want to try this matlab implementation of Histogram based facial recognition - http://www.mathworks.com/matlabcentral/fileexchange/22457-processed-histogram-based-face-recognition

It claims to have 99.75% accuracy on the ORL database


There is no such thing as standard "neural network" system for face recognition. Any system with this method can vary vastly depending on your feature inputs to the network and how well it is trained to do the job. Some clarity would help to point out a better comparison.

Note that there are systems that can go up to 99.999% accuracy (or so they claim) but it is quite reasonable to think that can NOT be true. (edit)

  • $\begingroup$ Did you mean "it is quite reasonable to think that can NOT be true."? $\endgroup$ – Matthias Odisio Feb 1 '12 at 18:48
  • $\begingroup$ ah yes. indeed. fixed. $\endgroup$ – anasimtiaz Feb 2 '12 at 7:39

Your Answer
