Introducción
Este documento complementa al vídeo A2C22B1V07, “Usando el reconocimiento facial”.
VÍDEO
Vídeo que continúa avanzado en los algoritmos usados en el reconocimiento facial, introducción con herramientas como PimEyes.
Un algoritmo de reconocimiento facial es un conjunto de instrucciones y procesos que se utilizan para identificar y verificar la identidad de una persona a través de sus rasgos faciales. Estos algoritmos utilizan tecnologías de visión por computadora y aprendizaje automático para analizar y comparar características faciales específicas, como la forma de la mandíbula, la distancia entre los ojos, la nariz y la boca, y los patrones de las arrugas y líneas del rostro.
Los algoritmos de reconocimiento facial se utilizan en una amplia variedad de aplicaciones, como la seguridad de edificios, el control de acceso a dispositivos móviles, la identificación de sospechosos en cámaras de vigilancia y la mejora de la experiencia del usuario en aplicaciones de fotografía y vídeo. Sin embargo, también han sido objeto de controversia debido a preocupaciones sobre la privacidad y la discriminación, especialmente cuando se utilizan en aplicaciones de empleo de la ley o vigilancia gubernamental.

Figura 1. Utilizando el reconocimiento facial.
¿Cómo funcionan los algoritmos de reconocimiento facial?
Los algoritmos de reconocimiento facial utilizan técnicas de visión por computadora y aprendizaje automático para analizar y comparar características faciales únicas y, a continuación, identificar a una persona. A continuación, se detalla el proceso general de cómo funcionan estos algoritmos:
1 | Adquisición de imágenes: el proceso comienza con la adquisición de imágenes faciales. Esto se puede hacer mediante el uso de cámaras digitales o dispositivos de escaneo 3D.
2 | Detección de rostros: el siguiente paso es la detección de rostros, en el que el algoritmo identifica la ubicación y el tamaño de los rostros presentes en la imagen. Esta detección se puede realizar mediante la detección de bordes o la detección de características.
3 | Extracción de características: una vez que se ha detectado el rostro, el algoritmo extrae características faciales específicas, como la distancia entre los ojos, la nariz y la boca, la forma de la mandíbula y los patrones de las arrugas y líneas del rostro. Estas características se pueden utilizar para identificar a una persona de manera única.
4 | Comparación de características: después de extraer las características faciales, el algoritmo las compara con las características almacenadas en una base de datos. Esta base de datos puede contener información como fotografías, huellas dactilares, registros de identificación y otros datos personales.
5 | Coincidencia y verificación de identidad: finalmente, el algoritmo compara las características faciales extraídas con las características almacenadas en la base de datos y determina si hay una coincidencia. Si se encuentra una coincidencia, se verifica la identidad de la persona.
Tipos de algoritmos de reconocimiento facial
En general, hay dos tipos principales de algoritmos de reconocimiento facial: los basados en características y los basados en aprendizaje profundo. Los algoritmos basados en características se centran en medidas específicas de la cara, como la distancia entre los ojos y la anchura de la nariz, para identificar a una persona. Estos algoritmos se han utilizado durante mucho tiempo en aplicaciones de seguridad y son relativamente fáciles de implementar y utilizar.
Sin embargo, los algoritmos basados en características tienen algunas limitaciones importantes. En particular, pueden ser engañados por cambios menores en la apariencia de una persona, como el uso de gafas o un cambio en el peinado. Además, pueden ser menos precisos para identificar a personas de diferentes razas o etnias, ya que las características faciales pueden variar entre diferentes grupos.
En contraste, los algoritmos de reconocimiento facial basados en aprendizaje profundo utilizan redes neuronales artificiales para identificar patrones más complejos en las imágenes faciales. Estos algoritmos se entrenan en grandes conjuntos de datos de imágenes faciales etiquetadas para aprender a reconocer patrones sutiles que pueden indicar la identidad de una persona. A medida que se les presentan más datos, estos algoritmos pueden volverse más precisos y efectivos para identificar a personas en una variedad de situaciones.
Profundización en los principales algoritmos de reconocimiento facial
A continuación, profundizaremos en algunos de los algoritmos más utilizados en el reconocimiento facial.
Algoritmo Eigenfaces
El algoritmo Eigenfaces es un método popular de reconocimiento facial que se basa en el análisis de componentes principales (PCA, por sus siglas en inglés) para la identificación de patrones en imágenes faciales. Fue desarrollado en la década de 1990 por Matthew Turk y Alex Pentland del Instituto de Tecnología de Massachusetts (MIT).
El algoritmo Eigenfaces funciona de la siguiente manera:
1 | Preprocesamiento: las imágenes faciales se convierten a escala de grises y se alinean para asegurarse de que los ojos, la nariz y la boca estén en la misma posición en todas las imágenes.
2 | Construcción del conjunto de entrenamiento: se toman varias imágenes faciales de un sujeto y se convierten en un conjunto de entrenamiento. Las imágenes del conjunto de entrenamiento se utilizan para crear un modelo de reconocimiento facial.
3 | Análisis de componentes principales: se utiliza el análisis de componentes principales (PCA) para extraer los componentes más importantes de las imágenes faciales del conjunto de entrenamiento. PCA se utiliza para reducir la dimensionalidad del conjunto de entrenamiento, lo que facilita el cálculo de las similitudes entre las imágenes.
4 | Construcción de los “Eigenfaces”: los componentes principales extraídos se llaman “Eigenfaces”. Estos son patrones de imagen que representan las variaciones más significativas en las imágenes faciales del conjunto de entrenamiento. Cada Eigenface es una combinación lineal de las imágenes del conjunto de entrenamiento.
5 | Identificación: para identificar a un sujeto desconocido, se toma su imagen facial y se proyecta en el espacio de Eigenfaces utilizando la misma transformación PCA que se utilizó para el conjunto de entrenamiento. Luego se compara la proyección con las proyecciones de las imágenes del conjunto de entrenamiento utilizando una medida de distancia, como la distancia euclidiana. La imagen del conjunto de entrenamiento con la proyección más cercana a la proyección de la imagen desconocida se considera la mejor coincidencia.
6 | Verificación: para verificar la identidad de un sujeto, se compara su imagen facial con una imagen de referencia conocida. Se calcula la distancia entre las dos imágenes utilizando una medida de distancia, como la distancia euclidiana. Si la distancia es menor que un umbral predefinido, se considera una coincidencia positiva y se verifica la identidad del sujeto.
El algoritmo Eigenfaces tiene varias ventajas, como la simplicidad y la rapidez de procesamiento. Sin embargo, también tiene limitaciones, como la sensibilidad a las condiciones de iluminación y la necesidad de un conjunto de entrenamiento grande y representativo. Además, el algoritmo no tiene en cuenta la información semántica del rostro, lo que significa que no puede reconocer la expresión o la identidad emocional de un sujeto.
Algoritmo Fisherfaces
El algoritmo Fisherfaces es una técnica de reconocimiento facial basada en el análisis discriminante lineal (LDA, por sus siglas en inglés). Fue desarrollado por Peter N. Belhumeur, João P. Hespanha y David J. Kriegman en la Universidad de California en San Diego.
El algoritmo Fisherfaces funciona de la siguiente manera:
1 | Preprocesamiento: las imágenes faciales se convierten a escala de grises y se alinean para asegurarse de que los ojos, la nariz y la boca estén en la misma posición en todas las imágenes.
2 | Construcción del conjunto de entrenamiento: se toman varias imágenes faciales de un sujeto y se convierten en un conjunto de entrenamiento. Las imágenes del conjunto de entrenamiento se utilizan para crear un modelo de reconocimiento facial.
3 | Análisis discriminante lineal: se utiliza el análisis discriminante lineal (LDA) para extraer los componentes más importantes de las imágenes faciales del conjunto de entrenamiento. LDA se utiliza para encontrar una proyección de las imágenes faciales que maximice la separación entre las clases de imágenes. En otras palabras, LDA busca maximizar la relación entre la varianza entre las clases y la varianza dentro de las clases.
4 | Construcción de los “Fisherfaces”: los componentes discriminantes extraídos se llaman “Fisherfaces”. Estos son patrones de imagen que representan las variaciones más significativas en las imágenes faciales del conjunto de entrenamiento que permiten separar las clases de imágenes. Cada Fisherface es una combinación lineal de las imágenes del conjunto de entrenamiento.
5 | Identificación: para identificar a un sujeto desconocido, se toma su imagen facial y se proyecta en el espacio de Fisherfaces utilizando la misma transformación LDA que se utilizó para el conjunto de entrenamiento. Luego se compara la proyección con las proyecciones de las imágenes del conjunto de entrenamiento utilizando una medida de distancia, como la distancia euclidiana. La imagen del conjunto de entrenamiento con la proyección más cercana a la proyección de la imagen desconocida se considera la mejor coincidencia.
6 | Verificación: para verificar la identidad de un sujeto, se compara su imagen facial con una imagen de referencia conocida. Se calcula la distancia entre las dos imágenes utilizando una medida de distancia, como la distancia euclidiana. Si la distancia es menor que un umbral predefinido, se considera una coincidencia positiva y se verifica la identidad del sujeto.
El algoritmo Fisherfaces tiene varias ventajas sobre el algoritmo Eigenfaces, como una mayor capacidad para separar las clases de imágenes y una mayor robustez a las variaciones de iluminación. Sin embargo, también tiene limitaciones similares, como la necesidad de un conjunto de entrenamiento grande y representativo. Además, el algoritmo no tiene en cuenta la información semántica del rostro, lo que significa que no puede reconocer la expresión o la identidad emocional de un sujeto.
Algoritmo de Patrones Binarios Locales
El algoritmo de Patrones Binarios Locales (LBP, por sus siglas en inglés) es una técnica de reconocimiento facial que se utiliza para extraer características de la imagen facial. Fue desarrollado por Timo Ahonen, Abdenour Hadid y Matti Pietikainen en la Universidad de Oulu en Finlandia.
El algoritmo LBP funciona de la siguiente manera:
1 | División de la imagen: la imagen facial se divide en pequeñas regiones llamadas “ventanas”. Cada ventana tiene un tamaño fijo y se superpone ligeramente con las ventanas adyacentes para asegurarse de que no se pierda información.
2 | Cálculo de los patrones binarios locales: para cada píxel en cada ventana, se comparan sus valores de intensidad con los valores de intensidad de los píxeles circundantes en un patrón de 3x3. Se asigna un valor binario a cada comparación: 1 si el valor del píxel circundante es mayor o igual que el valor del píxel central, y 0 en caso contrario. Los valores binarios se concatenan para formar un patrón binario local de 8 bits.
3 | Histograma de patrones binarios locales: se construye un histograma de los patrones binarios locales para cada ventana. El histograma cuenta cuántas veces aparece cada patrón binario local en la ventana.
4 | Concatenación de histogramas: los histogramas de todas las ventanas se concatenan para formar un vector de características. Este vector de características representa la imagen facial y se utiliza para entrenar un modelo de reconocimiento facial.
5 | Identificación: para identificar a un sujeto desconocido, se toma su imagen facial y se divide en ventanas. Se calcula un vector de características para cada ventana utilizando el mismo proceso de LBP. Los vectores de características se concatenan para formar un vector de características de la imagen desconocida. Luego se compara el vector de características de la imagen desconocida con los vectores de características de las imágenes del conjunto de entrenamiento utilizando una medida de distancia, como la distancia euclidiana. La imagen del conjunto de entrenamiento con el vector de características más cercano al vector de características de la imagen desconocida se considera la mejor coincidencia.
6 | Verificación: para verificar la identidad de un sujeto, se compara su imagen facial con una imagen de referencia conocida. Se calcula el vector de características de la imagen de referencia conocida utilizando el mismo proceso de LBP. Luego se calcula la distancia entre el vector de características de la imagen de referencia conocida y el vector de características de la imagen desconocida utilizando una medida de distancia, como la distancia euclidiana. Si la distancia es menor que un umbral predefinido, se considera una coincidencia positiva y se verifica la identidad del sujeto.
El algoritmo LBP tiene varias ventajas, como una rápida extracción de características, una buena tolerancia a la variación de iluminación y la capacidad de capturar características locales de la imagen facial. Sin embargo, también tiene limitaciones, como la falta de capacidad para capturar información global de la imagen y la necesidad de un conjunto de entrenamiento grande y representativo. Además, el algoritmo no tiene en cuenta la información semántica del rostro, lo que significa que no puede reconocer la expresión o la identidad emocional de un sujeto.
Algoritmo Deep Learning
El algoritmo de Deep Learning es una técnica de aprendizaje automático que ha demostrado ser muy efectiva en el reconocimiento facial. Se basa en redes neuronales artificiales, que son capaces de aprender a partir de grandes conjuntos de datos.
El proceso de entrenamiento de una red neuronal profunda para el reconocimiento facial consiste en los siguientes pasos:
1 | Adquisición de datos: se recopilan grandes conjuntos de datos de imágenes faciales etiquetadas. Estas imágenes pueden ser de personas en diferentes poses, iluminaciones, edades, géneros y etnias.
2 | Preprocesamiento de datos: las imágenes se redimensionan y se ajustan para que tengan un tamaño uniforme y se preprocesan para reducir el ruido y mejorar la calidad de la imagen. Además, se pueden realizar técnicas de aumento de datos para aumentar la cantidad de datos de entrenamiento.
3 | Creación de una arquitectura de red: se diseña una arquitectura de red neuronal profunda que tenga varias capas y que sea capaz de aprender a partir de las imágenes de entrenamiento. La arquitectura de la red se puede personalizar para el problema específico de reconocimiento facial.
4 | Entrenamiento de la red: se entrena la red neuronal profunda con las imágenes de entrenamiento. Durante el entrenamiento, la red ajusta los pesos de las conexiones entre las neuronas para minimizar la diferencia entre las etiquetas verdaderas y las predicciones de la red.
5 | Validación de la red: se utiliza un conjunto de validación de imágenes para evaluar la precisión de la red neuronal profunda. La red se ajusta para maximizar la precisión en el conjunto de validación.
6 | Evaluación de la red: finalmente, se prueba la precisión de la red en un conjunto de pruebas independiente. Si la precisión es satisfactoria, la red se puede utilizar para el reconocimiento facial en nuevos conjuntos de imágenes.
El algoritmo de Deep Learning tiene varias ventajas, como la capacidad de aprender automáticamente a partir de los datos, la capacidad de manejar grandes conjuntos de datos y la capacidad de adaptarse a diferentes problemas de reconocimiento facial. Además, el algoritmo puede capturar tanto información global como local de la imagen facial.
Sin embargo, el algoritmo de Deep Learning también tiene algunas limitaciones, como la necesidad de grandes cantidades de datos de entrenamiento, el tiempo y recursos computacionales necesarios para entrenar la red y la falta de transparencia en el proceso de toma de decisiones de la red neuronal. Además, la red puede ser sensible a las variaciones en la iluminación y la oclusión de la cara.
Algoritmos para el análisis de la textura de la piel
Los algoritmos para el análisis de la textura de la piel son una técnica de reconocimiento facial que se basa en las características de la piel de la cara de una persona. Estos algoritmos pueden ser utilizados para identificar a una persona a partir de una imagen facial.
Existen diferentes técnicas de análisis de la textura de la piel, pero en general se basan en la extracción de características de la imagen de la cara y en la comparación de estas características con las de otras imágenes de referencia.
A continuación, se describen algunas de las técnicas más comunes:
1 | Análisis de texturas de Gabor: este algoritmo se basa en la descomposición de una imagen en diferentes frecuencias y orientaciones utilizando filtros de Gabor. Cada filtro detecta una característica diferente de la textura de la piel. Estas características se utilizan para construir un vector de características que se compara con los vectores de características de las imágenes de referencia.
2 | Análisis de texturas locales binarias (LBP): este algoritmo se basa en la detección de patrones locales en la textura de la piel. Se utilizan ventanas deslizantes para analizar la imagen de la cara y se detectan patrones de píxeles con un cierto nivel de uniformidad. Estos patrones se utilizan para construir un vector de características que se compara con los vectores de características de las imágenes de referencia.
3 | Análisis de texturas de co-ocurrencia de la imagen (GLCM): este algoritmo se basa en la detección de patrones de textura en la imagen de la cara. Se utilizan matrices de co ocurrencia para medir la relación entre los píxeles de la imagen en diferentes direcciones y distancias. Estas matrices se utilizan para construir un vector de características que se compara con los vectores de características de las imágenes de referencia.
4 | Análisis de texturas de escala invariante (SIFT): este algoritmo se basa en la detección de características locales en la imagen de la cara. Se utilizan puntos de interés para detectar características invariantes a la escala, la rotación y la iluminación. Estas características se utilizan para construir un vector de características que se compara con los vectores de características de las imágenes de referencia.
Los algoritmos de análisis de la textura de la piel tienen algunas ventajas, como la capacidad de manejar diferentes iluminaciones y poses de la cara y la capacidad de capturar información detallada de la textura de la piel. Sin embargo, estos algoritmos también tienen algunas limitaciones, como la sensibilidad a los cambios en la textura de la piel debido a factores como el envejecimiento y las enfermedades de la piel. Además, la precisión de estos algoritmos puede verse afectada por la calidad de la imagen y la cantidad de datos de entrenamiento disponibles.
Herramientas para el uso del reconocimiento facial
Hay varias herramientas web disponibles para el uso del reconocimiento facial. A continuación, se describen algunas de las herramientas más comunes:
1 | Amazon Rekognition: es un servicio de AWS (Amazon Web Services) que utiliza algoritmos de aprendizaje profundo para identificar y analizar imágenes y videos. Amazon Rekognition ofrece funciones de reconocimiento facial, detección de emociones y análisis de contenido visual.
2 | Microsoft Azure Face API: es una herramienta de reconocimiento facial basada en la nube que utiliza técnicas de aprendizaje profundo para detectar y analizar rostros en imágenes y videos. La API de Face de Microsoft Azure permite la detección de emociones, la verificación de identidad y la búsqueda de similitudes faciales.
3 | Google Cloud Vision API: es una herramienta de análisis de imágenes que utiliza técnicas de aprendizaje automático para analizar y etiquetar imágenes. La API de Vision de Google Cloud también ofrece funciones de detección de rostros y reconocimiento facial.
4 | Face API de Kairos: es una herramienta de reconocimiento facial que utiliza algoritmos de aprendizaje profundo para identificar y verificar la identidad de las personas. La API de Face de Kairos ofrece funciones de detección de emociones, detección de edad y género, y búsqueda de similitudes faciales.
Es importante tener en cuenta que el uso de estas herramientas debe ser cuidadoso y respetar la privacidad y los derechos de las personas. Se recomienda leer cuidadosamente los términos y condiciones de uso antes de utilizar cualquier herramienta de reconocimiento facial.
Herramienta: Amazon Rekognition
El funcionamiento básico de Amazon Rekognition es el siguiente:
1 | Se carga una imagen o video en el servicio de Amazon Rekognition.
2 | El servicio detecta los objetos, las escenas y los rostros en la imagen o el vídeo mediante técnicas de visión por computadora.
3 | Para los rostros detectados, el servicio extrae características faciales únicas, como la distancia entre los ojos, la nariz y la boca, la forma de la mandíbula y los patrones de las arrugas y líneas del rostro.
4 | El servicio compara estas características faciales con las características almacenadas en una base de datos para buscar coincidencias. Si se encuentra una coincidencia, el servicio devuelve información sobre la persona identificada.
5 | El servicio también proporciona información adicional, como la edad y el género de la persona identificada, así como información sobre las emociones que se pueden detectar en la imagen o el vídeo.
Además de la detección y el reconocimiento facial, Amazon Rekognition también ofrece funciones para detectar y analizar escenas, objetos, texto y contenido inapropiado. Estas características hacen que Amazon Rekognition sea una herramienta útil para aplicaciones como el análisis de medios sociales, la detección de fraudes y la seguridad.
Herramienta: Microsoft Azure Face API
La API de Face de Microsoft Azure proporciona funciones de detección de emociones, verificación de identidad y búsqueda de similitudes faciales. El funcionamiento básico de Microsoft Azure Face API es el siguiente:
1 | Se carga una imagen o video en la API de Face de Microsoft Azure.
2 | La API detecta los rostros en la imagen o el vídeo mediante técnicas de visión por computadora.
3 | La API extrae características faciales únicas, como la forma de la mandíbula, la distancia entre los ojos y la nariz y los patrones de las arrugas y líneas del rostro.
4 | La API compara estas características faciales con las características almacenadas en una base de datos para buscar coincidencias. Si se encuentra una coincidencia, la API devuelve información sobre la persona identificada.
5 | La API también proporciona información adicional, como la edad y el género de la persona identificada, así como información sobre las emociones que se pueden detectar en la imagen o el vídeo.
Además de la detección y el reconocimiento facial, la API de Face de Microsoft Azure también ofrece funciones para detectar y analizar escenas, objetos y texto en imágenes. Estas características hacen que la API de Face de Microsoft Azure sea una herramienta útil para aplicaciones como la seguridad, la detección de fraudes y la personalización de experiencias de usuario.
Herramienta: Google Cloud Vision API
La API proporciona funciones para la detección de objetos, la detección de caras, la detección de etiquetas y la detección de contenido explícito.
El funcionamiento básico de Google Cloud Vision API es el siguiente:
1 | Se carga una imagen o video en la API de Google Cloud Vision.
2 | La API de Cloud Vision analiza la imagen o el vídeo para detectar objetos, caras, etiquetas y contenido explícito mediante técnicas de visión por computadora.
3 | Para las caras detectadas, la API extrae características faciales únicas, como la distancia entre los ojos, la nariz y la boca, la forma de la mandíbula y los patrones de las arrugas y líneas del rostro.
4 | La API también compara estas características faciales con las características almacenadas en una base de datos para buscar coincidencias. Si se encuentra una coincidencia, la API devuelve información sobre la persona identificada.
5 | La API de Cloud Vision también proporciona información adicional, como la ubicación de los objetos en la imagen, las etiquetas que describen el contenido y la probabilidad de que el contenido sea explícito o inapropiado.
Además de la detección y el reconocimiento facial, la API de Cloud Vision también ofrece funciones para la detección de logos, la detección de texto y la detección de etiquetas de productos. Estas características hacen que la API de Cloud Vision sea una herramienta muy utilizada para la búsqueda de imágenes y el análisis de contenido en redes sociales.
Saber más
Puede aprender más sobre reconocimiento facial siguiendo las lecciones del curso denominado “Object and face recognition”. Es un programa introductorio del MIT (Massachusetts Institute of Technology) sobre los métodos más utilizados en el reconocimiento facial. Todo el material está disponible online de modo libre y gratuito.
All materials are available online for free but are copyrighted and licensed under the MIT license. If you are an instructor and would like to use any materials from this program (slides, labs, code), you must add the following reference to each slide: ©Pawan Sinha ocw.mit.edu
Conclusiones
En conclusión, el reconocimiento facial es una tecnología que permite la identificación de personas a través de la captura y análisis de sus características faciales únicas. Esta tecnología ha ganado importancia en diversas aplicaciones, como la seguridad, el comercio, la atención médica y la identificación personal, entre otras.
Entre las principales ventajas del reconocimiento facial se encuentran su rapidez, precisión y automatización, lo que puede ayudar a mejorar la eficiencia en los procesos de identificación y reducir el fraude y la delincuencia. Además, su capacidad para reconocer patrones faciales únicos de cada individuo puede ser muy útil en la identificación de personas desaparecidas o en la resolución de casos criminales.
Otra ventaja importante del reconocimiento facial es su capacidad para integrarse con otras tecnologías, como la inteligencia artificial, lo que puede mejorar su precisión y eficiencia. Esto puede ser especialmente útil en aplicaciones médicas, donde el reconocimiento facial puede ayudar en la detección temprana de enfermedades y trastornos.
A pesar de sus ventajas, el reconocimiento facial también presenta importantes desafíos éticos y de privacidad, como se ha mencionado anteriormente. Por lo tanto, es importante abordar estos problemas para garantizar que la tecnología se utilice de manera responsable y equitativa.
En cuanto a las perspectivas futuras, se espera que el reconocimiento facial continúe evolucionando y mejorando, con una mayor integración con otras tecnologías como la realidad aumentada y la realidad virtual. También se espera que se desarrollen sistemas de reconocimiento facial más precisos y confiables, que sean capaces de identificar a las personas en diferentes condiciones de iluminación y ángulos de visión. Además, se espera que se desarrollen tecnologías que aborden los problemas éticos y de privacidad asociados con el reconocimiento facial, como la transparencia y la responsabilidad en su uso.
En resumen, el reconocimiento facial es una tecnología con importantes ventajas y desafíos éticos. Es importante abordar estos desafíos y garantizar que la tecnología se utilice de manera responsable y equitativa. Se espera que, en el futuro, el reconocimiento facial continúe evolucionando y mejorando, con una mayor integración con otras tecnologías y el desarrollo de sistemas más precisos y confiables.