Attention Tracker

Face tracking for head pose estimation

Head pose estimation

This library (libhead_pose_estimation.so) performs 3D head pose estimation based on the fantastic dlib face detector and a bit of OpenCV's solvePnP magic (it uses adult male anthropometric data to match a real 3D head to the projected image).

The library returns a 4x4 transformation matrix.

It supports detection and tracking of multiple faces at the same time, and runs on-line, but it does not feature face identification.

Installation

Note: The library has only been tested on Linux. We can only provide limited support for other operating systems!

Pre-requisites

You need to download and extract Dlib somewhere. This application has been tested with dlib-18.16.

Important: due to a bug in dlib, you must manually modify dlib's CMakeLists.txt before compiling: open it ($DLIB_ROOT/dlib/CMakelists.txt) and add add_definitions(-fPIC) near the top (around line 20).

Installation

The library uses a standard CMake workflow:

$ mkdir build && cd build
$ cmake -DDLIB_PATH=<path to dlib> ..
$ make

Note that the first time you compile the project, dlib will compile as well. It takes a few minutes. This won't happen the next times.

Run head_pose_test ../share/shape_predictor_68_face_landmarks.dat to test the library. You should get something very similar to the picture above.

Finally, to install the library:

$ make install

ROS support

The ROS wrapper provides a convenient node that exposes each detected face as a TF frame.

Enable the compilation of the ROS wrapper with:

cmake -DWITH_ROS=ON