OpenFace is a fantastic tool intended for computer vision and machine learning researchers, the affective computing community, and people interested in building interactive applications based on facial behavior analysis. OpenFace is the first toolkit capable of facial landmark detection, head pose estimation, facial action unit recognition, and eye-gaze estimation with available source code for running and training the models.
Even though the documentation of this tool is very detailed and organized, it is still problematic to use in web services because of its C++ codebase and CLI interface.
OpenGaze is a single endpoint RESTful web API service with HTTP Basic Authentication developed with FastAPI framework that uses the FaceLandmarkImg executable of OpenFace and provides a web API that responds with crucial eye-gaze and head-pose related fields.
Follow the installation instruction of OpenFace to install it first with all the dependencies. Platform based installation instructions are as follows-
| OS | Installation Instruction |
|---|---|
| Unix-like | View Wiki |
| Windows | View Wiki |
| Mac | View Wiki |
The install script for Unix-like systems only work for Debian-based systems including ubuntu. For other distros, please install the dependencies manually and then compile the code following the Advanced Ubuntu Installation section.
At the end of third step of Actual OpenFace installation following command can be used to install the executables in the system.
make installIf
make installis not used,FACE_LANDMARK_IMG_EXEC_COMMANDenvironment variable in.envfile will need to be updated with the absolute path of theFaceLandmarkImgexecutable. e.g.,/home/user/OpenFace/build/bin/FaceLandmarkImg
git clone https://github.com/nsssayom/OpenGaze.git
cd OpenGazesudo apt update
sudo apt install python3-virtualenvvirtualenv env
source env/bin/activatepip install -r requirements.txtuvicorn main:app --reload Now, test the API with any API testing tool. cURL snippet is following
curl --request POST \
--url http://localhost:8000/ \
--header 'Authorization: Basic <RandomHeader>' \
--header 'Content-Type: application/json' \
--data '{
"image_url": "https://wamu.org/wp-content/uploads/2019/05/Sun-article.jpeg"
}'use
API_KEYvalue in.envfile as username andAPI Secretas password for basic authentication.
