Another great Google Summer of Code
That's all folks! Another GSoC is reaching it's end. This was my 3rd Summer of Code, and following the same idea of the first one: Provide face detection features to GNOME.
I've started my first year implementing a new tool for Shotwell that would allow the users to tag people faces in photos. The concept is very simple, and it is widely used in very well known social networks. I've implemented it in Shotwell and it works pretty well, but it was considered incomplete and so it isn't included in any stable release —even with the inclusion of face detection during my second GSoC. There are some instructions I wrote that may still work to compile Shotwell with Faces Tool.
Well, my first idea to this GSoC was to complete Shotwell's Faces Tool by adding face recognition and fixing bugs, but Yorba didn't get into this GSoC, so it has not been possible. And I've received that bad news really close to the student proposals deadline, with my proposal sent and all. But I've received an e-mail from GNOME people encouraging me to try to develop the same idea into another GNOME program, and so I've contacted Stephen Shaw, F-Spot's maintainer and my mentor in this GSoC. We spoke about the project and he showed interest, so I applied for both GNOME and Mono with the same idea: Implement Faces Tool in F-Spot, with face detection using OpenCV.
Most of the project was about porting Shotwell's Faces Tool, written in Vala, to F-Spot, which is written in C# —a language I've learned just a week before starting with F-Spot. The most challenging aspect of this project was getting enough knowledge about the F-Spot internals and way of doing things —i.e. it's architecture and design— to be able to adapt the mentioned port to be able to do things in F-Spot —I mean event handling, drawing, persistency, etc.
Now you can see F-Spot with Faces tool, and you have face detection using OpenCV —very improvable, by the way. There are still bugs and leak of functionality —e.g. you can't search all images of the same person—, but I think that is a good start. Having to work and study will have a negative impact on my ability to keep contributing, but well, I'll try.
With no more delay, here you have a screencast of F-Spot with Faces Tool:
Current status of F-Spot's Faces Tool
You can get the code at https://github.com/mono-soc-2013/f-spot/tree/faces-tool.
I really want to thank Google, Mono, Stephen Shaw and GNOME for allowing me and helping me with this :)
And Google, really: thanks.
For most of us —speaking only in my name, of course, but I'm sure I'm not alone—, this is the best way —and maybe the only— of learn, improve our curriculum vitae and contribute to Open Source at the same time and in a real-world environment.
Tags: Google Summer of Code, F-Spot, face detection, Mono