
El sistema permite a los usuarios cargar su imagen en la base de datos, que luego se usa para reconocer su cara durante las verificaciones de asistencia. Las caras reconocidas coinciden con la base de datos, y la asistencia se actualiza en tiempo real. El sistema también incluye una función de inicio de sesión segura para que los maestros vean los registros de asistencia.
Este proyecto es un excelente ejemplo de cómo se puede utilizar la visión por computadora y el aprendizaje automático para automatizar los procesos tradicionales, haciéndolos más eficientes y precisos.
En los sistemas de asistencia tradicionales, el proceso de marcar la asistencia a menudo es manual, lento y propenso a los errores. Con el advenimiento del aprendizaje automático y la visión por computadora, ahora tenemos las herramientas para automatizar este proceso y hacerlo más eficiente y preciso.
Nuestro sistema de asistencia a reconocimiento de cara está diseñado para aprovechar estas tecnologías para proporcionar una solución de seguimiento de asistencia perfecta y automatizada. El sistema utiliza tecnología de reconocimiento facial para identificar a las personas y marcar su asistencia. Este proceso elimina la necesidad de entrada manual y reduce las posibilidades de errores o entradas fraudulentas.
El sistema se construye con Python, Flask, OpenCV y Firebase. Python y Flask proporcionan la funcionalidad de backend, OpenCV se utiliza para la detección y reconocimiento de la cara, y Firebase se usa como la base de datos para almacenar información y registros de asistencia del usuario.
El sistema también incluye una función de inicio de sesión segura para los maestros, lo que les permite ver los registros de asistencia. Esta característica garantiza que solo las personas autorizadas tengan acceso a los datos de asistencia.
Ya sea que sea una universidad que busque optimizar su proceso de seguimiento de asistencia o una empresa que busque automatizar el sistema de registro de su empleado, nuestro sistema de asistencia a reconocimiento facial proporciona una solución robusta y eficiente.
Haga clic en la imagen a continuación para ver el video del proyecto

El sistema de asistencia de reconocimiento facial viene con una gran cantidad de características diseñadas para hacer que el seguimiento de la asistencia sea lo más fluido y eficiente posible:
Reconocimiento facial : el sistema utiliza tecnología avanzada de reconocimiento facial para identificar a las personas y marcar su asistencia. Esto elimina la necesidad de entrada manual y garantiza la precisión del seguimiento de la asistencia.
Seguimiento de asistencia en tiempo real : el sistema rastrea la asistencia en tiempo real. Tan pronto como el sistema reconoce a un individuo, su asistencia se marca y actualiza en la base de datos.
Inicio de sesión seguro del maestro : el sistema incluye una función de inicio de sesión segura para los maestros. Esto permite a los maestros ver los registros de asistencia y garantiza que solo las personas autorizadas tengan acceso a estos datos.
Soporte de múltiples clases : el sistema admite múltiples clases. Los estudiantes pueden inscribirse en múltiples clases, y su asistencia se rastrea por separado para cada clase.
Integración de la base de datos : el sistema está integrado con Firebase, una base de datos NoSQL basada en la nube. Esto permite un almacenamiento y recuperación eficientes de la información del usuario y los registros de asistencia.
Soporte de la cámara web : el sistema admite la entrada de la cámara web para el reconocimiento facial. Esto facilita la configuración y el uso en una variedad de configuraciones.
Interfaz fácil de usar : el sistema presenta una interfaz fácil de usar, lo que facilita a los usuarios navegar y usar el sistema.
Open Fore : el sistema es de código abierto. Los desarrolladores pueden contribuir y ayudar a mejorar el sistema.





Para que el sistema de asistencia de reconocimiento facial esté en funcionamiento en su máquina local, siga estos pasos:
Clone El repositorio : Primero, clone el repositorio de su máquina local. Puede hacer esto ejecutando el siguiente comando en su terminal:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
Cree un entorno virtual y activelo. Puede hacer esto ejecutando los siguientes comandos en su terminal:
ambiente de pitón
python3.8 -m venv your_env_name
source your_env_name/bin/activate
o
ambiente de conda
conda create -n your_env_name python=3.8
conda activate your_env_name
Esto creará un entorno virtual y lo activará. Todas las dependencias se instalarán en este entorno virtual.
Instalar dependencias : navegue hacia el directorio de proyectos clonados e instale las dependencias necesarias ejecutando:
pip install -r requirements.txt
Este comando instalará todas las bibliotecas y paquetes necesarios enumerados en el archivo requirements.txt .
Tenga en cuenta que necesita descargar el archivo de predictor de forma 'shape_predictor_68_face_landmarks.dat' desde el sitio web de DLIB. Puede descargar el archivo desde aquí. Puede colocar el archivo en la carpeta de detección y debe escribir la ruta completa del archivo en el archivo face_matching.py para la variable DatFile como se muestra a continuación.

Configurar Firebase : el sistema utiliza Firebase para operaciones de base de datos. Debe configurar un proyecto Firebase y reemplazar la configuración de Firebase en el proyecto con el suyo. Puede seguir la Guía de configuración de Firebase para obtener instrucciones.



Ejecute la aplicación : primero ejecute el comando a continuación e ingrese una contraseña para el inicio de sesión del maestro.
python generate_password_hash.py
Luego, copie el archivo config/database.yaml en la sección Enter-your-toacher-login-hash.
Una vez que se complete toda la configuración, puede ejecutar la aplicación ejecutando el siguiente comando en el terminal:
python app.py
Esto iniciará el servidor Flask y se puede acceder a la aplicación en http://127.0.0.1:5000/ .
Tenga en cuenta que necesita una cámara web conectada a su máquina para que funcione la función de reconocimiento facial. Si está utilizando una computadora portátil, la cámara web incorporada funcionará bien.
Una vez que tenga el sistema de asistencia de reconocimiento facial, puede comenzar a usarlo siguiendo estos pasos:
Página de inicio : abra su navegador web y navegue a http://127.0.0.1:5000/ . Esto lo llevará a la página de inicio de la aplicación.
Cargue una nueva cara : para agregar un nuevo estudiante al sistema, haga clic en el botón "Cargar una nueva cara como imagen". Esto le permitirá subir una imagen de la cara del estudiante. La imagen debe ser clara y la cara del estudiante debe ser visible. Además, puede capturar la imagen de la cámara haciendo clic en el botón "Capturar una nueva cara de la cámara".
Agregue información del estudiante : después de cargar la imagen, será redirigido a una página donde pueda ingresar la información del estudiante. Esto incluye el nombre del estudiante, el correo electrónico, el tipo de usuario (alumno o maestro), las clases en las que se inscriben y una contraseña. Una vez que haya ingresado toda la información, haga clic en el botón "Enviar".
Reconocimiento de la cara : De vuelta en la página de inicio, puede hacer clic en el botón "Reconocer la cara". Esto comenzará el proceso de reconocimiento facial. El sistema intentará hacer coincidir la cara frente a la cámara web con las caras en la base de datos.
Selección de clase : si se encuentra una coincidencia, será redirigido a una página donde puede seleccionar la clase. La asistencia a la clase seleccionada se actualizará en la base de datos.
Inicio de sesión del maestro : si usted es un maestro, puede ver la asistencia haciendo clic en el botón "Inicio de sesión del maestro" en la página de inicio. Se le pedirá que ingrese una contraseña. Una vez que se ingrese la contraseña correcta, será redirigido a la página de asistencia donde puede ver la lista de estudiantes y su asistencia.
Recuerde, la función de reconocimiento facial requiere una cámara web. Si está utilizando una computadora portátil, la cámara web incorporada funcionará bien. Si está utilizando un escritorio, deberá conectar una cámara web a su máquina.
El sistema de asistencia de reconocimiento facial se basa en varias bibliotecas de Python para funcionar correctamente. Aquí hay una lista de las principales dependencias:
Frasco : un marco liviano de aplicaciones web. Se utiliza para manejar el lado del servidor web de la aplicación.
OpenCV : una biblioteca de funciones de programación dirigidas principalmente a la visión por computadora en tiempo real. Se utiliza para capturar imágenes de la cámara web y realizar la detección de cara.
Admin de Firebase : una biblioteca para interactuar con los servicios de Firebase. Se utiliza para interactuar con la base de datos de Firebase Real en tiempo y el almacenamiento de Firebase.
Werkzeug : una biblioteca integral de aplicaciones web WSGI. Se usa para manejar las cargas de archivos en Flask.
Almohada : una biblioteca de imágenes de Python agrega capacidades de procesamiento de imágenes a su intérprete de Python.
Numpy : una biblioteca para el lenguaje de programación de Python, que agrega soporte para matrices y matrices multidimensionales grandes, junto con una gran colección de funciones matemáticas de alto nivel para operar en estas matrices.
Para instalar estas dependencias, puede usar PIP, un administrador de paquetes para Python. Simplemente ejecute el siguiente comando en su terminal:
pip install -r requirements.txt Esto instalará todos los paquetes requeridos. Asegúrese de estar en el directorio correcto cuando ejecute este comando (el directorio debe contener el archivo requirements.txt ).
¡Las contribuciones al sistema de asistencia de reconocimiento facial son bienvenidas! Si tiene una solicitud de función, informe de errores o propuesta para la refactorización de código, no dude en abrir un problema o crear una solicitud de extracción.
Aquí hay algunas formas en que puede contribuir:
Mejora de la UI/UX : la interfaz actual es bastante básica. Si tiene experiencia con el desarrollo front-end y tiene algunas ideas sobre cómo mejorar la interfaz de usuario o la experiencia del usuario, sus contribuciones serían muy apreciadas.
Agregar nuevas características : si tiene una idea para una nueva característica que encajaría bien con este proyecto, no dude en sugerirlo abriendo un problema. Si desea implementarlo usted mismo, ¡aún mejor! Abra una solicitud de extracción con sus cambios y la revisaremos.
Informes de informes : si encuentra algún error mientras usa el sistema, repórtelos abriendo un problema. Incluya tanta información como sea posible sobre el error y las circunstancias bajo las cuales ocurrió.
Código de refactorización : como con cualquier proyecto de software, siempre hay margen de mejora en la base de código. Si ve la oportunidad de refactorizar algún código para que sea más limpio, más eficiente o más robusto, nos complacerá revisar su propuesta.
Antes de contribuir, asegúrese de verificar los problemas existentes y extraer solicitudes para evitar duplicar los esfuerzos. Además, cuando abra una solicitud de extracción, asegúrese de incluir una descripción clara y detallada de los cambios que ha realizado.
¡Gracias por su interés en contribuir al Sistema de Asistencia de Reconocimiento de la Caza!
Hay varias áreas donde el sistema podría mejorarse o ampliarse en el futuro:
Asignación de identificación del estudiante : Actualmente, la identificación del estudiante se asigna como una más que el número total de imágenes en la base de datos. En el futuro, planeamos optimizar este proceso asignando ID de estudiante faltantes (por ejemplo, si las ID son 1,2,3,4, [], 6,7,8, la identificación de la nueva imagen será 5).
Mejoras de la interfaz de usuario : Nuestro objetivo es mejorar el atractivo estético de la interfaz para proporcionar una experiencia de usuario más atractiva.
Adición de imagen de la base de datos : a partir de ahora, se agrega una imagen a la base de datos tan pronto como se captura. Planeamos modificar este proceso para que una imagen solo se agregue a la base de datos después de ingresar la información correspondiente.
Optimización de la base de datos : nuestro objetivo es optimizar las operaciones de la base de datos para acelerar el proceso llamándolos solo una vez.
Mejoras de seguridad : planeamos implementar métodos más seguros para el manejo de datos y la autenticación de los usuarios.
Inicio de sesión del estudiante : en el futuro, planeamos permitir que los estudiantes inicien sesión en el sistema utilizando sus contraseñas.
Base de datos de maestros : nuestro objetivo es crear una base de datos separada para maestros. Cuando se presiona el botón 'Inicio de sesión del maestro, se solicitará un nombre de usuario y una contraseña.
Vista del maestro : Una vez iniciado sesión, los maestros podrán ver la asistencia del alumno basada en las clases que enseñan.
Implementación : Actualmente, el sistema está diseñado para ejecutarse localmente. En el futuro, planeamos implementar el sistema en una plataforma como Heroku, lo que lo haría accesible desde cualquier lugar y no solo en la máquina local.
Manejo de errores mejorado y retroalimentación del usuario : mientras que el sistema actualmente maneja errores y proporciona comentarios al usuario, estos aspectos podrían mejorarse para que el sistema sea más robusto y fácil de usar.
Actualizaciones en tiempo real : en este momento, los datos de asistencia se actualizan cuando el estudiante inicia sesión. En el futuro, podríamos implementar actualizaciones en tiempo real, de modo que los datos de asistencia se actualicen al instante tan pronto como se reconoce la cara de un estudiante.
Integración con otros sistemas : el sistema podría integrarse con otros sistemas utilizados en instituciones educativas, como los sistemas de gestión de aprendizaje o los sistemas de información de los estudiantes. Esto permitiría una experiencia más perfecta tanto para estudiantes como para maestros.
Características adicionales : hay muchas características adicionales que podrían agregarse al sistema, como soporte para múltiples cámaras, reconocimiento de múltiples caras a la vez o la capacidad de manejar diferentes condiciones de iluminación.
Estas son solo algunas ideas para mejoras futuras. Siempre estamos abiertos a nuevas ideas y sugerencias, ¡así que no dude en contribuir!
Este proyecto tiene licencia bajo la licencia MIT. Esto significa que es libre de usar, modificar y distribuir el proyecto bajo los términos de esta licencia. Consulte el archivo de licencia para obtener más detalles.
Tenga en cuenta que este proyecto se proporciona "como está" sin ninguna garantía. Los autores no son responsables de ningún daño o problema que pueda surgir al usar el proyecto. Siempre revise el código usted mismo antes de usarlo en un entorno de producción.
Aquí hay una vista de alto nivel de los componentes del sistema y sus interacciones:

1. Sistema de reconocimiento facial: este es el núcleo de su proyecto. Capturará imágenes o marcos de video, detectará caras, extraerá características y caras de coincidencia. Este sistema se desarrollará utilizando Python y OpenCV.
2. Interfaz de usuario: esta es la parte del sistema con el que los usuarios (estudiantes e instructores) interactuarán. Mostrará información de la base de datos de Firebase y enviará entradas de usuario a la base de datos. La interfaz se desarrollará como una aplicación web utilizando HTML, CSS y JavaScript.
3. Base de datos de Firebase: aquí es donde se almacenarán todos los datos necesarios. La base de datos almacenará información de los estudiantes, registros de asistencia y cualquier otro datos necesarios. El sistema de reconocimiento facial y la interfaz de usuario interactuarán con la base de datos para almacenar y recuperar datos.
Interacciones:
El sistema de reconocimiento facial capturará imágenes o marcos de video de la cámara del usuario, detectará caras, extraerá características y combatirá caras. Cuando se combina una cara, el sistema enviará la identificación del estudiante y la fecha y hora actuales a la base de datos de Firebase para registrar la asistencia.
La interfaz de usuario mostrará los registros de asistencia de la base de datos de Firebase. Cuando un estudiante o instructor inicia sesión, la interfaz enviará su identificación a la base de datos de Firebase para recuperar sus registros de asistencia. La interfaz también proporcionará opciones para que los estudiantes se registren para clases y para que los instructores creen clases, y estas acciones también implicarán enviar datos a la base de datos de Firebase.
La base de datos de Firebase almacenará todos los datos del sistema. Cuando recibe datos del sistema de reconocimiento facial o de la interfaz de usuario, actualizará los registros relevantes. Cuando recibe una solicitud de datos de la interfaz de usuario, recuperará los registros solicitados y los enviará a la interfaz.
Esta es una vista simplificada de la arquitectura del sistema y las interacciones entre los componentes. Dependiendo de los requisitos específicos de su proyecto, es posible que deba agregar más componentes o interacciones. Por ejemplo, es posible que deba agregar un componente para manejar la autenticación de los usuarios si desea asegurarse de que solo los estudiantes e instructores registrados puedan acceder al sistema.docs/images/database_design.png
Diseñemos y dibujemos el esquema de la base de datos para Firebase. Esto incluye definir los datos que se almacenarán (por ejemplo, información de los estudiantes, registros de asistencia, etc.) y cómo estos datos serán estructurados y relacionados.

Recopilación de usuarios: esta colección almacenará información sobre todos los usuarios, incluidos los estudiantes y los instructores. Cada usuario tendrá una ID única, y los datos almacenados para cada usuario pueden incluir:
userID : un identificador único para el usuario.name : el nombre completo del usuario.email : la dirección de correo electrónico del usuario.embeddings : incrustaciones de la cara del usuariouserType : el tipo de usuario (estudiante o instructor).password : la contraseña del usuario (almacenada de forma segura).classes : Lista de programas en los que el usuario está inscrito (para estudiantes) y la cantidad de asistencia de ese estudianteEsta es una vista simplificada de la estructura de nuestra base de datos. También almacenamos las imágenes del estudiante en el almacenamiento de Firebase. Las imágenes se almacenan en una carpeta llamada static/imágenes y el nombre de las imágenes son la identificación del estudiante.
Esta es una parte crucial de su proyecto e implica varios pasos:

Algoritmos de reconocimiento de la cara de investigación:
Implementar el sistema de reconocimiento facial:
Integre el sistema de reconocimiento facial con la base de datos de Firebase: