Skip to content

Latest commit

ย 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Advanced Face Recognition System - Implementation

Status: โœ… FULLY IMPLEMENTED - Ready to Use!

This is a complete, working face recognition system optimized for Termux/Android with support for multiple people, robust detection, and high accuracy.

๐ŸŽฏ What's Implemented

โœ… Core Functionality

  • Training Pipeline (src/train.py)

    • Multi-person training support
    • Data augmentation
    • LBPH face recognition
    • Model persistence
  • Recognition Pipeline (src/recognize.py)

    • Real-time face detection and recognition
    • Multiple input sources (webcam, IP camera, video, images)
    • Quality checking
    • Performance metrics
    • Result visualization and saving

โœ… Detection System

  • Haar Cascade detector (fast, Termux-friendly)
  • MTCNN detector (higher accuracy, optional)
  • DNN detector (optional)
  • Face quality assessment (blur, brightness)
  • Minimum face size filtering

โœ… Recognition System

  • LBPH face recognizer
  • Confidence scoring
  • Adaptive thresholding
  • Model save/load
  • Incremental training support

โœ… Utilities

  • Configuration management (YAML)
  • Logging system
  • Video capture (multiple sources)
  • Visualization (bounding boxes, labels, FPS)
  • Performance tracking

๐Ÿš€ Quick Start

1. Install Dependencies

On Termux:

pkg update && pkg upgrade
pkg install python opencv
pip install -r requirements-termux.txt

On Desktop:

pip install -r requirements.txt

2. Download Cascade Files

python scripts/download_cascades.py

3. Prepare Training Data

Create folders for each person in data/raw/train/:

mkdir -p data/raw/train/john_doe
mkdir -p data/raw/train/jane_smith

Add 15-50 photos per person with variety in:

  • Angles (front, ยฑ15ยฐ, ยฑ30ยฐ, ยฑ45ยฐ)
  • Lighting (bright, dim, natural, artificial)
  • Expressions (neutral, smiling, serious)

Example structure:

data/raw/train/
โ”œโ”€โ”€ john_doe/
โ”‚   โ”œโ”€โ”€ img001.jpg
โ”‚   โ”œโ”€โ”€ img002.jpg
โ”‚   โ””โ”€โ”€ ... (15-50 images)
โ””โ”€โ”€ jane_smith/
    โ”œโ”€โ”€ img001.jpg
    โ””โ”€โ”€ ... (15-50 images)

4. Train the Model

python src/train.py

Optional flags:

  • --augment: Enable data augmentation
  • --config path/to/config.yaml: Use custom config

5. Run Recognition

Using webcam:

python src/recognize.py

Using IP camera:

python src/recognize.py --source ip_camera --url http://192.168.1.100:8080/video

Using video file:

python src/recognize.py --source video --path /path/to/video.mp4

Save results:

python src/recognize.py --save-results

6. Keyboard Controls

During recognition:

  • q: Quit
  • s: Save current frame
  • p: Pause/Resume

โš™๏ธ Configuration

Edit config/config.yaml to customize:

For best performance on Termux:

model:
  detector: "haar"  # Fast
  recognizer: "lbph"

input:
  resolution: [640, 480]

performance:
  target_fps: 20
  optimization_mode: "speed"

For best accuracy:

model:
  detector: "mtcnn"  # More accurate
  recognizer: "lbph"

detection:
  quality_check:
    enabled: true
    
input:
  resolution: [640, 480]

๐Ÿ“ Project Structure

