Noureddine RAMDI / face_recognition: easy deep learning face recognition in Python with dlib

Created Sat, 02 May 2026 20:07:04 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

ageitgey/face_recognition

Face recognition is a notoriously complex problem, often involving elaborate pipelines and deep learning models. The face_recognition library stands out by wrapping a high-accuracy deep learning model into an easy-to-use Python package and command-line tool. It lets you detect faces, identify facial features, and compare faces with just a few lines of code, making advanced face recognition accessible to developers without deep expertise in computer vision or model training.

What face_recognition does and how it works

This library provides a Python API and CLI built on top of dlib’s state-of-the-art face recognition model, which achieves 99.38% accuracy on the Labeled Faces in the Wild benchmark—a well-known dataset for evaluating face recognition systems. Under the hood, it uses dlib’s deep convolutional neural networks to encode faces into 128-dimensional vectors, enabling effective face comparison and identification.

The core features include:

  • Face detection: Locating faces within images.
  • Facial landmarks: Identifying key points like eyes, nose, mouth, and chin.
  • Face encoding: Extracting 128-dimensional embeddings representing faces.
  • Face comparison: Measuring similarity between face encodings to recognize or verify identities.

Implemented mostly in Python, the library depends on dlib for the heavy lifting of model inference and provides parallel processing support to speed up batch image processing on multi-core CPUs. It also includes command-line tools for batch face recognition and landmark detection, which is handy for scripting or integrating into pipelines.

Why face_recognition’s approach is technically notable

What sets this project apart is the elegance of exposing complex deep learning workflows through a minimal and intuitive API. Instead of requiring knowledge of neural networks or feature extraction, developers can call simple functions like face_locations() or face_encodings() and get results immediately.

The code quality is pragmatic and clean, focusing on wrapping dlib’s proven models rather than reinventing the core logic. This means the library benefits from dlib’s ongoing improvements and robustness.

The tradeoff lies in dependency and platform support: it requires dlib with Python bindings, which can be challenging to install, especially on Windows. The library officially supports macOS and Linux, with workarounds available for Windows users.

Performance-wise, the use of multi-core parallelism and efficient face encoding makes it suitable for real-world applications, though it’s not optimized for GPU acceleration out of the box. For many use cases, the CPU-based performance strikes a good balance between accuracy and speed.

Here’s a quick example showcasing the simplicity of the API:

import face_recognition

image = face_recognition.load_image_file("my_image.jpg")
face_locations = face_recognition.face_locations(image)
face_encodings = face_recognition.face_encodings(image, face_locations)

print(f"Found {len(face_locations)} face(s) in this image.")

This snippet detects faces and computes their embeddings with just a few calls, abstracting away all the underlying complexity.

Installation and quick start

Requirements

  • Python 3.3+ or Python 2.7
  • macOS or Linux (Windows not officially supported, but might work)

Installation options:

Installing on Mac or Linux

First, make sure you have dlib already installed with Python bindings:

  • How to install dlib from source on macOS or Ubuntu

Then, make sure you have cmake installed:

brew install cmake

Finally, install this module from pypi using pip3 (or pip2 for Python 2):

pip3 install face_recognition

Alternatively, you can try this library with Docker, see this section.

If you are having trouble with installation, you can also try out a pre-configured VM.

Installing on an Nvidia Jetson Nano board

  • Jetson Nano installation instructions
    • Please follow the instructions in the article carefully. There is current a bug in the CUDA libraries on the Jetson Nano that will cause this library to fail silently if you don’t follow the instructions in the article to comment out a line in dlib and recompile it.

Installing on Raspberry Pi 2+

  • Raspberry Pi 2+ installation instructions

Installing on FreeBSD

pkg install graphics/py-face_recognition

Installing on Windows

While Windows isn’t officially supported, helpful users have posted instructions on how to install this library:

  • @masoudr’s Windows 10 installation guide (dlib + face_recognition)

Installing a pre-configured Virtual Machine image

  • Download the pre-configured VM image (for VMware Player or VirtualBox).

verdict

face_recognition is a solid choice for developers who want to integrate face detection and recognition into Python projects without diving into model training or low-level CV details. Its main strength is the simplicity of its API wrapped around a highly accurate model.

The biggest limitation is installation complexity due to the dlib dependency, especially on Windows. If you are working on macOS or Linux, or can use Docker or a VM, this library is fairly straightforward to get up and running.

It’s not designed for GPU-accelerated workloads out of the box and may not suit real-time video processing scenarios needing ultra-low latency. However, for batch processing, research prototypes, or production setups where accuracy and ease of use matter more than raw speed, this repo delivers.

Overall, face_recognition is worth exploring if you need reliable face recognition capabilities with minimal fuss and want to avoid the overhead of building your own deep learning pipeline.


→ GitHub Repo: ageitgey/face_recognition ⭐ 56,335 · Python