[Digikam-devel] Regarding face recognition in digikam GSoC project
kunal.t2 at gmail.com
Mon Mar 29 20:49:07 BST 2010
I was interested in implementing the face recognition idea proposed in the
GSoC KDE 2010 ideas page.I am working on a proposal
for the same and had the following 1st draft .
kindly indicate the shortcomings in the proposal for the betterment of the
*Title*:Project to implement Face Recognition engine in digikam for
automatic face recognition and tagging.
*Motivation:*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.
Also face recognition is what i am working on as my area of research ( my
previous discussion with the digikam-devel list
http://old.nabble.com/face-recognition-in-digikam-td26844374.html ). I have
a deep desire in pursuing this project as it would be most fruitful for the
project and me.
*** I have two ideas regarding the same and would like your opinion.***
both ideas follow a, *library and plugin architecture.*
plugin for digikam would definitely have to be written in c++
*Idea 1: to implement the library in python.*
The decision for implementing the library in python is for the following
1.Availability of OpenCV bindings and fast numpy libraries.
2.Once the KROSS http://kross.dipe.org/ project becomes stable easy
migration to Kross-python.
3.Python is most favored by new developers and thus would attract them ,
hence richer digikam developer base in future.
4.Fast develop and test cycle, more stable code.
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
*Idea 2:to implement the library in c++.
*1.More mature and latest OpenCV libraries (python bindings come later).
2.Integrates well into c++ codebase of digikam.
3.Faster code execution speed ( may be noticeable in single threaded
*Implementation details of face detection and recognition library:*
*Detection algorithm*: Haar-Cascades based detection, tried , tested and
implemented in openCV with promising results.
*Recognition algorithm*: Elastic bunch graph matching.
*Reason for choice of algorithm*:As per our (at my institute) survey on
existing face recognition models.eigen-faces and fisher-faces based
recognition algorithms have 2 major drawbacks.
*1.*They cannot overcome *pose,expression* *variations* (major problem in
personal photo management applications. Fisher faces and eigen faces are
similar , its only that fisher faces can overcome illumination variation).
*2.*The model need to be "re-trained fully" even if one new training image
is to be added to the training set of faces.
So I propose to use Elastic Bunch Graph Matching which provides much better
accuracy (data regarding accuracy obtained from this
and overcomes the problem faced by the above two approaches.
The idea behind dividing the task into a library is to extend the
face-recognition to object recognition in general, in future,
and to make it easy for other projects to adopt the same library in their
Name: Kunal Ghosh
IRC : gancient
Location: Bangalore , India
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).
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Digikam-devel