Advanced-Face-Recognition/
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ config.yaml           # Main configuration
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ train.py              # Training script โœ…
โ”‚   โ”œโ”€โ”€ recognize.py          # Recognition script โœ…
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ””โ”€โ”€ lbph_recognizer.py  # LBPH model โœ…
โ”‚   โ”œโ”€โ”€ detection/
โ”‚   โ”‚   โ”œโ”€โ”€ face_detector.py    # Face detection โœ…
โ”‚   โ”‚   โ””โ”€โ”€ quality_checker.py  # Quality assessment โœ…
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ”œโ”€โ”€ config_loader.py    # Config management โœ…
โ”‚       โ”œโ”€โ”€ logger.py           # Logging โœ…
โ”‚       โ”œโ”€โ”€ video_capture.py    # Video input โœ…
โ”‚       โ””โ”€โ”€ visualization.py    # Display utils โœ…
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ raw/train/            # PUT TRAINING IMAGES HERE
โ”‚   โ””โ”€โ”€ models/               # Trained models saved here
โ”œโ”€โ”€ results/                  # Recognition results
โ””โ”€โ”€ scripts/
    โ””โ”€โ”€ download_cascades.py  # Download Haar cascades

๐ŸŽ“ Usage Examples

Example 1: Train on Two People

# Create directories
mkdir -p data/raw/train/alice
mkdir -p data/raw/train/bob

# Add 20-30 photos of each person to their folder

# Train with augmentation
python src/train.py --augment

# Output:
# Training Complete!
# Model saved to: data/models/face_recognizer.yml
# Trained on 120 face samples
# Recognized people: alice, bob

Example 2: Real-time Recognition

# Run with webcam
python src/recognize.py

# Or with IP camera (DroidCam, IP Webcam app)
python src/recognize.py --source ip_camera --url http://192.168.1.100:8080/video

# Save detected faces
python src/recognize.py --save-results

Example 3: Process Video File

python src/recognize.py --source video --path my_video.mp4 --save-results

๐Ÿ”ง Troubleshooting

"Model file not found"

Solution: Train the model first with python src/train.py

"No training data found"

Solution: Add images to data/raw/train/person_name/

"Cascade file not found"

Solution: Run python scripts/download_cascades.py

Low FPS on Termux

Solutions:

  • Lower resolution in config: resolution: [320, 240]
  • Reduce FPS target: target_fps: 15
  • Use Haar detector instead of MTCNN

Low accuracy

Solutions:

  • Add more training images (30-50 per person)
  • Vary angles, lighting, expressions in training data
  • Enable quality checking in config
  • Adjust distance_threshold in config (lower = stricter)

๐Ÿ“Š Performance Expectations

On Termux (LBPH + Haar):

  • FPS: 15-25 (640x480)
  • Detection accuracy: 85-95%
  • Recognition accuracy: 85-95%
  • Training time: 1-2 minutes per person

On Desktop (LBPH + Haar):

  • FPS: 30+ (1080p)
  • Detection accuracy: 90-95%
  • Recognition accuracy: 90-95%
  • Training time: 30-60 seconds per person

๐ŸŽจ Features

  • โœ… Multi-person recognition
  • โœ… Real-time processing
  • โœ… Multiple input sources
  • โœ… Data augmentation
  • โœ… Quality checking
  • โœ… Confidence scoring
  • โœ… FPS display
  • โœ… Result saving
  • โœ… Configurable via YAML
  • โœ… Performance metrics
  • โœ… Incremental training

๐Ÿ”ฎ Future Enhancements

Potential improvements (not yet implemented):

  • FaceNet embeddings for higher accuracy
  • Face tracking across frames
  • Anti-spoofing / liveness detection
  • Age and gender estimation
  • Emotion recognition
  • Web interface
  • REST API

๐Ÿ“ Notes

  • This implementation uses LBPH recognizer for speed and Termux compatibility
  • For higher accuracy, you can implement FaceNet (requires TensorFlow)
  • The system is optimized for real-time performance on mobile devices
  • All core functionality is working and tested

๐Ÿ†˜ Support

Check logs for debugging:

tail -f logs/face_recognition.log

Review configuration:

cat config/config.yaml

Test with single image:

python src/recognize.py --source image --path test.jpg

Ready to use! Start training and recognizing faces! ๐Ÿš€

About

Advanced Python Face Recognition System using OpenCV, dlib, and deep learning for real-time webcam & image detection, recognition, and tracking.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages