
Le système permet aux utilisateurs de télécharger leur image dans la base de données, qui est ensuite utilisée pour reconnaître leur visage lors des vérifications de fréquentation. Les visages reconnus sont appariés avec la base de données et la fréquentation est mise à jour en temps réel. Le système comprend également une fonction de connexion sécurisée pour les enseignants afin de consulter les dossiers de fréquentation.
Ce projet est un excellent exemple de la façon dont la vision par ordinateur et l'apprentissage automatique peuvent être utilisés pour automatiser les processus traditionnels, les rendant plus efficaces et précises.
Dans les systèmes de fréquentation traditionnels, le processus de marquage de la fréquentation est souvent manuel, long et sujette aux erreurs. Avec l'avènement de l'apprentissage automatique et de la vision par ordinateur, nous avons maintenant les outils pour automatiser ce processus et le rendre plus efficace et précis.
Notre système de fréquentation de la reconnaissance faciale est conçu pour tirer parti de ces technologies pour fournir une solution de suivi de fréquentation sans couture et automatisée. Le système utilise une technologie de reconnaissance faciale pour identifier les individus et marquer leur fréquentation. Ce processus élimine la nécessité d'une entrée manuelle et réduit les chances d'erreurs ou les entrées frauduleuses.
Le système est construit à l'aide de Python, Flask, OpenCV et Firebase. Python et Flask fournissent la fonctionnalité backend, OpenCV est utilisé pour la détection et la reconnaissance du visage, et Firebase est utilisé comme base de données pour stocker les informations des utilisateurs et les enregistrements de fréquentation.
Le système comprend également une fonction de connexion sécurisée pour les enseignants, ce qui leur permet de visualiser les dossiers de fréquentation. Cette fonctionnalité garantit que seules les personnes autorisées ont accès aux données de fréquentation.
Que vous soyez une université qui cherche à rationaliser votre processus de suivi de fréquentation ou une entreprise qui cherche à automatiser votre système d'enregistrement des employés, notre système de fréquentation de reconnaissance faciale fournit une solution robuste et efficace.
Veuillez cliquer sur l'image ci-dessous pour la vidéo du projet

Le système de fréquentation de la reconnaissance faciale est livré avec une multitude de fonctionnalités conçues pour rendre le suivi de fréquentation aussi transparent et efficace que possible:
Reconnaissance du visage : Le système utilise une technologie avancée de reconnaissance faciale pour identifier les individus et marquer leur fréquentation. Cela élimine le besoin d'une entrée manuelle et garantit la précision du suivi de la présence.
Suivi de fréquentation en temps réel : le système suit la fréquentation en temps réel. Dès qu'un individu est reconnu par le système, sa fréquentation est marquée et mise à jour dans la base de données.
Connexion sécurisée des enseignants : le système comprend une fonction de connexion sécurisée pour les enseignants. Cela permet aux enseignants de visualiser les dossiers de présence et garantit que seuls les personnes autorisées ont accès à ces données.
Prise en charge multi-classes : le système prend en charge plusieurs classes. Les étudiants peuvent être inscrits dans plusieurs classes et leur présence est suivie séparément pour chaque classe.
Intégration de la base de données : le système est intégré à Firebase, une base de données NOSQL basée sur le cloud. Cela permet un stockage et une récupération efficaces des informations des utilisateurs et des enregistrements de fréquentation.
Prise en charge de la webcam : le système prend en charge les entrées webcam pour la reconnaissance du visage. Cela facilite la configuration et l'utilisation dans une variété de paramètres.
Interface conviviale : le système dispose d'une interface conviviale, ce qui permet aux utilisateurs de naviguer facilement et d'utiliser le système.
Open source : le système est open source. Les développeurs sont les bienvenus pour contribuer et aider à améliorer le système.





Pour obtenir le système de fréquentation de la reconnaissance faciale opérationnelle sur votre machine locale, suivez ces étapes:
Clone le référentiel : Premièrement, clonez le référentiel de votre machine locale. Vous pouvez le faire en exécutant la commande suivante dans votre terminal:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
Créez un environnement virtuel et activez-le. Vous pouvez le faire en exécutant les commandes suivantes dans votre terminal:
environnement python
python3.8 -m venv your_env_name
source your_env_name/bin/activate
ou
environnement conda
conda create -n your_env_name python=3.8
conda activate your_env_name
Cela créera un environnement virtuel et l'activera. Toutes les dépendances seront installées dans cet environnement virtuel.
Installez les dépendances : naviguez dans le répertoire du projet cloné et installez les dépendances nécessaires en exécutant:
pip install -r requirements.txt
Cette commande installera toutes les bibliothèques et packages nécessaires répertoriés dans le fichier requirements.txt .
Veuillez noter que vous devez télécharger le fichier de prédicteur de forme 'Shape_Predictor_68_face_landmarks.dat' sur le site Web DLIB. Vous pouvez télécharger le fichier à partir d'ici. Vous pouvez mettre le fichier dans le dossier de détection et vous devez écrire le chemin complet du fichier dans le fichier face_matching.py pour la variable DatFile comme ci-dessous.

Configurer Firebase : Le système utilise Firebase pour les opérations de base de données. Vous devez configurer un projet Firebase et remplacer la configuration de la base de feu dans le projet par le vôtre. Vous pouvez suivre le guide de configuration des bases de feu pour les instructions.



Exécutez l'application : exécutez d'abord la commande ci-dessous et entrez un mot de passe pour la connexion de l'enseignant.
python generate_password_hash.py
Copiez ensuite le fichier de configs / database.yaml dans la section Entrée-votre enseignant-login-Hash.
Une fois toute la configuration terminée, vous pouvez exécuter l'application en exécutant la commande suivante dans le terminal:
python app.py
Cela démarrera le serveur FLASK et l'application sera accessible à http://127.0.0.1:5000/ .
Veuillez noter que vous avez besoin d'une webcam connectée à votre machine pour que la fonction de reconnaissance faciale fonctionne. Si vous utilisez un ordinateur portable, la webcam intégrée fonctionnera bien.
Une fois que le système de fréquentation de la reconnaissance du visage est en cours d'exécution, vous pouvez commencer à l'utiliser en suivant ces étapes:
Page d'accueil : ouvrez votre navigateur Web et accédez à http://127.0.0.1:5000/ . Cela vous amènera à la page d'accueil de l'application.
Téléchargez un nouveau visage : Pour ajouter un nouvel étudiant au système, cliquez sur le bouton "Télécharger un nouveau visage en tant qu'image". Cela vous permettra de télécharger une image du visage de l'élève. L'image doit être claire et le visage de l'élève doit être visible. En outre, vous pouvez capturer l'image à partir de l'appareil photo en cliquant sur le bouton "capturer un nouveau visage de la caméra".
Ajouter des informations sur les élèves : après avoir téléchargé l'image, vous serez redirigé vers une page où vous pouvez saisir les informations de l'élève. Cela comprend le nom de l'élève, le courrier électronique, le type d'utilisateur (élève ou enseignant), les classes dans lesquelles ils sont inscrits et un mot de passe. Une fois que vous avez entré toutes les informations, cliquez sur le bouton "Soumettre".
Reconnaissance du visage : de retour sur la page d'accueil, vous pouvez cliquer sur le bouton "Reconnaître le visage". Cela commencera le processus de reconnaissance faciale. Le système essaiera de faire correspondre le visage devant la webcam avec les visages de la base de données.
Sélection de classe : si une correspondance est trouvée, vous serez redirigé vers une page où vous pouvez sélectionner la classe. La fréquentation de la classe sélectionnée sera mise à jour dans la base de données.
Connexion de l'enseignant : si vous êtes enseignant, vous pouvez consulter la fréquentation en cliquant sur le bouton "Connexion de l'enseignant" sur la page d'accueil. Il vous sera demandé de saisir un mot de passe. Une fois le mot de passe correct saisi, vous serez redirigé vers la page de fréquentation où vous pouvez voir la liste des étudiants et leur présence.
N'oubliez pas que la fonction de reconnaissance faciale nécessite une webcam. Si vous utilisez un ordinateur portable, la webcam intégrée fonctionnera bien. Si vous utilisez un bureau, vous devrez connecter une webcam à votre machine.
Le système de fréquentation de la reconnaissance faciale repose sur plusieurs bibliothèques Python pour fonctionner correctement. Voici une liste des principales dépendances:
FLASK : un cadre d'application Web léger. Il est utilisé pour gérer le côté serveur Web de l'application.
OpenCV : Une bibliothèque de fonctions de programmation visait principalement la vision informatique en temps réel. Il est utilisé pour capturer des images à partir de la webcam et effectuer la détection du visage.
Firebase Admin : une bibliothèque pour interagir avec les services Firebase. Il est utilisé pour interagir avec la base de données Firebase en temps réel et le stockage de la base de feu.
Werkzug : une bibliothèque complète des applications Web WSGI. Il est utilisé pour gérer les téléchargements de fichiers dans Flask.
Oreiller : Une bibliothèque d'imagerie Python ajoute des capacités de traitement d'image à votre interprète Python.
Numpy : une bibliothèque pour le langage de programmation Python, ajoutant la prise en charge de grands tableaux et matrices multidimensionnels, ainsi qu'une grande collection de fonctions mathématiques de haut niveau pour fonctionner sur ces tableaux.
Pour installer ces dépendances, vous pouvez utiliser PIP, un gestionnaire de packages pour Python. Exécutez simplement la commande suivante dans votre terminal:
pip install -r requirements.txt Cela installera tous les packages requis. Assurez-vous que vous êtes dans le répertoire correct lorsque vous exécutez cette commande (le répertoire doit contenir le fichier requirements.txt ).
Les contributions au système de fréquentation de la reconnaissance faciale sont les bienvenues! Si vous avez une demande de fonctionnalité, un rapport de bogue ou une proposition de refactorisation de code, n'hésitez pas à ouvrir un problème ou à créer une demande de traction.
Voici quelques façons de contribuer:
Amélioration de l'interface utilisateur / UX : l'interface actuelle est assez basique. Si vous avez de l'expérience avec le développement frontal et que vous avez des idées sur la façon d'améliorer l'interface utilisateur ou l'expérience utilisateur, vos contributions seraient grandement appréciées.
Ajouter de nouvelles fonctionnalités : si vous avez une idée pour une nouvelle fonctionnalité qui s'adapterait bien à ce projet, n'hésitez pas à le suggérer en ouvrant un problème. Si vous souhaitez le mettre en œuvre vous-même, encore mieux! Ouvrez une demande de traction avec vos modifications et nous l'examinerons.
Rapport des bogues : si vous rencontrez des bogues lors de l'utilisation du système, veuillez les signaler en ouvrant un problème. Incluez autant d'informations que possible sur le bogue et les circonstances dans lesquelles elle s'est produite.
Code de refactorisation : Comme pour tout projet logiciel, il y a toujours place à l'amélioration de la base de code. Si vous voyez une occasion de refacter un code pour le rendre plus propre, plus efficace ou plus robuste, nous serions heureux de revoir votre proposition.
Avant de contribuer, assurez-vous de vérifier les problèmes existants et de retirer les demandes pour éviter la duplication des efforts. De plus, lorsque vous ouvrez une demande de traction, assurez-vous d'inclure une description claire et détaillée des modifications que vous avez apportées.
Merci de votre intérêt à contribuer au système de fréquentation de la reconnaissance faciale!
Il existe plusieurs domaines où le système pourrait être amélioré ou élargi à l'avenir:
Affectation d'identification de l'étudiant : Actuellement, l'ID étudiant est attribué comme un plus que le nombre total d'images dans la base de données. À l'avenir, nous prévoyons d'optimiser ce processus en attribuant des ID d'étudiants manquants (par exemple, si les ID sont 1,2,3,4, [], 6,7,8, l'ID de la nouvelle image aura 5).
Améliorations de l'interface utilisateur : nous visons à améliorer l'attrait esthétique de l'interface pour fournir une expérience utilisateur plus attrayante.
Ajout d'image de la base de données : Pour l'instant, une image est ajoutée à la base de données dès qu'elle est capturée. Nous prévoyons de modifier ce processus afin qu'une image soit ajoutée à la base de données après la saisie des informations correspondantes.
Optimisation de la base de données : nous visons à optimiser les opérations de base de données pour accélérer le processus en les appelant une seule fois.
Améliorations de sécurité : nous prévoyons d'implémenter des méthodes plus sécurisées pour la gestion des données et l'authentification des utilisateurs.
Connexion des étudiants : à l'avenir, nous prévoyons de permettre aux étudiants de se connecter au système à l'aide de leurs mots de passe.
Base de données des enseignants : Nous visons à créer une base de données distincte pour les enseignants. Lorsque le bouton «Connexion de l'enseignant» est enfoncé, un nom d'utilisateur et un mot de passe seront demandés.
Vue des enseignants : Une fois connecté, les enseignants pourront voir la fréquentation des élèves en fonction des cours qu'ils enseignent.
Déploiement : Actuellement, le système est conçu pour s'exécuter localement. À l'avenir, nous prévoyons de déployer le système sur une plate-forme comme Heroku, ce qui le rendrait accessible de n'importe où et pas seulement sur la machine locale.
Amélioration des erreurs et des commentaires de l'utilisateur : Bien que le système gère actuellement les erreurs et fournit des commentaires à l'utilisateur, ces aspects pourraient être améliorés pour rendre le système plus robuste et convivial.
Mises à jour en temps réel : pour le moment, les données de fréquentation sont mises à jour lorsque l'étudiant se connecte. À l'avenir, nous pourrions mettre en œuvre des mises à jour en temps réel, afin que les données de fréquentation soient mises à jour instantanément dès que le visage d'un étudiant est reconnu.
Intégration avec d'autres systèmes : Le système pourrait être intégré à d'autres systèmes utilisés dans les établissements d'enseignement, tels que les systèmes de gestion de l'apprentissage ou les systèmes d'information des étudiants. Cela permettrait une expérience plus transparente pour les élèves et les enseignants.
Caractéristiques supplémentaires : Il existe de nombreuses fonctionnalités supplémentaires qui pourraient être ajoutées au système, telles que la prise en charge de plusieurs caméras, la reconnaissance de plusieurs faces à la fois ou la possibilité de gérer différentes conditions d'éclairage.
Ce ne sont que quelques idées d'améliorations futures. Nous sommes toujours ouverts aux nouvelles idées et suggestions, alors n'hésitez pas à contribuer!
Ce projet est autorisé sous la licence du MIT. Cela signifie que vous êtes libre d'utiliser, de modifier et de distribuer le projet en vertu des termes de cette licence. Veuillez consulter le fichier de licence pour plus de détails.
Veuillez noter que ce projet est fourni "tel quel" sans aucune garantie. Les auteurs ne sont pas responsables des dommages ou des problèmes qui peuvent résulter de l'utilisation du projet. Vérifiez toujours le code vous-même avant de l'utiliser dans un environnement de production.
Voici une vue de haut niveau des composants du système et de leurs interactions:

1. Système de reconnaissance faciale: c'est le cœur de votre projet. Il capturera des images ou des cadres vidéo, détectera les visages, extraire les fonctionnalités et assortira des faces. Ce système sera développé à l'aide de Python et OpenCV.
2. Interface utilisateur: c'est la partie du système avec lequel les utilisateurs (étudiants et instructeurs) interagiront. Il affichera les informations de la base de données Firebase et enverra les entrées utilisateur à la base de données. L'interface sera développée en tant qu'application Web à l'aide de HTML, CSS et JavaScript.
3. Base de données Firebase: c'est là que toutes les données nécessaires seront stockées. La base de données stockera les informations des étudiants, les enregistrements de présence et toutes les autres données nécessaires. Le système de reconnaissance faciale et l'interface utilisateur interagiront à la fois avec la base de données pour stocker et récupérer des données.
Interactions:
Le système de reconnaissance faciale capturera des images ou des trames vidéo de l'appareil photo de l'utilisateur, détectera les visages, extraire les fonctionnalités et assortissant les faces. Lorsqu'un visage est apparié, le système enverra l'ID de l'étudiant et la date et l'heure actuelles à la base de données Firebase pour enregistrer la fréquentation.
L' interface utilisateur affichera les enregistrements de fréquentation de la base de données Firebase. Lorsqu'un étudiant ou un instructeur se connecte, l'interface enverra son identifiant à la base de données Firebase pour récupérer ses dossiers de fréquentation. L'interface fournira également des options aux étudiants pour s'inscrire aux cours et aux instructeurs pour créer des classes, et ces actions impliqueront également l'envoi de données à la base de données Firebase.
La base de données Firebase stockera toutes les données du système. Lorsqu'il reçoit des données du système de reconnaissance faciale ou de l'interface utilisateur, il mettra à jour les enregistrements pertinents. Lorsqu'il reçoit une demande de données de l'interface utilisateur, il récupérera les enregistrements demandés et l'enverra à l'interface.
Il s'agit d'une vue simplifiée de l'architecture du système et des interactions entre les composants. Selon les exigences spécifiques de votre projet, vous devrez peut-être ajouter plus de composants ou d'interactions. Par exemple, vous devrez peut-être ajouter un composant pour gérer l'authentification des utilisateurs si vous souhaitez vous assurer que seuls les étudiants et les instructeurs enregistrés peuvent accéder au système.docs/images/database_design.png
Concevons et dessions maintenant le schéma de base de données pour Firebase. Cela comprend la définition des données qui seront stockées (par exemple, les informations des étudiants, les dossiers de fréquentation, etc.) et comment ces données seront structurées et liées.

Collection des utilisateurs: Cette collection stockera des informations sur tous les utilisateurs, y compris les étudiants et les instructeurs. Chaque utilisateur aura un ID unique et les données stockées pour chaque utilisateur peuvent inclure:
userID : un identifiant unique pour l'utilisateur.name : le nom complet de l'utilisateur.email : l'adresse e-mail de l'utilisateur.embeddings : Face utilisateur EmbeddingsuserType : le type d'utilisateur (étudiant ou instructeur).password : le mot de passe de l'utilisateur (stocké en toute sécurité).classes : Liste des programmes dans lesquels l'utilisateur est inscrit (pour les étudiants) et le nombre de fréquentation de cet étudiantIl s'agit d'une vue simplifiée de la structure de notre base de données. Nous avons également stocké les images de l'élève dans le stockage de la base de feu. Les images sont stockées dans un dossier nommé statique / les images et le nom des images sont l'ID de l'élève.
Il s'agit d'une partie cruciale de votre projet et implique plusieurs étapes:

Algorithmes de reconnaissance face à la recherche:
Mettre en œuvre le système de reconnaissance faciale:
Intégrer le système de reconnaissance faciale avec la base de données Firebase: