junio 18, 2021 10:00 am

Jesús

¿Recuerdas esas películas futuristas de principios de siglo donde todo se resolvía con tecnología que claramente no existía? 

O, ¿qué me dices de series como 24 o CSI, en la que siempre había una cámara convenientemente ubicada grabando el rostro de algún sujeto de interés? 

Típicamente, el Deus Ex Machina en estas series consistía en hacer zoom en la cara del individuo, mejorar la resolución de la imagen, y obtener su identidad.

¡Si tan solo fuera tan fácil!

En fin, si sabes de lo que te hablo, entonces sabes a grosso modo de qué va el reconocimiento facial: Obtener la identidad de una persona con base a una foto o video de la misma

¡Listo! Eso es todo por hoy. ¡Nos vemos!

Solo bromeo ?. 

Sigue leyendo para descubrir más sobre el reconocimiento facial, su historia y los errores comunes que la gente comete cuando habla del tema.

Al final de este artículo habrás aprendido:

  • Qué es el reconocimiento facial.
  • Cuáles son los pasos necesarios para reconocer un rostro en una imagen.
  • Cómo se distingue el reconocimiento facial de la detección de rostros.
  • Cuáles son los algoritmos más utilizados en para el reconocimiento facial,

¿Preparado? ¡Comencemos!

¿Qué es el Reconocimiento Facial?

El reconocimiento facial es el proceso de identificar a una persona con base en una imagen o serie de imágenes de su rostro.

Nota que dije identificar. Sí, no solo se trata de localizar el rostro en la imagen y exclamar “¡Ahí hay un rostro!”, sino ir un paso más allá y decir, “¡Ahí hay un rostro y se trata de Jesús Martínez!”

¿Se entiende la diferencia?

En otras palabras, el reconocimiento facial es una forma de identificación personal. Por supuesto, no es sorprendente que la mayoría de las aplicaciones de reconocimiento facial pertenezcan al mundo de los sistemas de seguridad y vigilancia… Justo como lo anticiparon esas series televisivas de los 2000s.

No obstante, no tenemos que irnos tan lejos para toparnos con aplicaciones útiles y cotidianas del reconocimiento facial. De hecho, si tienes un smartphone moderno, es posible que cuentes con la capacidad de desbloquearlo con tu rostro… En otras palabras, el celular reconoce tu cara, sabe que eres el dueño del mismo, y por ende, te deja usarlo. ?

Sin ir más lejos, mira este video donde se explica a alto nivel cómo funciona el Face ID en los iPhones:

Antes de continuar, tenemos que hablar de un error conceptual que solemos cometer cada vez que nos referimos al reconocimiento facial. Pasemos a la siguiente sección.

La Detección Facial NO es lo Mismo que el Reconocimiento Facial

Repite después de mí: El reconocimiento facial NO ES LO MISMO que la detección facial.

Con una frecuencia tristemente alta, solemos confundir, e inclusa usar como sinónimos, la detección y el reconocimiento facial; soy el primero en admitir que muchas veces he caído en esta trampa.

Sin embargo, la detección facial es un proceso mucho más simple que el reconocimiento de rostros, ya que:

La detección facial es el proceso de localizar rostros dentro de una imagen, mientras que el reconocimiento facial no solo localiza, sino que también identifica la persona asociada a cada rostro.

En otras palabras, la detección de rostros te dice dónde están las caras en una fotografía, pero no te dice de quiénes son; un reconocedor de rostros te dice dónde están las caras, y además que se trata de Jesús, José y Ana, por ejemplo.

El siguiente diagrama resumen a grandes rasgos cuál es el proceso que sigue un reconocedor de rostros (como ves, todo reconocedor facial incluye un paso de detección):

  1. 1
    En primer lugar, pasamos una imagen al detector de rostros.
  2. 2
    Obtenemos como resultado una serie de regiones de interés (ROIs) correspondiente a los rostros detectados en la imagen.
  3. 3
    Pasamos estas imágenes al reconocedor de rostros, que suele ser un simple clasificador de imágenes entrenado para asociar rostros con nombres.
  4. 4
    El resultado es el nombre o identidad de cada persona en una región de interés.

Hablemos ahora de algunos de los algoritmos más utilizados en el reconocimiento facial.

Algoritmos de Reconocimiento Facial

Aunque la historia del reconocimiento facial como área de investigación es profunda y fascinante, podemos identificar tres pilares o, más bien, puntos de inflexión en lo que a algoritmos se refiere:

  1. 1
    Eigenfaces.
  2. 2
    Patrones Binarios Locales (LBPs).
  3. 3
    Deep learning.

¡ATENTO!

A continuación daré una breve descripción de cada algoritmo, ya que le estaré dedicando un artículo completo a cada técnica en un futuro próximo.

Eigenfaces

