Skip to content

What it is

dlib is a modern C++ toolkit with Python bindings for machine learning and computer vision tasks. It includes algorithms for image processing, object detection, facial landmark detection, and general-purpose machine learning.

dlib provides functions for image I/O, feature extraction, object detection, machine learning algorithms, and tools for linear algebra. It supports both CPU and GPU acceleration for high-performance computations.

Installation

pip install dlib

Getting started

The smallest useful thing you can do with it, and what each part means.

Loading and displaying an image
import dlib
from skimage import io
img = io.imread('image.jpg')
dlib.imshow(img)
Loads an image using skimage and displays it using dlib's simple image viewer.
Face detection
import dlib
from skimage import io
img = io.imread('faces.jpg')
detector = dlib.get_frontal_face_detector()
dets = detector(img, 1)
for i, d in enumerate(dets):
    print(f'Face {i}: Left: {d.left()} Top: {d.top()} Right: {d.right()} Bottom: {d.bottom()}')
Detects faces in an image using dlib’s frontal face detector and prints bounding box coordinates.

Advanced usage

Where the library earns its place over a simpler alternative.

Facial landmarks detection
import dlib
from skimage import io
img = io.imread('face.jpg')
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
dets = detector(img, 1)
for d in dets:
    shape = predictor(img, d)
    for i in range(68):
        print(f'Landmark {i}: ({shape.part(i).x}, {shape.part(i).y})')
Detects facial landmarks using a pre-trained 68-point shape predictor.
Training a simple SVM classifier
import dlib
# Example with feature vectors
X_train, y_train = [...], [...]
svm = dlib.svm_c_linear_trainer()
classifier = svm.train(X_train, y_train)
Uses dlib’s SVM trainer to fit a linear classifier on training data.
Object detection with HOG features
import dlib
from skimage import io
img = io.imread('image.jpg')
detector = dlib.simple_object_detector('detector.svm')
dets = detector(img)
for d in dets:
    print(f'Object found at: {d}')
Loads a pre-trained object detector and detects objects in an image using HOG features.
Face recognition using embeddings
import dlib
face_rec_model = dlib.face_recognition_model_v1('dlib_face_recognition_resnet_model_v1.dat')
# Use detected face rectangles to compute 128D embeddings
Computes 128-dimensional embeddings for detected faces for recognition tasks.

Errors and fixes

The failures you are most likely to hit, and what actually resolves them.

RuntimeError: Unable to open file
Ensure the image or model file path is correct and the file exists.
ModuleNotFoundError: No module named 'dlib'
Install dlib using pip or conda in your current Python environment.
ValueError: input image is empty
Check that the image file is not corrupted and loaded correctly using skimage or OpenCV.

Best practices

  • Use dlib’s pre-trained models for face detection and recognition for accuracy and efficiency.
  • Convert images to RGB if they are loaded in a different color space to avoid detection errors.
  • Leverage GPU acceleration when training custom models for faster performance.
  • Use HOG-based detection for faster CPU-based inference and CNN detectors for higher accuracy.
  • Always handle exceptions for file paths and model loading.

Background

Why it exists, and what it was reacting to.

dlib was created by Davis King to provide a toolkit for making real-world machine learning and computer vision applications. It is widely used for facial recognition, object tracking, and other vision-related tasks due to its performance, accuracy, and extensive feature set.