CertifySecure is a Flask-based face recognition system utilizing OpenCV and Haarcascade for secure and efficient student authentication. This backend processes biometric authentication requests and integrates Firebase for data storage and authentication.
- Uses OpenCV and Haarcascade for face detection and recognition.
- Low-latency recognition process ensuring quick authentication.
- Biometric security to prevent unauthorized access.
- Machine learning-based feature extraction for accurate identification.
- Stores student authentication data securely.
- Firebase Admin SDK for user management and authentication.
- Real-time authentication logs for security monitoring.
C:\face-recognition-app\app\
βββ main.py # Face recognition processing
βββ setup_local.py # Local setup script
βββ train.py # Model training script
βββ utils/ # Utility functions
βββ dataset/ # Training dataset storage
βββ model/ # Trained models storage
βββ secrets/
β βββ firebase-credentials # Firebase credentials stored securely (no .json extension)
βββ temp/ # Temporary storage for image processing
βββ .env # Environment variables configuration
- Backend: Flask (Python)
- Face Recognition: OpenCV, Haarcascade, Scikit-learn
- Authentication & Storage: Firebase, Google Drive
- Environment Management: Python-dotenv
- Haar Cascade Classifiers (for face detection)
- OpenCV-based feature extraction
- Scikit-learn for encoding and comparison
- Capture Image Input (Sent via API request)
- Face Detection (Using OpenCV Haarcascade)
- Feature Extraction & Encoding
- Compare Encoded Features with Stored Data
- Return Authentication Status
- Python 3.9+
- Firebase Project with Admin SDK Credentials
- Google Drive API Access
# Clone Repository
git clone https://github.com/your-org/certifysecure-face-recognition.git
cd certifysecure-face-recognition
# Create Virtual Environment
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
# Install Dependencies
pip install -r requirements.txt
# Set Up Environment Variables
cp .env.example .env # Configure Firebase and Google Drive credentials
# Run Flask App
python main.py
- Biometric Authentication (Face Recognition)
- Firebase Authentication for secure access management
- Environment Variable Encryption to protect sensitive keys
- Haar Cascade Classifiers for face detection
- LBPH (Local Binary Patterns Histograms) for recognition
- Dataset Preprocessing: Image resizing, grayscale conversion
- Encoding & Training: Feature extraction & storage in
label.pkl
- Retraining for Improved Accuracy
The dataset training process involves capturing student facial images, preprocessing them, and training a Local Binary Pattern Histogram (LBPH) model for recognition.
import cv2
import os
import numpy as np
from datetime import datetime
class DatasetCreator:
def __init__(self):
self.face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)
self.cap = cv2.VideoCapture(0)
def create_user_dataset(self, user_id, num_images=500):
dataset_path = f"dataset/{user_id}"
os.makedirs(dataset_path, exist_ok=True)
count = 0
while count < num_images:
ret, frame = self.cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = self.face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))
for (x, y, w, h) in faces:
face = gray[y:y+h, x:x+w]
face_resized = cv2.resize(face, (200, 200))
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
cv2.imwrite(f"{dataset_path}/{timestamp}.jpg", face_resized)
count += 1
- Minimum Images: 500 per student
- Conditions: Well-lit environment, various facial expressions
- Recognition Confidence Threshold: <100 (lower is better)
Metric | Value |
---|---|
Image Resolution | 200x200 px |
Training Dataset Size | 500+ imgs |
Face Detection Accuracy | >90% |
Recognition Accuracy | 85-95% |
@app.route('/recognize', methods=['POST'])
def recognize_face():
# Capture and process face
# Compare with stored data
# Verify against Firebase authentication records
# Return authentication status
- Docker Deployment for containerized execution
- Google Cloud Run / AWS Lambda for scalable hosting
- Render for easy deployment with auto-scaling
- Enable Google Drive API in Google Cloud Console.
- Create a Service Account and Generate JSON Key.
- Store
credentials.json
securely in the project.
- Go to Firebase Console.
- Select Your Project and navigate to Service Accounts.
- Generate a new private key and download it.
- QR Code Verification for instant certificate validation.
- UI Enhancements for better user experience.
- Face Recognition with Deep Learning Models for improved accuracy.
- Email: [email protected]
- LinkedIn: Sri Nitish Kamisetti
- GitHub: Nitish2773