I'm looking for a face detection library or standalone program with these criteria:

  • Runs on Linux (I'm on Ubuntu 16.04 if it matters).
  • Has a very low false positive rate (i.e. nearly 100% of the faces it detects are real faces).
  • Ideally is a Python library.
  • Is free (as in beer) for noncommercial use

Further, here are some features I don't care about:

  • Speed. I don't really care how long this detector takes to run. I'll be using it for offline batch processing of relatively few candidate images.
  • False negative rate. I don't care if the detector throws away tons of real faces, so long as nearly all of the detections it keeps are real.
  • Multiscale/multiposition detection. I don't need the detector to locate faces within an image; I just need it to look at an entire image and answer the yes/no question "is this a face?"

I've tried using the Haar Cascade Classifiers that come with OpenCV, but I've found that they have an unacceptably high false positive rate, and I can't find any way of adjusting the thresholds.

  • To adjust/improve the accuracy of the Haar classifiers you need to provide training to them with opencv_traincascade see docs.opencv.org/2.4/doc/user_guide/ug_traincascade.html for how to on this. Nov 22 '16 at 6:41
  • @SteveBarnes Ideally, I'd like a solution that doesn't involve having to prepare my own training set, as that would be a lot of work. I'm also not really interested in improving "overall" accuracy - I just want to trade off recall for precision. I'm fine with having tons of false negatives so long as the number of false positives is low.
    – Ord
    Nov 22 '16 at 6:53
  • I have added an answer that includes a link to a list of training sources. Nov 22 '16 at 6:56

OpenCV 3.0 and above comes with several face recognition systems but as with many such systems to get a good accuracy you need to train the modules on your installation from a suitable set of data several of these are listed here.

  • Free, gatis & open source
  • Low false positives: depends on the training provided and other settings
  • Linux - Cross Platform
  • Python - Yes and C++
  • Thanks for the pointer to the datasets. I'm still a little unsure about going this route - why should I expect to be able to get better performance than the pretrained models that are distributed with OpenCV? Surely if it were easy to produce significantly better results with Haar classifiers, the maintainers of OpenCV would just do this themselves and include the better trained models in the OpenCV distribution?
    – Ord
    Nov 22 '16 at 7:01
  • The distributors of OpenCV face 2 issues with this approach, size they don't wish to add a huge amount to the downloads as not everybody is installing OpenCV for face recognition & licencing of the data sets - some data sets come with licence restrictions that some users may not wish to honour. Nov 22 '16 at 7:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.