WAMSIT: What Actor/Movie/Show Is It

Inspiration

Have you had a picture you've found on the internet of a movie or TV show that you don't know the name of? Our website allows you to plug in a link to that image and then recognize the faces of all the actors in that picture and return you a list of everything they've appeared in together, hopefully giving you the . This is of course, in theory, in practice we can't recognize any actor you give us but instead have a small (but easily expandable) database of actors that we used as a Proof of Concept.

What it does

To use our website, simply paste an image URL to the link above and the website will use Azure's facial recognition to match any faces in the image with any of the people stored in its database, and then cross reference that data with our database to find their The Movie Database IDs, and finally use the TMDB API to retrieve the actors' filmographies and cross-referenced them to find a list of every film all the recognized actors have participated in together.

How we built it

Our MongoDB server keeps track of the ID's for TMDB and Azure's Face Database that we have manually added beforehand. The node.js backend communicates with our site's API in order to retrieve that information and then bridge the gap between the Azure Database (which handles all the facial recognition) and the TMDB API (which contains all the information regarding the actors, movies and tv shows we display).

Challenges we ran into

The Azure API calls were definitely tricky to puzzle out, as were some really head-scratching errors when trying to submit http posts using jquery vs. straight XML http request.

Scraping IMDB.com for actor images and filmography, our initial idea, was a bit of a dead end, as they didn't have nearly as accessible of an API.

Trying to figure out the many cross-browser quirks of the HTML5 drag and drop specification, which we eventually decided to leave out.

Accomplishments that we're proud of

Getting it to recognize every actor in a promo picture for Anchorman and then correctly identifying that the common element between each actor was that they had all in fact starred in Anchorman!

What we learned

How powerful of a technology Azure's Facial Recognition is, and how good looking Kit Harington is!

What's next for WAMSIT: What Actor/Movie/Show Is It

Scaling:
Currently our database only holds actors that we've manually added into it, although the process is somewhat streamlined by the javascript that uses The Movie Database's API to retrieve images of the actors and actresses.
We don't really know how easily Azure would scale from having to recognize from a database of dozens of faces to the ideal database of thousands that the full scope of this project requires. One possible avenue to helping ease those literal growing pains would be to sort the Azure Database into multiple Person Groups based on the similar features that Azure's facial recognition already handles: ie. hair colour, facial hair/symmetry, male/female face structure. Then having grouped all the actors on TMDB by common facial features that Azure recognizes, you would only have to traverse the database of pertinent actors based on the faces recognized in the picture given.

There is also sufficient optimization that could be done on the movie cross-referencing, especially sorting to reduce the complexity of the search operations required and truncating the range of searches into subsequent actor filmographies.

UI:
Giving the results a little flair would be a nice addition, such as:

including a small thumbnail of the face recognized in the image by Azure beside the actor

including a small thumbnail of the poster of the movie as provided by TMDB

Interfacing:
Having an interface for instagram posts, or common sites such as reddit or imgur could improve usability.

Built With

Try it out

Submitted to

Created by

I worked mostly on the Azure API calls and on the logic for cross-referencing actors with their filmography.
This was my first deep dive into using APIs and I thoroughly enjoyed learning about how powerful they can be to web development.

I had some experience with servers, routing, and node, and a lot of experience with JavaScript and CSS, so I did a big chunk of the styling, business logic, and interfacing with the various APIs we used.
It was tricky encorporating the various systems for face recognition and actor details, but I'm really happy with the result!