https://github.com/hajaarh/facial_reco_project
Application de reconnaissance faciale
https://github.com/hajaarh/facial_reco_project
deepface docker flask-api html javascript mysql
Last synced: 2 months ago
JSON representation
Application de reconnaissance faciale
- Host: GitHub
- URL: https://github.com/hajaarh/facial_reco_project
- Owner: Hajaarh
- Created: 2025-01-21T14:59:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-22T18:01:32.000Z (over 1 year ago)
- Last Synced: 2025-10-14T00:08:38.364Z (9 months ago)
- Topics: deepface, docker, flask-api, html, javascript, mysql
- Language: HTML
- Homepage:
- Size: 1.69 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Reconnaissance Faciale : Approche Docker
## 1. Contexte et Objectif
Ce projet implémente un **système de reconnaissance faciale** dont les fonctionnalités principales sont :
- **Enregistrer** un nouvel utilisateur (stockage des informations faciales sous forme d’“embeddings”).
- **Vérifier** l’identité d’un utilisateur (pointage) en comparant l’“embedding” de son visage à ceux présents dans la base de données.
Le tout est conçu pour être **exécuté via Docker**, offrant ainsi un déploiement simplifié :
1. **Installation automatique** des dépendances Python (Flask, DeepFace, etc.) à partir d’un fichier `requirements.txt`.
2. **Création automatique** de la base de données et des tables (grâce au code Flask qui invoque `db.create_all()`).
3. **Exposition** d’une interface web pour l’enregistrement et le pointage (via un simple front HTML/CSS/JS).
---
## 2. Architecture et Approche
### 2.1 Architecture globale
- **Docker Compose** orchestre plusieurs services :
- **Service MySQL** (ou PostgreSQL) pour persister les embeddings et l’historique de pointage.
- **Service Flask** pour l’API de reconnaissance (DeepFace, SQLAlchemy, etc.).
- **Fichier `requirements.txt`** : liste l’ensemble des dépendances Python (Flask, DeepFace, SQLAlchemy, etc.).
- Lors de la construction de l’image Docker pour le service Flask, un simple `pip install -r requirements.txt` installe tout le nécessaire.
- **Création automatique des tables** :
- Pas de script SQL manuel. Le code Flask appelle `db.create_all()` au démarrage, générant les tables (`employee`, `attendance_record`) dans la base MySQL.
### 2.2 Approche en détail
1. **Conteneur Flask**
- Basé sur Python 3.x + le contenu de `requirements.txt`.
- Contient le code de reconnaissance (appel à DeepFace) et d’expositions des routes `/register`, `/clock_in`, etc.
- Par défaut, écoute sur le port 5000.
2. **Conteneur MySQL**
- Géré via Docker Compose, avec les variables d’environnement (user, mot de passe, nom de la base) définies.
- Les tables sont créées automatiquement par l’ORM (SQLAlchemy) quand Flask démarre.
3. **Communication** :
- Les deux conteneurs partagent un **réseau Docker**.
- L’API Flask interagit avec MySQL via l’URI (ex. `mysql+pymysql://user:password@db:3306/facial_recognition`).
- L’interface HTML s’adresse à Flask sur `http://localhost:5000` (mappé par Docker).
---
## 3. Installation et Lancement
1. **Installer Docker** et **Docker Compose** (version >= 1.29).
2. **Cloner** ce dépôt ou en télécharger l’archive :
```bash
git clone https://github.com/ton-projet/facial_recognition.git
cd facial_recognition
3. Lancez Docker Compose pour construire et démarrer les conteneurs :
```bash
sudo docker-compose up -d
```
4. Accédez à l’application via votre navigateur à l’adresse :
- **Local** : `http://localhost:5000`
- **Serveur AWS** : Remplacez `localhost` par l’adresse IP publique de votre instance EC2.
---
## 4. Configuration et Utilisation
### 4.1 Configuration des conteneurs
- **Base de données** :
- MySQL est automatiquement initialisé avec les tables nécessaires (`Employee` et `AttendanceRecord`).
- **Fichier de dépendances** :
- Le fichier `requirements.txt` contient toutes les bibliothèques nécessaires pour le backend Python.
### 4.2 Utilisation
1. **Enregistrer un nouvel utilisateur** :
- Entrez le nom de l’utilisateur et téléchargez une photo via le formulaire prévu.
- Le visage est traité pour générer un « embedding », ensuite sauvegardé dans la base.
2. **Pointage** :
- Téléchargez une photo pour vérifier la correspondance avec les utilisateurs enregistrés.
- Si une correspondance est trouvée (distance inférieure au seuil), le pointage est enregistré.
---
## 5. Déploiement sur AWS
1. **Configuration de l'instance EC2** :
- Utilisez une instance avec Docker pré-installé (ex. : Amazon Linux ou Ubuntu).
2. **Accès SSH** :
```bash
ssh -i "votre-cle.pem" ec2-user@votre-adresse-ip
```
3. **Lancer l'application** :
- Clonez le dépôt sur l’instance, configurez Docker Compose, puis suivez les étapes d’installation.
4. **Sécurisation et accès distant** :
- Configurez un groupe de sécurité AWS pour autoriser les connexions HTTP/HTTPS (ports 80 et 443).
---
## 7. Contributeur
- Hajar HAILAF
---