Publicada: 11 Sep 2019 - Autor: Luis Mendoza

Actualmente el reconocimiento facial es una tarea fácil para los humanos. El experimento “Newborns face recognition: Role of inner and outer facial features”, han demostrado que los bebés de uno a tres días pueden distinguir entre caras conocidas. Entonces, ¿qué tan difícil puede ser para una computadora?, sabemos poco sobre el reconocimiento humano hasta la fecha. ¿Se utilizan las características internas para un reconocimiento facial exitoso? (ojos, nariz, boca) o las características externas (forma de la cabeza, línea del cabello).

¿Cómo analizamos una imagen y cómo la codifica el cerebro? David Hubel y Torsten Wiesel demostraron que nuestro cerebro tiene células nerviosas especializadas que responden a características locales específicas de una escena, como líneas, bordes, ángulos o movimiento. Como no vemos el mundo como piezas dispersas, nuestra corteza visual debe combinar de alguna manera las diferentes fuentes de información en patrones útiles. El reconocimiento automático de rostros se trata de extraer esas características significativas de una imagen, ponerlas en una representación útil y realizar algún tipo de clasificación entre ellas.

¿Qué es OpenCV?

OpenCV (Open Source Computer Vision Library: http://opencv.org) es una biblioteca de código abierto con licencia BSD que incluye cientos de algoritmos de visión por computadora.

¿Cómo funciona el reconocimiento facial de OpenCV?

Todos los modelos de reconocimiento facial en OpenCV se derivan de la clase base abstracta FaceRecognizer, que proporciona un acceso unificado a todos los algoritmos de reconocimiento facial en OpenCV. Facilitando el trabajo a realizar, la clase FaceRecognizer posee tres algoritmos para implementar que se ajustan la necesidad:

  • Eigenfaces
  • FisherFace
  • LBPHF

Para hacer el reconocimiento facial se debe contar con los siguientes pasos:

  • Entrenamiento: Proporcionar datos de entrenamiento de los cuales el algoritmo pueda aprender.
  • Detección: Identificar los rostros de las personas aplicando cualquiera de los algoritmo mencionado anteriormente, ya sea por video en tiempo real o videos

El entrenamiento y la predicción deben hacerse en imágenes en escala de grises, usando la función cvtColor () para convertir entre los espacios de color.

¿Qué es lo quiere reconocer el algoritmo?

El algoritmo busca reconocer formas llamadas Haar-like

El algoritmo busca las combinaciones de los patrones (Edge features, Line features, center- surround features) para determinar que sea un rostro, siendo verdadero puede predecir que es una persona.

El sistema de reconocimiento posee un porcentaje alto de certeza, la cual influyen factores como la cámara utilizada, la iluminación del sitio en que es capturada la imagen.

Práctica

Entrenamiento

Reconocimiento

Ver repositorio en Github

Resultado:

Conclusión:

Como podemos observar, se logró obtener un resultado alto de certeza con un porcentaje mayor a 95% mediante varias pruebas con distinto usuarios, las pruebas fueron ejecutadas implementando el algoritmo LBPHF de la librería OpenCV .

El reconocimiento facial puede ser implementado en aplicaciones que ayuden a mejorar procesos de seguridad, pagos, citas etc.

Referencias:

Se tomó como guía para escribir el blog la documentación oficial de la pagina OpenCV.y del Git Hub del usuario futurelabmx

https://docs.opencv.org/2.4/index.html

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_objdetect/py_face_detection/py_face_detection.html

https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html?highlight=haar

¡Compartir!