Home

Building my own Real Time Face Detector

I built my own real-time face detector based off of Dalal and Triggs' Histogram of Oriented Gradients. I also referenced Dalal's Thesis as dives deeper into some of their implementations such as how trilinear interpolation is performed to distribute cell weight into bins.

The SVM classifier was trained using the Labelled Faces in the Wild dataset and the INRIA Person Dataset (which is now restricted). The classifier was retrained several times using hard-negative mining.

The GitHub repo can be found here. The code was designed to run on a low compute device. I use a Gigabyte Brix.

Below is an example of the system running. I am using a 180° Fisheye Lens. There are a couple known issues where NMS fails when one bounding box is 100% inside another, and faces near the edge of the camera are sometimes missed due to the fisheye distortion. As well, the network was trained on forward looking faces, and occasionally fails when I look sideways. I will get to these fixes when I find the time.