🎯 Face Recognition System

A high-performance real-time face recognition application built with MediaPipe, DeepFace, and OpenCV. Optimized for speed with threading to maintain smooth video streaming while performing face detection and recognition in the background.


📹 Demo Video

Face Recognition Demo

Watch the full demo: YouTube - Face Recognition Demo


🚀 Features

  • Real-Time Face Detection: Runs at 60 FPS using MediaPipe's BlazeFace model
  • Asynchronous Recognition: Non-blocking face identification using threading
  • Fast Face Matching: ArcFace model for accurate face comparison
  • Smooth UI: Instant visual feedback with bounding boxes and FPS counter
  • Unknown Face Detection: Displays "Unknown" for unrecognized faces

🛠️ Technology Stack

Core Libraries

Technology Purpose
MediaPipe High-speed face detection using BlazeFace model
DeepFace Face recognition and matching with ArcFace
OpenCV (cv2) Video capture and real-time frame processing
TensorFlow Deep learning framework for neural networks
Keras High-level neural networks API
Threading Asynchronous face recognition to prevent video lag

Additional Dependencies

Package Version Purpose
NumPy ≥1.14.0 Numerical computing
Pandas ≥0.23.4 Data manipulation
Pillow ≥5.2.0 Image processing
MTCNN ≥0.1.0 Face detection alternative
RetinaFace ≥0.0.14 Enhanced face detection
Flask ≥1.1.2 Web API framework
Flask-CORS ≥4.0.1 Cross-origin resource sharing
Gunicorn ≥20.1.0 WSGI HTTP Server
Python-dotenv ≥1.0.1 Environment variable management

📋 Requirements

  • Python 3.11 (tested on Python 3.11)
  • Webcam/Camera for real-time capture
  • Trained Face Database: Store face images in known_faces/ directory

⚙️ Installation

1. Clone the Repository

git clone https://github.com/ssbg04/facerecog.git
cd facerecog

2. Create Virtual Environment

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

3. Install Dependencies

pip install -r requirements.txt

4. Download MediaPipe Model

The BlazeFace model file (blaze_face_short_range.tflite) needs to be in the project root directory. Download from:


🏃 Usage

Basic Usage

python app.py

The application will:

  1. Open your webcam
  2. Display a window titled "Smooth Face Recognition"
  3. Detect faces in real-time
  4. Identify known faces from the database
  5. Show FPS counter in the top-left corner

Press Q to quit

Prepare Your Face Database

Create a known_faces/ directory and organize it as follows:

known_faces/
├── person1.jpg
├── person2.jpg
├── john_doe.jpg
└── ...

The system extracts names from filenames (before the file extension).


🎨 How It Works

Architecture

Input Frame
    ↓
[Detection] ← MediaPipe (60 FPS) - Detects face locations
    ↓
[Threading] ← Async Recognition - Doesn't block video
    ↓
[Recognition] ← DeepFace/ArcFace - Identifies face
    ↓
[UI Render] ← OpenCV - Draws bounding box + name
    ↓
Display Output (Smooth Video Stream)

Key Optimizations

  1. High-Speed Detection: MediaPipe's lightweight BlazeFace runs at 60 FPS
  2. Async Processing: Face recognition runs on a separate thread
  3. Early Stopping: Only recognizes when a new face is detected
  4. Efficient Cropping: Uses enforce_detection=False for faster matching

📊 Performance

  • Detection FPS: ~60 FPS
  • Recognition Time: ~100-500ms (depends on database size)
  • Smooth Video: Yes - threading prevents frame drops

🔧 Configuration

Edit the following variables in app.py:

DB_PATH = "known_faces"              # Path to face database
MODEL_PATH = 'blaze_face_short_range.tflite'  # MediaPipe model

🐛 Troubleshooting

Issue Solution
Model file not found Download blaze_face_short_range.tflite to project root
Webcam not working Check camera permissions or try cv2.VideoCapture(1)
Slow performance Reduce image resolution or database size
"Unknown" for known faces Verify image quality and lighting in database

📝 License

No specific license specified. Please check the repository for details.


👤 Author

ssbg04 - GitHub Profile


🤝 Contributing

Feel free to fork, modify, and submit pull requests!


📚 References


Last Updated: June 2026 | Status: Active Development

S
Description
tried on python 3.11
Readme
230 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%