If big corporations face issues with face recognition algorithms, does that mean there’s no point in smaller firms trying to implement them? How can a company benefit from face recognition software without the resources, and access to the kinds of data, of giants like Google and Facebook?
Luckily, Google, Amazon, Facebook, MIT, and a number of other researchers interested in machine learning regularly produce frameworks and pre-trained models for a variety of purposes and tasks. Models such as these are usually trained on open datasets, which can then be used as a groundwork for other solutions.
Take FaceNet, for example, a model built by Google researchers. It was tested on a highly popular dataset called Labeled Faces in the Wild. This FaceNet model can be used as a feature extractor — it was trained using millions of images of different faces, so it already knows which features are required for recognizing one.
A new layer can be added to the neural network to learn the differences between the faces. Specific numerical measurements called embeddings are generated for every face (128 measurements per face). When training the network the embeddings are compared. If the embeddings are of the same or similar face, then the distance between measurement vectors is smaller. If the embeddings are of one face and a totally different one, then the measurements are further apart.
With a pre-trained model, it is possible to run several pictures of a particular person through the network to calculate that person’s embeddings. Then, once a new photo of that person is taken, it is possible to calculate the distance to the pictures in the database and recognize a person when his picture is closer than a set threshold. If someone is not in a database of precalculated embeddings, the system would fail to find an embedding that is closer than the threshold and would output “unrecognized face”.
It would have low accuracy, of course, but it could easily be improved by adding images to the classes used before training. An in-depth explanation of a face recognition mechanism and the process of training your own model for one can be found in this great blog post.