Face verification system using several opensource and state of the art algorithms. This project is meant to be used for access control in real time. For that, the whole system is divided into smaller scripts that are communicating between sockets thus simulating a server and its several clients.
First, there are acquired images from the webcam. When a face is detected, the facetracker is activated. This facetracker is the comparision of two outputs of the recognition algoritm's neural network when the input is a face image. These outputs (called face descriptors) will be sent to the server to be stored and, if requested, comapared to the descriptors that are on the database (verification process). If the system is in a registration stage, these descriptors will be stored according to the input read by the NFC Reader or the keyboard.
For more information please look the guide.pdf that is in this repository.
Algorithms implemented for face detection:
Algorithms implemented for face verification:
Project tested on machines running Ubuntu 16.04
In order to test this project, you need to install the following:
- Python 2.7
- OpenCV
- Dlib
- imutils
- OpenFace (I've installed by hand)
- Tensorflow 1.2.1 - GPU
- Caffe
Then, please download and paste into the folder models/ the following models for the algorithms:
DeepFace:
MTCNN
OpenFace
Dlib (don't forget to extract)
Also, the ARDUINO connected with the RFID-RC522 is advisable as it turns closer to the real experience of accessing control. However, this can be simulated by the keys pressed in the keyboard.
In a first step you need to do the registration:
cd src
start_registration.sh
Once registred:
cd src
start_verification.sh
Make sure that if you're pressing a key on the keyboard you are on the tab of the NFC/KeyBoard Reader.
If you want to test other verification algorithms open the .sh files and change the following line:
xterm -title "Face Tracker" -hold -e " cd py; python register_facetracker.py <\Algorithm/>"
and replace <\Algorithm/> by "OpenFace", "dLib" or "DeepFace".
for more insight on each function just open the Doxygen documentation:
cd src
documentation.sh
If you have any suggestion feel free to contact us. This is an early work and it has a lot of room to improve.
- Daniel Lopes
- Ricardo Ribeiro
This project has not yet a license.
- Hat tip to anyone who's code was used
- Inspiration
- etc