Tip
The models and functionality in this repository are integrated into UniFace — an all-in-one face analysis library.
output.mp4
- Real-Time Face Recognition: Process webcam or video files with SCRFD detection and ArcFace embeddings
- FAISS Similarity Search: Batch cosine-similarity lookup using a FAISS inner-product index
- Multiple Model Sizes: Choose from lightweight to high-accuracy detection and recognition models
- Minimal Dependencies: Built on ONNX Runtime, OpenCV, NumPy, and FAISS with no extra frameworks
Note
Place your target face images in the assets/faces/ directory. The filenames will be used as identity labels during recognition.
- SCRFD — Sample and Computation Redistribution for Efficient Face Detection
- ArcFace — Additive Angular Margin Loss for Deep Face Recognition
- FAISS — Facebook AI Similarity Search
| 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 |
├── 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
Important
Make sure you have Python 3.10+ installed on your system.
- Clone the repository:
git clone https://github.com/yakhyo/face-reidentification.git
cd face-reidentification- Install dependencies:
pip install -r requirements.txt- Download model weights:
Click to see download links 📥
| Model | Download Link | Size |
|---|---|---|
| SCRFD 500M | det_500m.onnx | 2.41 MB |
| SCRFD 2.5G | det_2.5g.onnx | 3.14 MB |
| SCRFD 10G | det_10g.onnx | 16.1 MB |
| ArcFace MobileFace | w600k_mbf.onnx | 12.99 MB |
| ArcFace ResNet-50 | w600k_r50.onnx | 166 MB |
Quick download (Linux/Mac):
sh download.sh- Add target faces:
Place face images in
assets/faces/directory. The filename will be used as the person's identity.
python main.py --source assets/in_video.mp4Tip
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_mbf.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) | ./assets/in_video.mp4 |
--max-num |
Max faces per frame (0 = unlimited) | 0 |
--db-path |
Custom database storage location | ./database/face_database |
--update-db |
Force rebuild face database | False |
--output |
Specify output video path | output_video.mp4 |
- Face database is saved to and loaded from disk automatically; no rebuild needed on restart
- All detected faces in a frame are queried in a single FAISS
index.search()call - For GPU-accelerated inference, install
onnxruntime-gpuinstead ofonnxruntime
Note
This project builds upon the following research: