Quiero crear un sistema de asistencia automática que utilice el reconocimiento facial para reconocer rostros individuales en una imagen grupal. ¿Cómo empiezo?

Necesita especificar mejor el problema. Por ejemplo, ¿se asignan los asientos o pueden los estudiantes sentarse en cualquier asiento? ¿Serán cooperativos? Por ejemplo, si les muestra lo que ve la cámara, se reubicarán para que no se bloquee la cara.

O tal vez todos estaban en uno a la vez y se detienen para mirar a la cámara y ser fotografiados. En otras palabras, el sistema solo ve una cara que mira directamente a la cámara en lugar de una transmisión de video de toda la sala

A continuación, ¿puede permitirse el lujo de “entrenar” el sistema con muchas imágenes de cada persona o debe funcionar con muy pocas fotos de ejemplo?

Creo que ves lo que quiero decir, el PRIMER paso es definir el problema es un detalle EXACTO. Qué ve la cámara, qué hacen los estudiantes, cuántos datos se recopilan. ¿Cuál es su presupuesto tanto en dinero como en tiempo? Cómo se controla la iluminación. Necesitas escribir todo esto.

Luego, paso 2, incluso antes de comenzar un diseño. ¿Cómo va a evaluar el rendimiento del sistema? Usando esta evaluación, ¿qué es una “calificación aprobatoria”?

Ahora puedes comenzar un diseño. Pero esté preparado si se topa con un obstáculo en el camino, es posible que tenga que revisar los requisitos y la evaluación anteriores. Sí, vale la pena anotar sus requisitos y mantenerlos actualizados.

Una forma barata. Los estudiantes firman su nombre en una lista y luego su computadora lee la hoja de inicio de sesión.

En general, cualquier sistema funcionará así

  1. ingrese la imagen y “normalícela”, lo que significa cambiarla a escala de grises y luego escalar para que el valor medio del píxel sea cero y la varianza sea 1.0 Esta es una operación lineal
  2. detectar caras y calcular un cuadro delimitador alrededor de cada cara. OpenCV tiene funciones que hacen esto y todo lo anterior.
  3. Extraiga “métricas” o características medidas de cada cara. De nuevo, openCV puede ayudar.
  4. Almacene el nombre y el “vector de características” en la lista. Probablemente use múltiples imágenes de cada persona y promedie el vector de características.
  5. luego, cuando tiene una cara desconocida, calcula un vector de características y compara la “distancia euclidiana” o la distancia al cuadrado o, más probablemente, solo el “producto de puntos” entre el vector desconocido y todos los vectores en su lista.

Algunas personas hoy en día usarán una red neuronal para realizar el paso 5, pero dudo que puedan capturar suficientes datos para entrenar una red, así que simplemente usaría un método clásico como “distancia en el espacio de características”.

Tendrás problemas si los estudiantes tienen lentes y algunas veces no los usan o si cambian entre diferentes pares de lentes. El “arte” está en seleccionar las características para extraer. esta es la razón por la cual es agradable usar la red neuronal: determinará qué características funcionan mejor para los datos que tiene. Pero requiere tener muchos datos.

Un método más difícil es usar una red convolucional “profunda” en la salida del paso 2, pero esto requiere quizás cientos de fotos de cada persona. Los métodos clásicos usaban muchos menos datos y menos capacitación.

Tienes que crear un conjunto de datos para el entrenamiento. Debe recopilar la imagen individual de la persona y por persona por lo menos 100 imágenes necesarias para la capacitación.

Proceso de entrenamiento

  1. Preprocesando la imagen (reduciendo el ruido de la cámara, corrigiendo la invariancia de la iluminación)
  2. Detección de rostro (usar cabello)
  3. Utilice el aprendizaje profundo para capacitar a los usuarios individuales (Facebook obtuvo un 98% de reconocimiento) o use svm con PCA para capacitar a los modelos individuales, pero en este enfoque obtendrá menos precisión.

Pruebas

  1. Aplicar detección de rostros en la imagen del grupo.
  2. Recorte la cara de la persona individual y aplique con el modelo entrenado. Qué modelo tiene el puntaje más alto, haga un recuento para esa persona.

Todo lo mejor.

Especifique si la detección de rostros es voluntaria o involuntaria

Si es voluntario, se requeriría un sistema biométrico, a menos que pueda justificar por qué el reconocimiento facial será mejor

Si es involuntario, me gustaría creer que la cámara y los ángulos con los que captura las caras producirán algunos falsos positivos y, por lo tanto, no serán 100% precisos.

No creo que con las bibliotecas actuales puedas hacer lo mismo

Será útil si puede describir en detalle lo que está tratando de lograr