Este algoritmo utiliza Principal Component Analysis (PCA) para hallar una representación del conjunto de rostros a identificar en un espacio de menores dimensiones (típicamente se usan 100 componentes principales).

Es necesario mencionar que necesitamos varias imágenes por persona a identificar. Así, por ejemplo, si queremos reconocer a Jesús, Juan y Pablo, idealmente deberíamos tener varias fotos de cada uno.

Posteriormente, descomponemos el conjunto de datos en una serie de eigenvalores, manteniendo los eigenvectores con los eigenvalores más altos.

Estos eigenvectores se conocen como eigenrostros o eigenfaces.

¿Cómo se realiza la identificación de rostros? Los autores del algoritmo Eigenfaces proponen utilizar un K-Nearest Neighbors, midiendo la distancia euclidiana entre los eigenfaces. No obstante, otra escogencia de clasificadores suele conducir a mejores resultados, como SVM.

Patrones Binarios Locales (LBPs)

A diferencia de Eigenfaces, LBPs se enfoca más en la extracción de features, y menos en el cálculo lineal. 

Partimos igualmente de un conjunto de datos compuesto de múltiples fotos por persona que queremos aprender a reconocer.

Luego, dividimos cada imagen en una grilla de 7x7, resultando en 49 celdas.

A cada celda se le asigna un peso o valor de manera que contribuyan más a la representación final. Por ejemplo, las celdas en las esquinas de la foto suelen transmitir menos información en términos de identificación, que las del centro de la imagen, ya que estas contienen rasgos distintivos como ojos, nariz y boca.

¿Qué hacemos con cada celda? Calculamos su histograma. Luego concatenamos los 49 histogramas para obtener un vector final. Ese será nuestro feature.

A partir de aquí se trata de un problema típico de clasificación, en el que los features o entradas del modelo son los vectores anteriormente descritos, y las etiquetas los nombres de los individuos asociados a tales vectores.

Usualmente utilizamos como clasificador un K-Nearest Neighbors, pero en vez de medir la distancia euclidiana entre vectores, optamos por chi al cuadrado, que suele funcionar mejor cuando comparamos histogramas.

Reconocimiento Facial Basado en Deep Learning

Evidentemente, el reconocimiento facial, siendo una de las subáreas más activas e importantes dentro de computer vision, también se ha visto revolucionado con la irrupción de las redes neuronales profundas en la escena.

Se han desarrollado diversas arquitecturas especializadas en el reconocimiento de rostros, algunas de ellas capaces de trabajar con muy poca data (algo raro cuando hablamos de deep learning), como las redes siamesas

Deep learning + reconocimiento facial es un tópico bastante amplio en sí mismo, así que mantente sintonizado para aprender más al respecto en próximos posts. ?

Resumen

El día de hoy aprendimos sobre el reconocimiento facial.

En particular, descubrimos que el reconocimiento facial no es lo mismo que la detección de rostros, ya que:

  1. 1
    La detección de rostros consiste simplemente en localizar uno o más caras humanas en una imagen.
  2. 2
    El reconocimiento facial va un paso más allá, no solo localizando los rostros, sino diciéndonos de qué persona se trata. En efecto, el reconocimiento facial es un mecanismo de identificación personal.

Por supuesto, todo reconocedor facial incluye un paso de detección. Más concretamente, el algoritmo (a alto nivel) de un reconocedor de rostros sigue estos pasos:

  1. 1
    En primer lugar, pasamos una imagen al detector de rostros.
  2. 2
    Obtenemos como resultado una serie de regiones de interés (ROIs) correspondiente a los rostros detectados en la imagen.
  3. 3
    Pasamos estas imágenes al reconocedor de rostros, que suele ser un simple clasificador de imágenes entrenado para asociar rostros con nombres.
  4. 4
    El resultado es el nombre o identidad de cada persona en una región de interés.

Finalmente, charlamos sobre los algoritmos de detección facial que marcaron un antes y un después en esta área, los cuales son:

  1. 1
    Eigenfaces: Usa PCA para proyectar las imágenes a un espacio de menor dimensionalidad; posteriormente calcula las eigenfaces de dicho espacio, y utiliza un clasificador para determinar la identidad asociada a cada rostro.
  2. 2
    Patrones Binarios Locales (LBPs): Crea un descriptor de cada imagen con base a la división de las mismas en celdas, de las cuales se obtiene un histograma de color. Al final se concatena cada histograma, resultando en un vector. La identificación se lleva a cabo usando un clasificador K-Nearest Neighbors.
  3. 3
    Deep learning: Se apoya en arquitecturas específicas, algunas de las cuales trabajan con poca data, como las redes siamesas.

En los artículos venideros nos pondremos manos a la obra, puesto que codificaremos cada una de las soluciones discutidas en este post.

¡Hasta pronto!

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.

Paso 2/2: Celebra tu NUEVO EMPLEO en Machine Learning ?

A %d blogueros les gusta esto: