Class Projects - Spring 2015


A provocative project that shows the faces of individuals around a location based on publicly available photos.

This is "composite demo" by Northwestern U. Knight Lab on Vimeo, the home for high quality videos and the people who love them.
What it does

The idea behind Composite is the aggregation and display of location—based faces. Upon entering the site, and assuming you grant it access to your location, Composite will gather a collection of the most recently seen faces in your location, and display it in a grid.

The user can switch between two different views. One view is dominated by the grid of faces, and has the map ofthe area displayed in a small view in the corner. The other view is dominated by the map, with the grid of faces displayed in the corner small view. The former view allows the user to explore Google maps, and any action will update the location and the faces accordingly. Users can define the search of faces based on a specific location and date. These two parameters can be changed by the two input boxes in the header, or by any actions performed on the map view.

How it works

Based on the coordinates from the location of the user, we query the Instagram API for the most recent 100 public photos from that location. For every image, we take its unique ID and query our two Parse databases. The first Parse database stores photo IDs of the photos that we have already found faces in, and the second Parse database stores photo IDs of photos that we did not find faces in. If it is in the first database, the Parse query returns a list of photo URLs from our face bucket on Amazon Web Services. If not, we check the second Parse database, and if the photo ID is present in that database, we know not to process this photo for faces.

If neither of those cases is true, we send the photo through our face detection script. Our face detection script uses a third party, open source software package called Open Computer Vision to detect, crop, and store any faces found in the photo. If less than 50 faces have been accumulated through this process, we simply query Parse for faces that we have stored in our database based on the specific location.

Key technologies

° Angular ]S

° Flask Web Framework

° Instagram API

° Amazon Web Services

° Parse

° OpenCV 2

Next Steps

There are several steps to take before Composite is ready for deployment. Firstly, a loading indicator must be added on the front end to let the user know that the app is working. Another solution suggested was to have the faces "trickle in" to the grid as they are processed. One of these solutions must be implemented. Secondly, Composite has some bugs that need to be fixed. Occasionally, the "peek" view does not update when it should be displaying faces. Additionally, Angular]S appears to break randomly from time to time, which prevents any faces from being displayed, despite them being loaded into our faces model. These bugs must be fixed for deployment. The final step is of course deployment itself. This would allow anyone to access and use Composite, without having to run it and view locally from one of our computers.


Matthew Ehinger, Alex Kaldjian, Jon Rovira