Create comprehensive README with video preview, technology stack, and usage guide
This commit is contained in:
1 parent
8f2b9672ec
commit
dbfc5d5a34
1 file changed
+200
-3
@@ -1,5 +1,202 @@
|
|||||||
# Utut
|
# 🎯 Face Recognition System
|
||||||
|
|
||||||
hahahaha
|
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.
|
||||||
|
|
||||||
https://youtu.be/mfxB-nz5uZc?si=uCxKkgvkQgT33Dtd
|
---
|
||||||
|
|
||||||
|
## 📹 Demo Video
|
||||||
|
|
||||||
|
[](https://youtu.be/mfxB-nz5uZc?si=uCxKkgvkQgT33Dtd)
|
||||||
|
|
||||||
|
**Watch the full demo:** [YouTube - Face Recognition Demo](https://youtu.be/mfxB-nz5uZc?si=uCxKkgvkQgT33Dtd)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 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
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/ssbg04/facerecog.git
|
||||||
|
cd facerecog
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Create Virtual Environment
|
||||||
|
```bash
|
||||||
|
python -m venv venv
|
||||||
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Install Dependencies
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
- [MediaPipe Model Zoo](https://developers.google.com/mediapipe/solutions/vision/face_detector)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏃 Usage
|
||||||
|
|
||||||
|
### Basic Usage
|
||||||
|
```bash
|
||||||
|
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`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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](https://github.com/ssbg04)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
Feel free to fork, modify, and submit pull requests!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 References
|
||||||
|
|
||||||
|
- [MediaPipe Face Detection](https://developers.google.com/mediapipe/solutions/vision/face_detector)
|
||||||
|
- [DeepFace GitHub](https://github.com/serengp/deepface)
|
||||||
|
- [OpenCV Documentation](https://docs.opencv.org/)
|
||||||
|
- [TensorFlow Documentation](https://www.tensorflow.org/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Last Updated**: June 2026 | **Status**: Active Development
|
||||||
Reference in new issue
Block a user