face-reidentification

Real-Time Face Re-Identification with FAISS, ArcFace & SCRFD

Downloads GitHub Repo stars GitHub Repository

Key Features

Performance Optimizations

[!NOTE] Place your target face images in the assets/faces/ directory. The filenames will be used as identity labels during recognition.

Architecture

The system combines three powerful components:

  1. SCRFD (Paper): Efficient face detection
  2. ArcFace (Paper): Robust face recognition
  3. FAISS: Fast similarity search for face re-identification

Available Models

Category Model Size Description
Detection SCRFD 500M 2.41 MB Lightweight face detection
Detection SCRFD 2.5G 3.14 MB Balanced performance
Detection SCRFD 10G 16.1 MB High accuracy
Recognition ArcFace MobileFace 12.99 MB Mobile-friendly recognition
Recognition ArcFace ResNet-50 166 MB High-accuracy recognition

Project Structure

β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ demo.mp4
β”‚   |── in_video.mp4
|   └── faces/           # Place target face images here
β”‚     β”œβ”€β”€ face1.jpg
β”‚     β”œβ”€β”€ face2.jpg
β”‚     └── ...
β”œβ”€β”€ database/           # FAISS database implementation
β”œβ”€β”€ models/            # Neural network models
β”œβ”€β”€ weights/           # Model weights (download required)
β”œβ”€β”€ utils/            # Helper functions
β”œβ”€β”€ main.py           # Main application entry
└── requirements.txt  # Dependencies

Getting Started

Prerequisites

[!IMPORTANT] Make sure you have Python 3.7+ installed on your system.

Installation

  1. Clone the repository:
    git clone https://github.com/yakyo/face-reidentification.git
    cd face-reidentification
    
  2. Install dependencies:
    pip install -r requirements.txt
    
  3. Download model weights:
Click to see download links πŸ“₯ | Model | Download Link | Size | |-------|--------------|------| | SCRFD 500M | [det_500m.onnx](https://github.com/yakhyo/face-reidentification/releases/download/v0.0.1/det_500m.onnx) | 2.41 MB | | SCRFD 2.5G | [det_2.5g.onnx](https://github.com/yakhyo/face-reidentification/releases/download/v0.0.1/det_2.5g.onnx) | 3.14 MB | | SCRFD 10G | [det_10g.onnx](https://github.com/yakhyo/face-reidentification/releases/download/v0.0.1/det_10g.onnx) | 16.1 MB | | ArcFace MobileFace | [w600k_mbf.onnx](https://github.com/yakhyo/face-reidentification/releases/download/v0.0.1/w600k_mbf.onnx) | 12.99 MB | | ArcFace ResNet-50 | [w600k_r50.onnx](https://github.com/yakhyo/face-reidentification/releases/download/v0.0.1/w600k_r50.onnx) | 166 MB |

Quick download (Linux/Mac):

sh download.sh
  1. Add target faces: Place face images in assets/faces/ directory. The filename will be used as the person’s identity.

Usage

Basic Usage

python main.py --source assets/in_video.mp4

Command Line Arguments

[!TIP] Use these arguments to customize the recognition behavior:

usage: main.py [-h] [--det-weight DET_WEIGHT] [--rec-weight REC_WEIGHT] 
               [--similarity-thresh SIMILARITY_THRESH] [--confidence-thresh CONFIDENCE_THRESH]
               [--faces-dir FACES_DIR] [--source SOURCE] [--max-num MAX_NUM]
Argument Description Default
--det-weight Detection model path weights/det_10g.onnx
--rec-weight Recognition model path weights/w600k_r50.onnx
--similarity-thresh Face similarity threshold 0.4
--confidence-thresh Detection confidence threshold 0.5
--faces-dir Target faces directory assets/faces
--source Video source (file or camera index) 0
--max-num Max faces per frame 5
--db-path Custom database storage location ./database/face_database
--update-db Force rebuild face database False
--output Specify output video path output_video.mp4

Technical Notes

Database Behavior

Performance Tips

References

[!NOTE] This project builds upon the following research:

  1. SCRFD: Sample and Computation Redistribution for Efficient Face Detection
  2. ArcFace: Additive Angular Margin Loss for Deep Face Recognition