My first contribution to SNet will be a set of services for detecting faces in images and video.
I picked this as a great example of a micro-ecosystem for how SNet services will eventually be composable and be able to rely on one another.
Before you can get a 128-D vector representing the identity of a face you need to:
- find face bounding boxes in an image
- detect facial keypoints
- align (or normalise) the face to be both frontal and upright
Only then can you figure out the identity reliably. However these previous steps can be useful to other services, and not only that… there are different algorithms, with different performance characteristics, for each of them.
At the moment I have essentially just put a wrapper around the amazing dlib (Davis is one of my heros) and OpenCV algorithms.
In future this repo might expand to allow a face morphing service, do emotion detection, or anything else that can benefit from localising where faces and the parts of faces are in an image.