Devasy23 / FaceRec

An advanced facial recognition system designed for real-time identification using deep learning models and optimized vector search. Features include face detection, embedding generation, and scalable deployment options.
Apache License 2.0
31 stars 30 forks source link
computer-vision deep-learning face-detection facenet facial-recognition gssoc-ext hacktoberfest hacktoberfest-accepted image-processing

Face Recognition Project

FaceRec is an innovative face recognition project utilizing Flask, FastAPI, DeepFace, and MongoDB to create a Face recognition system. This application empowers users to register faces along with associated metadata, update their information, and delete their data, creating a comprehensive face recognition system.

Python application CodeQL codecov Quality Gate Status Bugs Code Smells Duplicated Lines (%) Lines of Code Security Rating Sqale Rating Sqale Index Reliability Rating Vulnerabilities

πŸš€ Features

πŸ“¦ Getting Started

These instructions will guide you through setting up the project on your local machine for development.

Prerequisites

Make sure you have Python 3.10 or later installed.

Installation Steps

  1. Clone the Repository:

    git clone https://github.com/Devasy23/FaceRec.git
  2. Navigate to the Project Directory:

    cd FaceRec
  3. Install the Required Packages:

    pip install -r requirements.txt

Running the Server

To start the Flask and FastAPI applications, run the following command:

python main.py

Your application will be available at http://localhost:5000.

Project Structure - `requirements.txt`: Contains the Python dependencies for the project. - `API/`: Contains the code for the FastAPI application. - `FaceRec/`: Contains all files related to the HTML, CSS, and Flask application. - `Model-Training/`: Contains scripts for training models. - `docs/`: Contains documentation files. - `test-faces/`: Contains test data for face recognition. - `main.py`: Contains code to start both FastAPI and Flask applications.

Function Flow

  1. create_new_faceEntry(): Receives a POST request with an image and metadata. It extracts the face, calculates the embeddings, and stores the data in the database.
  2. Data(): Sends a GET request to the /data endpoint of the FastAPI app to get the list of Face Entries from MongoDB.
  3. update(): Updates the details of the face entry in the database.
  4. read(): Sends a GET request with a specific Employeecode to read the related information.
  5. delete(): Deletes the specific employee data.

Sequence Diagram

image.png

πŸ—„οΈ Database Schema

  1. Create a New Connection in MongoDB using the following URL:

    mongodb://localhost:27017/8000
  2. Create a Database:

    • Database Name: DatabaseName
    • Collection Name: CollectionName
  3. Import Data by Using a JSON File:

    • From the database.mongo folder -> {DatabaseName}.{CollectionName}.json

The faceEntries Collection Schema:

πŸ”„ Function Flow

  1. create_new_faceEntry(): Receives a POST request with an image and metadata. It extracts the face from the image, calculates the embeddings, and stores the data in the database.

  2. Data(): Sends a GET request to the /data endpoint of the FastAPI app to retrieve the list of face entries from MongoDB.

  3. update(): Updates the details of a face entry in the database.

  4. read(): Sends a GET request with a specific Employeecode to retrieve related information.

  5. delete(): Deletes a specific employee's data from the database.

πŸ§ͺ Testing

To run the tests for this project, use the following command:

pytest

πŸ‘₯ Our Valuable Contributors ❀️✨

Thanks to all the amazing people who have contributed to FaceRec! πŸ’–

Contributors

πŸ“„ Documentation

For detailed API documentation, please refer to the API Documentation file.

πŸ“„ License

This project is licensed under the APACHE License - see the LICENSE file for details.