So I started interning at TrulyMadly today and the work here feels exciting. I was introduced to the people around here and then the project I’d be working on was intimated to me.
For my internship here, I’ll be building a face detection and recogniton system for their website. There are a lot of verticals of that project, like checking if the pictures uploaded by a person are an actual image (not a cartoon or a graphic) and that the pictures are not of some celebrity or actor.
Another thing we want to incorporate in our website soon is the method of selfie check for profile verification. Truly Madly has a metric called a Trust Score using which the system recommends more and more people to a user. The challenge will be to verify a selfie a user uploads, with respect to the images already in the system. Uploading a selfie will boost the trust score of an indivdual.
As soon as I understood the project, I decided to use the OpenCV computer vision open source library to tackle the project. I think the functionalities offered by OpenCV will be a great fit to apply face detection in Truly Madly.
On my first day here, I installed all the dependencies of OpenCV and compiled it on my system. That itself took whole afternoon, and I also found support for OpenCV to be very limited. Their IRC channel is as good as dead.
I also researched a bit on the popular techniques for image detection, and found two good ways:-
1. Template matching : In template macthing, we basically treat one image as the template, and the image we are checking agaisnt as the source image. We traverse the source image row wise (with scan size as the template size) matching the template at different points on it, and generate a matrix which tells us which part of the source image matches the template the most.
2. Feature matching : In feature matching, we extract a set of features from the two images to be matched, and compare those features with the features extracted from the other picture to generate a sort of a matching parameter metric. This metric is checked against a threshold to declare the image as matching or not. This technique also works if the images are scaled, rotated, etc.
Based on my intuition and the advice of my mentors here, I’ll start exploring the second method here to first try and match two simple images. I haven;t even started writing the algorithm right now, have just formulated the idea and my plan of work.