This project identifies individuals in videos by comparing their faces against reference images using the deepface library. It consists of two Docker containers: deepface for face detection and embedding, and my-api for processing videos and matching faces.
The my-api container:
- Embeds reference faces using
deepface - Splits input videos into frames
- Sends frames to
deepfacefor face embedding - Compares embedded faces with reference embeddings
- Returns a JSON list of matched faces with time, confidence, and facial area.
- A Docker Compose file simplifies deployment, and a bash script facilitates inference with custom video files and configurations. This project enables applications like security surveillance and person verification.
deepface is an opensource project which can extract and embed the face images inside an image file or data. Thus, we need to first make the container. So, in order to make the deepface docker image stand in the repo's root and:
cd third-party/deepface/docker build -t deepface .
my-api is the designed api which extracts the embedded vectors for the reference files, splits the incoming video and make the output to say when and where did the person has been seen. So, to build the docker image, stand in the repo's root and:
- initialize the deepface repo:
git submodule update cd dockerdocker build -t my-api .
In the reference time, we need to specify the video file for my-api container and it do the rest.
First of all run the docker compose file : docker-compose up (make sure to replace volume according to your reference's local path).
Check that the two containers are up and ready to be used.
Then follow the procedure in the test.sh file. You may modify the export lines and then run sh run.sh. The code will send a request to the my-api container and it splits the video into frames, feeds it into the deepface, makes dotproduct on the embedded results and returns a dictionary as the output.
[{"time": 22.0, "confidence": 1.0, "area": {"h": 58, "left_eye": [916, 194], "right_eye": [936, 195], "w": 43, "x": 903, "y": 172}, "dot_product": 83.38889444312156}, ...].
├── README.md readme of the project
├── compose.yaml docker compose file
├── docker directory to build the my-api image
│ ├── Dockerfile docker file to build my-api image
│ ├── get_embed.py
│ ├── reference the directory inside the docker image that handles the path to the reference images
│ ├── requirements.txt requirements of the docker image
│ ├── video-folder the directory inside the docker image that handles the path to the video file
│ └── view.py
├── notebooks
│ └── colab-test.ipynb a colab notebook to test the deepface library
├── test.sh the bash script commands for inference time
└── third-party
└── deepface (submodule) deepface repository(as a submodule)