Hi, <br>
<br>@Alex : This is my GSoC proposal for this project. What do you say?<br><br>
@Marcel : Many thanks for the feedback. I've updated my proposal and made it 
more specific.<br>
<br>
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Mention on what test data this is based?<br></blockquote><div><br>We've been testing our own pictures with frontal faces, and the detection is good. More cascades used in tandem == better detection accuracy. For profile and side faces, it is a trivial matter of applying more cascades. This increases the accuracy, but decreases the speed, I'll be working on that. It involves a tradeoff between image size and good detection. I can decrease image size to dramatically increase detection speed, but accuracy goes down. I can think of a lot of solutions for this, they will come in the subsequent commits.<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Make clear you're talking about digikam code here.<br>
(This refers to the current preview widget in digikam. We are (I am) unsure at<br>
the moment about it's technological future, but that's not your problem for<br>
this proposal.)</blockquote><div> </div><div>Ok, I haven't mentioned the Qt4 porting of the preview widget this time. That would anyway have been too much work, I guess.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

There was talk about a Eigen/Fisherfaces and GSL library integration? If<br>
that's going to be a major chunk of work, mention it.</blockquote><div><br>Ok, mentioned.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

You can also mention Nepomuk here, at least as possible integration. PIMO is<br>
the relevant ontology:<br>
<a href="http://dev.nepomuk.semanticdesktop.org/wiki/PimoOntology" target="_blank">http://dev.nepomuk.semanticdesktop.org/wiki/PimoOntology</a><br></blockquote><div><br>Mentioned now, as optional work. <br><br>So here's my new proposal :<br>
<br>----------------------------------------<br>Project: Face Recognition<br>----------------------------------------<br><br>Name : Aditya Bhatt<br><br>E-mail : <a href="mailto:adityabhatt1991@gmail.com">adityabhatt1991@gmail.com</a><br>
<br>Freenode/IRC : Adityab<br><br>Location : Ahmedabad, India<br><br>Proposal Title: Automatic face detection, recognition, and tagging in digiKam<br><br>--------------------------------------<br>Motivation<br>--------------------------------------<br>
<br>digiKam has always been my photo management program of choice. When coupled with KIPI, it becomes something akin to the swiss army knife of all photo management suites.<br>One of the most demanded features of digiKam has been the automatic tagging of photograps with names of the people in them by detecting faces and recongizing who's who.<br>
In KDE's bugzilla, this is the feature request for digiKam with the most votes since a long time, and is the 26th most wanted feature in all of KDE.<br><br>digiKam will benefit a lot from this. Picasa's linux version does not have face recognition, nor does F-Spot have it. So digiKam will, as far as I know, be the first linux suite to have this feature.<br>
This feature will be very useful for searching and organizing. After everything is implemented in digiKam, nepomuk/akonadi integration can be done.<br><br>-------------------------------------<br>Implementation<br>-------------------------------------<br>
<br>I've already been working with Alex Jironkin, the mentor for this project, on libface, the library that will be used to provide the biometric functionality.<br>libface is currently hosted on sourceforge : <a href="http://sourceforge.net/projects/libface/">http://sourceforge.net/projects/libface/</a><br>
<br>The summer work will involve working on both finishing libface and digiKam.<br><br>Our interface for libface is almost ready, and from what I learned from Marcel, requires a minimal amount of polishing, related to accepting image data. The face detection part works pretty good for images with frontal faces.<br>
The detection is tested using our respective personal albums.<br><br>Apart from improving the eigenfaces part for face recognition, I intend to work on the fisherfaces algorithm - which is known to provide better results with pose and lighting variation than eigenfaces.<br>
I will also decide a proper face database to accompany libface before GSoC coding starts, so that better testing can be done and results can be benchmarked and compared by us and future developers.<br><br>This will require usage of the GNU Scientific Library (GSL). I'm getting familiar with fisherfaces, and have some MATLAB code for it. I will port some to C++ and incorporate it into libface.<br>
Some work already has been done by Alex on this in libface.<br><br>I intend to implement a face tagging widget - this will involve modifying the nepomuk-peopletag project, and might take a while.<br><br>The face tagging widget will be merged into digiKam. The format of the tags to be generated will be decided after some discussions. The face detector will decide the region to be tagged, and the recognition part will decide the contents of the tag.<br>
<br>Now I'll work on storing tags in the image metadata and digiKam's database. I'll need help from the digiKam core people on this.<br><br>This is what I intend to do as part of GSoC.<br><br>If there is still time, I'd like to start with nepomuk integration using PIMO. Since I'm not familiar with nepomuk, I'll need lots of help from Marcel and the nepomuk people for that.<br>
<br>------------------------------------<br>Tentative Schedule<br>------------------------------------<br><br>First half of May:<br>Get familiar with the digiKam team, learn about digiKam's databases, how tags are organized, and start writing some working code for a plugin. <br>
Work on libface meanwhile - Start porting Fisherfaces snippets from MATLAB to C++. Get familiar with GSL.<br><br>Mid-May to Mid-June:<br>Finish Fisherfaces. Create a working version of a people-tagging widget.<br><br>Mid-June to Beginning of July:<br>
Make the people tagging widget work nicely with libface. This will have a possible voting system.<br><br>Start of July to July-End:<br>Start integrating the tagging widget and libface combo into digiKam. Might involve possible changes to how to accept tag input from user. Work more on the voting system for training.<br>
<br>August:<br>Clean-up of code, write documentation on usage of the new feature, and kill bugs :) Maybe start possible akonadi/nepomuk work.<br><br>-----------------------------------<br>About Me<br>-----------------------------------<br>
<br>I'm a second-year engineering student currently doing my Bachelors in Information and Communication Technology.<br>I've been using linux since about 1999, when I was eight or nine. I used X11 interfaces, and what I think was KDE at that time. I used gnome and windows from 2003 to 2006, then went back to KDE. I loved and still love KDE because of it's immense configurability. The new explosion of incoming developers and artists into KDE is wonderful, and I love the way new features are being rapidly integrated into KDE SC.<br>
<br>My primary fields of interest are Image Processing, Pattern Recognition, Cryptography, and Mathematical Computing.<br><br>I'm quite familiar with C and C++.<br><br>I speak on FOSS topics in my University's Open-Source Society, and also about emerging computing trends in our IEEE student branch's TechTalks.<br>
<br>A few links:<br>My bitbucket: <a href="http://bitbucket.org/aditya_bhatt/">http://bitbucket.org/aditya_bhatt/</a><br>My Blog : <a href="http://adityabhatt.wordpress.com">http://adityabhatt.wordpress.com</a><br>Libface : <a href="http://sourceforge.net/projects/libface/">http://sourceforge.net/projects/libface/</a><br>
</div></div>