hello sirs,<br>I was interested in implementing the face recognition idea proposed in the GSoC KDE 2010 ideas page.I am working on a proposal<br>for the same and had the following 1st draft . <br>kindly indicate the shortcomings in the proposal for the betterment of the same.<br>

<br><u><b>Title</b></u>:Project to implement Face Recognition engine in digikam for automatic face recognition and tagging.<br><b><u>Motivation</u>:</b>I have always been a big fan and supporter of intelligent and elegant technologies and so when i had to join a Special Interest Group at our institute my obvious choice was the face recognition SIG (as it interested me the most).Eventually i built up a huge collection of facial test images and had to experiment with photo management applications . Having had a brush with picasa and then digikam as i shifted to KDE, made me feel the lack of face tagging and it being most demanded feature in digikam mailing lists motivated me to take it up as my GSoC project.<br>

Also face recognition is what i am working on as my area of research ( my previous discussion with the digikam-devel list <a href="http://old.nabble.com/face-recognition-in-digikam-td26844374.html" target="_blank">http://old.nabble.com/face-recognition-in-digikam-td26844374.html</a> ). I have a deep desire in pursuing this project as it would be most fruitful for the project and me.<br>

<b><u>Implementation Details</u>:</b><br>*** I have two ideas regarding the same and would like your opinion.***<br>both ideas follow a, <b>library and plugin architecture.</b><br>plugin for digikam would definitely have to be written in c++<br>

<div style="margin-left: 40px;"><b>Idea 1: to implement the library in python.</b><br>The decision for implementing the library in python is for the following reasons:<br>1.Availability of OpenCV bindings and fast numpy libraries.<br>

2.Once the KROSS <a href="http://kross.dipe.org/" target="_blank">http://kross.dipe.org/</a> project becomes stable easy migration to Kross-python.<br>3.Python is most favored by new developers and thus would attract them , hence richer digikam developer base in future.<br>

4.Fast develop and test cycle, more stable code.<br>5.Relatively (to C) slower single threaded execution but easy to use Py-OpenCL (for parallel programming on heterogeneous devices
including CPUs, GPUs, and others processors) libraries to implement parallel (future scalable) algorithms.<br></div><b><br></b><div style="margin-left: 40px;">
<b>Idea 2:to implement the library in c++.<br></b>reasons:<b><br></b>1.More mature and latest OpenCV libraries (python bindings come later).<br>2.Integrates well into c++ codebase of digikam.<br>3.Faster code execution speed ( may be noticeable in single threaded applications.)<br>

<br></div><div style="margin-left: 40px;"><b>Implementation details of face detection and recognition library:</b><br><br></div><div style="margin-left: 80px;"><b>Detection algorithm</b>: Haar-Cascades based detection, tried , tested and implemented in openCV with promising results.<br>
</div><div style="margin-left: 40px;"><b><br></b><div style="margin-left: 40px;"><b>Recognition algorithm</b>: Elastic bunch graph matching.<br></div><div style="margin-left: 40px;"><b>Reason for choice of algorithm</b>:As per our (at my institute) survey on existing face recognition models.eigen-faces and fisher-faces based recognition algorithms have 2 major drawbacks.<br>
<div style="margin-left: 40px;"><b>1.</b>They cannot overcome <b>pose,expression</b> <b>variations</b> (major problem in personal photo management applications. Fisher faces and eigen faces are similar , its only that fisher faces can overcome illumination variation).<br>
</div><div style="margin-left: 40px;"><b>2.</b>The model need to be "re-trained fully" even if one new training image is to be added to the training set of faces.<br></div>So I propose to use Elastic Bunch Graph Matching which provides much better accuracy (data regarding accuracy obtained from <a href="http://www.face-rec.org/algorithms/EBGM/WisFelKrue99-FaceRecognition-JainBook.pdf">this pdf</a>) and overcomes the problem faced by the above two approaches.<br>
</div></div>The idea behind dividing the task into a library is to extend the face-recognition to object recognition in general, in future,<br>and to make it easy for other projects to adopt the same library in their code.<br>
<br><br><u><b>About me:</b></u><br>Name: Kunal Ghosh<br>IRC : gancient<br>Location: Bangalore , India<br><br>I am right now pursuing my Bachelor of Engineering in Computer Science and Engineering and have been deeply motivated and inspired by the philosophy of Free Software.I take interest in music and arts of all forms.Pattern Recognition and Robotics interest me ( Though being opposite fields, in my opinion they complement each other ), and i love to use python to accomplish my programming needs whenever possible (language should be a means of easy and efficient communication and python is exactly that).<br>
<br>
<br><br>