Système de surveillance avec reconnaissance faciale en temps réel pour établissements scolaires
🚀 Installation • 📖 Documentation • 🎯 Fonctionnalités • 🛠️ API • 🤝 Contribution
AI Guard Flask est un système de surveillance intelligente nouvelle génération conçu spécifiquement pour les établissements scolaires. Il combine reconnaissance faciale avancée, streaming vidéo temps réel et interface multi-utilisateurs pour offrir une solution de sécurité complète et moderne.
✅ Élimination du clignotement vidéo (migration Streamlit → Flask)
✅ Streaming MJPEG continu sans interruption
✅ Interface multi-utilisateurs professionnelle
✅ Alertes temps réel via WebSocket
✅ Performance optimisée avec threading avancé
- Dlib ResNet pour reconnaissance haute précision
- Détection multi-visages simultanée
- Seuil de confiance configurable
- Base de données d'embeddings optimisée
- MJPEG streaming sans latence
- Résolution adaptative (480p à 1080p)
- FPS configurable (15-30 fps)
- Support multi-caméras (webcam, IP)
- 4 rôles distincts : Admin, Surveillant, Service Admin, Étudiant
- Authentification sécurisée avec Flask-Login
- Permissions granulaires par rôle
- Dashboard personnalisé pour chaque utilisateur
- WebSocket pour alertes instantanées
- Threading optimisé pour capture/traitement
- Queue système pour buffer vidéo
- Cache intelligent des modèles IA
- Design responsive avec Tailwind CSS
- Dashboard interactif avec métriques live
- Notifications push en temps réel
- Mode sombre/clair
AI_GUARD_FLASK/
├── 🚀 app.py # Application Flask principale
├── ⚙️ config.py # Configuration système
├── 📦 requirements.txt # Dépendances Python
├── 🏃 run.py # Point d'entrée
│
├── 📁 routes/ # Routes Flask (Blueprints)
│ ├── 🔐 auth.py # Authentification
│ ├── 📹 surveillance.py # Surveillance temps réel
│ ├── 👤 admin.py # Administration
│ └── 🔌 api.py # API REST
│
├── 📁 core/ # Logique métier
│ ├── 🧠 ai_guard_logic.py # IA reconnaissance faciale
│ ├── 💾 database_manager.py # Gestionnaire base de données
│ └── 🔑 auth_manager.py # Authentification Flask-Login
│
├── 📁 services/ # Services temps réel
│ ├── 📺 video_stream.py # Streaming MJPEG
│ ├── 🔗 websocket_manager.py # WebSocket temps réel
│ └── 🚨 alert_manager.py # Gestionnaire alertes
│
├── 📁 templates/ # Interface utilisateur
│ ├── 🎨 base.html # Template de base
│ ├── 🔐 auth/login.html # Page de connexion
│ └── 📹 surveillance/live.html # Interface surveillance
│
├── 📁 static/ # Assets frontend
│ ├── 🎨 css/ # Styles CSS
│ └── ⚡ js/ # JavaScript + WebSocket
│
└── 📁 data/ # Données et modèles
├── 💾 authorized_faces.db # Base embeddings faciaux
├── 👥 ai_guard_platform.db # Base utilisateurs
└── 🤖 Dlib_face_recognition/ # Modèles IA
- Python 3.8+ (3.10 recommandé)
- Webcam USB ou caméra IP
- 8 GB RAM minimum (16 GB recommandé)
- Navigateur moderne (Chrome, Firefox, Edge)
# 1. Cloner le repository
git clone https://github.com/votre-username/ai-guard-flask.git
cd ai-guard-flask
# 2. Créer l'environnement virtuel
python -m venv venv_ai_guard
source venv_ai_guard/bin/activate # Linux/macOS
# ou
venv_ai_guard\Scripts\activate # Windows
# 3. Installer les dépendances
pip install --upgrade pip
pip install -r requirements.txt
# 4. Télécharger les modèles Dlib (200 MB)
python setup_models.py
# 5. Initialiser la base de données
python init_database.py
# 6. Lancer l'application
python run.py
🌐 Interface Web: http://localhost:5000
👤 Admin par défaut: admin / admin123
📹 Surveillance: http://localhost:5000/surveillance
- Dashboard complet avec statistiques globales
- Gestion des utilisateurs (CRUD complet)
- Monitoring multi-caméras simultané
- Configuration système avancée
- Rapports d'incidents détaillés
- Logs d'audit complets
- Monitoring caméras en temps réel
- Création de rapports d'incidents
- Alertes temps réel configurables
- Snapshots automatiques d'alertes
- Consultation historique des événements
- Validation d'enrôlements étudiants
- Communication avec les étudiants
- Rapports simplifiés d'activité
- Gestion des autorisations temporaires
- Enrôlement facial guidé (3 vues)
- Consultation profil personnel
- Historique d'enrôlement personnel
- Processus de ré-enrôlement si nécessaire
# config.py - Paramètres IA
RECOGNITION_THRESHOLD = 0.6 # Seuil de reconnaissance (0.4-0.8)
FACE_DETECTION_UPSAMPLE = 1 # Précision détection (0-2)
MAX_FACES_PER_FRAME = 10 # Limite visages par image
COOLDOWN_ALERTS = 30 # Intervalle alertes (secondes)
# Qualité vidéo
VIDEO_WIDTH = 640 # Largeur (480-1920)
VIDEO_HEIGHT = 480 # Hauteur (360-1080)
VIDEO_FPS = 25 # Images par seconde (15-30)
MJPEG_QUALITY = 85 # Qualité compression (50-95)
# SQLite local (production recommandée: PostgreSQL)
DATABASE_URI = 'sqlite:///data/ai_guard_platform.db'
FACES_DATABASE = 'data/authorized_faces.db'
# Authentification
POST /api/auth/login # Connexion utilisateur
POST /api/auth/logout # Déconnexion
GET /api/auth/profile # Profil utilisateur
# Surveillance
GET /api/surveillance/status # Statut système temps réel
GET /api/surveillance/stream # Flux vidéo MJPEG
POST /api/surveillance/config # Configuration paramètres
# Administration
GET /api/admin/users # Liste utilisateurs
POST /api/admin/users # Créer utilisateur
PUT /api/admin/users/{id} # Modifier utilisateur
GET /api/admin/stats # Statistiques globales
# Alertes
GET /api/alerts # Historique alertes
POST /api/alerts/test # Test alerte
import requests
# Connexion API
response = requests.post('http://localhost:5000/api/auth/login',
json={'username': 'admin', 'password': 'admin123'})
token = response.json()['token']
# Récupérer les statistiques
stats = requests.get('http://localhost:5000/api/admin/stats',
headers={'Authorization': f'Bearer {token}'})
print(stats.json())
- Flask 2.0+ - Framework web Python
- Dlib - Reconnaissance faciale ResNet
- OpenCV 4.5+ - Traitement vidéo
- SQLite/PostgreSQL - Base de données
- Flask-Login - Authentification
- Flask-SocketIO - WebSocket temps réel
- Tailwind CSS - Framework CSS moderne
- JavaScript ES6+ - Logique client
- WebSocket API - Communication temps réel
- Font Awesome - Icônes
- Chart.js - Graphiques temps réel
- Dlib ResNet - Encodage facial 128D
- HOG Detector - Détection visages
- 68 landmarks - Points caractéristiques
- NumPy - Calculs matriciels
- Threading - Traitement parallèle
- ⚡ FPS vidéo : 25-30 fps en temps réel
- 🧠 Temps de traitement IA : <100ms par frame
- 💾 Utilisation mémoire : <2GB RAM
- 👥 Utilisateurs simultanés : 50+ connexions
- 🎯 Précision reconnaissance : 95%+ sur visages enrôlés
- Threading séparé capture/traitement
- Queue buffers pour frames vidéo
- Cache modèles IA en mémoire
- Streaming MJPEG optimisé
- WebSocket pour événements temps réel
# Tests unitaires
python -m pytest tests/
# Tests d'intégration
python -m pytest tests/integration/
# Tests de performance
python tests/performance/benchmark.py
# Tests de reconnaissance
python tests/face_recognition/test_accuracy.py
python run.py
# Interface: http://localhost:5000
# Build image
docker build -t ai-guard-flask .
# Run container
docker run -p 5000:5000 -v ./data:/app/data ai-guard-flask
# Avec Gunicorn
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
# Avec nginx (reverse proxy recommandé)
sudo nginx -s reload
- Hash bcrypt pour mots de passe
- Session sécurisée Flask
- CSRF protection intégrée
- Rate limiting sur login
- Stockage local SQLite/PostgreSQL
- Pas de transmission cloud des embeddings
- Snapshots chiffrés localement
- Logs d'audit complets
- HTTPS recommandé en production
- CORS configuré pour API
- WebSocket sécurisé (WSS)
- Fork le repository
- Créer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite
) - Commit vos changements (
git commit -m 'Ajout nouvelle fonctionnalité'
) - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite
) - Ouvrir une Pull Request
- Code style : Black + Flake8
- Tests requis pour nouvelles fonctionnalités
- Documentation mise à jour
- Commit messages en français explicites
- Reconnaissance multi-visages simultanés
- Enrôlement facial via interface web
- Support caméras IP multiples
- Notifications push mobile
- API REST complète
- IA prédictive comportementale
- Analyse de mouvements suspects
- Intégration cloud optionnelle
- Application mobile dédiée
- Reconnaissance vocale additionnelle
Ce projet est sous licence Apache 2.0 - voir le fichier LICENSE pour les détails.
- Wiki GitHub : Documentation complète
- Issues : Rapporter des bugs
- Discussions : Questions et aide
- Email : support@ai-guard.local
- GitHub Issues : Créer un ticket