Where do I start creating a face recognition program? I am a beginner in the programing world who only knows little about c++. What do need to consider or what I have in place. I am running of windows pc and using devc++ and Mingw compilers.

Recommended Answers

All 8 Replies

Learn linear algebra thoroughly.
Learn C++ thoroughly.
Maybe then you begin start thinking about face recognition.

commented: Much more diplomatic than I would have been. +14
commented: Diplomatic danbe. +10

Facial recognition is an extremely complex superset of pattern recognition. Even experts who have been working on and researching this field for decades are just now coming up with reasonable solutions. This is not an exercise for newbies. The math is not simple, and translating that into code is equally not so simple. There are some good graduate-level text books on the subject (none are cheap), but first you need a strong foundation in the math involved - and linear algebra as ddanbe suggested, is just the beginning. Add in fractal geometry, etc.

I studied pattern recognition in grad school years ago and got to the point where my software could detect simple stuff - nothing as complex and varied as 3d mutable images (faces). You have to detect eyes, ears, eyebrows, and their relative separations, as well as forehead shapes/slants, chin forms, lip conformations... Each of those requires a separate algorithm, and code, to isolate and combine into a cognizant whole computer model that can be rendered into some weighted numeric value. Then, when you are scanning an image to detect if that face is in your database, you have to perform all those calculations, generate that value, and see if there is a close match in the database. As said, the math alone is killer!

So, go to school, get a degree in software engineering, and then go for a PhD in the field of pattern recognition. In about 10-15 years you may be ready to tackle the subject in a serious manner.

Or you just go out and purchase a pre-canned solution - probably not cheap either for anything that works reasonably well.

Neural network are (see also article by rubberman) IMO becoming booming business in the recognition of images, so you might study that as well.

commented: I agree, the possibilities are endless! And in some cases already scarily good. +7

@ddanbe - I took a course in neural network programming at MIT some years ago. The class instructor was a very bright young US Air Force Captain who used neural networks to design the antennas for phased array radar systems. He was able to get orders of magnitude improvements in signal strength and resolution as compared to traditional engineering methods. The resulting forms of the antennas were not what one would expect, but they worked!

If you just want to mess around with simple image recognition (i.e. silhouets or colors) there are some frameworks you can use. Neuroph (note that is meant for use with Java) even has a GUI "studio" where you can train, tweak and save neural networks without the need for coding. You can then use the network from your (Java) application. It will not give you a perfectly trained network for any serious real world problems, but it might give you some general insight in the proces, without the immediate need for a math degree. They have some tutorials on image recognition, stock market prediction or poker hand prediction for instance.

But again, consider it a learning tool, not a crafting tool.

Writing one from scratch that can identify faces is going to be an extremely difficult and long proces. Ddanbe and Rubberman already described the steps for that route perfectly.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.