Notes on the Shotwell Faces tool

Introducing myself

My name is Valentín Barros Puertas and I’m Spanish. I’m 24 years old and I study Degree in Computer Engineering in Santiago de Compostela. I also work as a freelance developer and I’ve studying (self-taught) programing and other computer-related stuff since I was 16.

My principal programing language is PHP, but I’m also comfortable with C, Vala and some others. I know a bit of GTK+ (using it from C, Python and Vala) and I’ve also played with Cairo and Clutter (but I’ve never done anything big with those because at this time my main occupations are work and the studies. Maybe the most representative application I’ve wrote is a very simple image viewer/organizer written in Python with PyGTK) it has a people tagging functionality similar to the one in Facebook. Writing it I have improved my skills with Python and I’ve learned how to create custom GTK widgets — and the most representative work I did is my last Google Summer of Code participation in Shotwell.

Short description: Last GSoC I started a new feature to Shotwell called “Faces tool”, which consist in the ability to mark that a certain person is in a certain photo, and where is her/his face —i.e. the same you can do, for example, in Facebook. And even my GSoC project was successful, the tool isn’t included in Shotwell stable because it lacks some interesting functionality.

Upcoming Shotwell Faces Tool Integration Milestones

August 6, 2012

Restore Faces UI from last year’s Summer of Code project and update the user interface for Gtk+ 3.0. Use new Gtk+ 3.0 feature like CSS-based styling to solve some layout and focus problems that affected the UI as it stood at the end of last summer’s coding period.

August 13, 2012

Implement face detection in Shotwell. The Faces palette will contain a “Detect” button. When pressed, the the external, C++ face recognition program will be spawned and the filesystem location of the image in view will be passed to it. Shotwell will display a “Wait” dialog. When the external face recognition program completes detection, it will output a series of rectangles. These rectangles will be parsed by Shotwell and introduced as faces into the current view with names like “Unknown Face 1”, “Unknown Face 2”, etc.

August 27, 2012

Implement face recognition in Shotwell. When a face rectangle is detected by the face detection helper program as described in the previous milestone, attempt to recognize the identity of the face. We will only attempt to recognize faces for which we have enough training data available.

Abstract

Last GSoC I started a new feature to Shotwell called “Faces tool”, which consist in the ability to mark that a certain person is in a certain photo, and where is her/his face — i.e. the same you can do, for example, in Facebook. And even my GSoC project was successful, the tool isn’t included in Shotwell stable because it lacks some interesting functionality.

So, the goal of this project is pretty simply: Get a really useful state to Shotwell Faces tool.

Motivation

I think that this feature would benefit Shotwell (and thus GNOME) because it is a very simply to understand feature (you can do the same thing in a well known social network) and a very powerfull organization tool.

I’d like to do this project because I started it last year and I want to finish it to bring to Shotwell the functionality I imagined in the first place and I couldn’t completely implement last year. Moreover, I have thousands of photos and I found that Shotwell is a great program to manage them, but I’d like so much to have this functionality and the ability to tag people in my photos in a very comfortable way.

That’s also the reason for my interest in improving GNOME: I use it and I like all the GNOME stack — one of my areas of interest for future studying is Vala and some of the GNOME-related libraries that can be used with that language (e.g. Clutter, GStreamer, Grilo and GTK+ in general).

I think I am the best person to work on this project because I started it last year, so I already know how to get into the Shotwell’s code and, even more, how to dive into the code I wrote myself.

Also, I like Shotwell because I will use it to organize my entire collection of photos when it has some functionalities I miss — the most important for me: Faces.

Proposal timeline

NOTE: This is only a proposal, as you can see it in my project sent to Google Summer of Code if you want to know how I’m doing, you have links to my weekly reports in the section below.

April 24 - May 21 [Community bonding period]:

  • Reading Shotwell documentation again.
  • Re-familiarizing myself with Shotwell internals.
  • Get used to Vala coding again.

May 21 - June 17

June 18 - July 1

  • Face detection using OpenCV → [http://redmine.yorba.org/issues/1702 #1702]

  • Keyboard control. The application must be able to jump between autodetected faces using tab key, like when filling forms.

July 2 - July 13

  • Time to rigorous testing and bug fixes.

Mid-term evaluations

July 14 - July 29

  • Publishing to Flickr.
  • Publishing to Facebook → #3934

July 30 - August 5

  • Documentation.
  • Time to rigorous testing and bug fixes.

A Buffer of two weeks has been kept for any unpredictable delay [If I get enough time, I would start to implement (or at least investigate — and document such investigation) face recognition]

Weekly Reports

Repositories

More info

Apps/Shotwell/FacesTool (last edited 2013-11-23 01:32:57 by JimNelson)