Este es mi intento de hacer un sistema de reconocimiento facial para la asistencia de aula u oficina. El sistema se basa en un tipo especial de arquitectura CNN conocida como red siamesa. Dicha red está capacitada para generar un vector 128 muy preciso y casi único dado que las imágenes de la cara que se alimentan a la red están correctamente alineadas y recortadas.
Luego, otra densa red neuronal está capacitada tomando la entrada estos incrustaciones. La segunda red neuronal es solo para fines de clasificación. Luego, la persona que es identificada por el sistema, su asistencia en el sistema se incrementa en 1.
Cuando el sistema está cerrado, se genera un archivo de Excel que consiste en la asistencia de todos los estudiantes.
Tomado de Deeplearning.ai.
Puedes ver estos videos. El profesor Andrew Ng da una excelente explicación a estas redes.
He descargado el modelo Facenet pretranalado de Nyoki-Mtl Githubu
Esta red está previamente previa a un conjunto de datos bastante grande, y produce un vector único de 128 dimensiones para una cara particular dadas las imágenes que se le alimentan solo a la región de la cara y se alinean. El tamaño de entrada de la imagen para esta netowrk es 160x160x3
La detección de la cara se logra utilizando cascadas de Haar de OpenCV. La detección de la cara Haarcascade se usa para detectar la cara y esta región detectada se alimenta al generador de incrustación.
La segunda red neuronal tiene una arquitectura densa y se utiliza para la clasificación. La segunda red neuronal toma la entrada del vector 128 dimensional y le otorga a la probabilidad de que la cara sea una de las estudiantes. La arquitectura de la segunda red neuronal es 
La base de datos utilizada es MongoDB. Pymongo se usa para agregar, eliminar registros y también incrementar la asistencia del estudiante en particular. 
Después de que se cierra la aplicación, se genera un archivo de Excel. Este archivo de Excel contiene la asistencia de todo el estudiante.
Comience su terminal de CMD dependiendo de su sistema operativo.
Si tiene una GPU NVIDIA, asegúrese de tener los requisitos previos para la instalación de GPU de TensorFlow (consulte el sitio oficial). Entonces usa este Commmand
PIP install -r requisitos_gpu.txt
En caso de que no tenga una GPU, use este comando
pip install -r requirements_cpu.txt
1) Instale todos los requisitos
2) Haga una carpeta llamada "People" sin citas
3) Ahora ejecute generación_training_data.py, cuando esto se ejecuta ingrese el nombre de la persona seguido de un índice que comienza desde cero, por ejemplo, si quiero generar datos para "Ravi", escribiré "Ravi0" y para el próximo nombre escriba "SecondName1", solo asegúrese de que el índice dado a todos esté aumentando el orden. Ahora ponga todas estas carpetas en la carpeta People 
4) Ahora en Trainer.py cambie el número de clases según el número de carpetas y luego ejecute entrenador.py
5) El modelo será entrenado.
6) Ahora cree una base de datos usando MongoDB. Ingrese todos los nombres con su asistencia. Esto puede ser logrado por
a) crear una base de datos llamada "nueva"
b) Crear una colección llamada "PA"
c) Agregue los Enteries. Para EG DB.PA.INSERT ({"Nombre": "Satinder", "Asistencia": 0})

7) Ahora abra ReconConizer.py y cambie el diccionario "A" y las personas según sus datos. La clave de la matriz "A" es el índice de las personas y los datos son una variable indicadora que se utiliza para indicar que en una sesión particular, si se ha tomado la asistencia a la persona.
8) El diccionario "gente" se explica por sí mismo.
9) Ejecute reconocer.py para reconocer a las personas. Su asistencia se registrará en la base de datos MongoDB.


Si te gustó, seguramente también te gustará mis otros repos. También puede echar un vistazo a mi canal de YouTube "Ciencia del reactor". Si tiene alguna duda, puede comunicarse conmigo en mi página de Facebook "Ciencia del reactor"
1) Aprendizaje profundo con Python por Francois Chollet
2) Keras.io
3) Deeplearning.ai por Coursera (profesor Andrew Ng)
4) CS231N por Stanford
5) pyimagesearch.com (Adrian Rosenberg)
6) Brandon Amos (Github: https: //github.com/bamos)