La tecnología de reconocimiento facial es algo que lleva mucho tiempo siendo una realidad, aunque es ahora cuando hay un auge en el uso de algoritmos y redes neuronales.
El reconocimiento facial, aunque complejo, es ahora más accesible que nunca y tiene mucho potencial para implementarse en muchos procesos.
En cualquier caso las metodologías de reconocimiento y detección de rostros son muchas y muy distintas, por lo que tienen ventajas y desventajas para desempeñar distintas funciones. Además en la práctica muchas veces se combinan distintos métodos y algoritmos para una misma función.
- PCA (Principal Component Analysis)
- SVM (Support Vector Machines)
- Eigenfaces
- Fisherfaces
- LBPH (Local Binary Pattern Histograms)
- Haar Cascades
- ANFIS (Adaptive Neuro-Fuzzy Inference System)
- CNN (Convolutional Neural Networks)
Librerías y softwares de terceros
Tipos de algoritmos de reconocimiento facial
PCA (Principal Component Analysis)
El análisis de componentes principales (PCA) es un método estadístico que reduce un conjunto complejo de datos a sus características esenciales, llamadas componentes principales. El objetivo es aproximar la información original utilizando solo unos pocos componentes significativos.
Es un método pensado para la extracción de los detalles faciales, reduciendo los datos a los patrones principales y la relación entre características.
Versátil y útil para aligerar la carga de datos y la velocidad del proceso.
Método sencillo y accesible.
Hay una pérdida de información, que a veces puede dar lugar a malos resultados .
Hay riesgos de overfitting según la calidad del conjuntos de datos.
Support Vector Machine (SVM)
Un tipo de algoritmo supervisado y muy útil para la etapa de clasificación en modelos de reconocimiento. Su funcionamiento consiste en la construcción de un hiperplano que mejor separe los conjuntos de datos de una clase con otra.
Su uso es popular para muchos otros ámbitos de computer vision, procesamiento de lenguaje o bioinformática, entre otros.
Son bastante precisas cuando el conjunto de datos de entrenamiento es pequeño.
Son versátiles y adaptables a muchas aplicaciones distintas. Permite trabajar con conjuntos de datos lineales y no lineales.
No son efectivas para conjuntos de datos muy grandes o con ruido.
Dependen del uso paralelo de otros métodos (como PCA) para evitar el overfitting.
Eigenfaces
Considerado por muchos como la primera tecnología de reconocimiento facial que funciona, los eigenfaces son un tipo de algoritmo que se centra en el análisis de componentes principales (PCA). Estos componentes son los vectores propios de la matriz de covarianza del conjunto de imágenes de caras que forman una base de datos.
Su funcionamiento es holístico porque se basa en la correlación de estos vectores con toda la imagen facial en conjunto.
La eficiencia en espacio de almacenamiento y cálculo.
Es fácil de implementar.
Es muy sensible a cambios en iluminación, expresión facial y ángulo de vista.
El rendimiento pobre en escenarios reales no controlados.
Fisherfaces
Similar al anterior, las fisherfaces se diferencian por el uso del análisis lineal discriminante (LDA). Se especializa en la diferenciación de rostros por como se refleja la luz y las expresiones faciales. Clasifica y reduce la dimensión de las caras utilizando el método Discriminante Lineal de Fisher (FLD).
Mejor discriminación entre personas diferentes, especialmente bajo variaciones de iluminación.
Mejor rendimiento que Eigenfaces en bases de datos más complejas.
También puede sufrir si hay mucha variación en expresiones o poses.
Requiere que haya suficientes muestras por clase para funcionar bien.
Local Binary Patterns Histograms (LBPH)
Uno de los algoritmos más sencillos, pero efectivos. Etiqueta los píxeles de la imagen comparando la intensidad de cada píxel con la de sus vecinos. El resultado debe ser un número binario que represente la textura local.
Luego se genera un histograma en base a los datos de cada región de píxeles, que será lo que use como información clave para reconocer la imagen facial.
Uno de los más sencillos y accesibles.
Puede identificar características locales de la imagen (arrugas, lunares, formas características…).
Tiene ciertas limitaciones en cuanto a calidad de la imagen y variaciones de iluminación.
Haar Cascades
Este tipo de algoritmo usa filtros de Haar, usa ventanas rectangulares divididas en áreas de igual tamaño, donde hay dos posibles valores. Esto le da un gran poder discriminante a la hora de diferenciar rostros de lo que no son rostros.
El algoritmo emplea una serie de clasificadores organizados en cascada. Cada etapa de la cascada evalúa si una región puede contener el objeto de interés. Si una región no pasa una etapa, se descarta inmediatamente.
Bastante eficiente a nivel computacional.
Gran calidad en discriminación de características.
Puede tender a muchos falsos negativos.
ANFIS (Adaptive Neuro-Fuzzy Inference System)
Otra red neuronal, basada en lógica difusa. Es un estimador universal que usa la inferencia mediante un conjunto difuso de reglas con esquema SI-ENTONCES.
Los sistemas de inferencia con lógica difusa han demostrado ser bastante efectivos en la fase de clasificación.
Certeza en el reconocimiento ante imprecisiones.
Muy flexible y adaptativa, para otras aplicaciones de CV.
Pueden darse ambigüedades e interpretaciones erróneas según el entrenamiento llevado.
Alto coste computacional.
Convolutional Neural Network (CNN)
Este es un tipo de red neuronal artificial con nuevas capas, como puede ser GPT, Llama y demás IAs generativas. La convolución es una operación matemática que se basa en extraer características de conjuntos de datos en forma de matriz, como píxeles organizados en filas y columnas.
Se trata de tecnología puntera, pero accesible, Google tiene su propio modelo en código abierto, FaceNet.
Está especializado en reconocimiento de patrones y características de imágenes.
Es efectivo incluso con oclusiones de la imagen a reconocer (gafas, vello facial, cambios de iluminación…).
Tiene un alto coste computacional, lo que lo hace pesado y exigente.
Requiere grandes cantidades de datos para entrenarse.
Métodos generales de reconocimiento facial y visión artificial:
Three-Dimensional Recognition (Reconocimiento 3D)
Un método muy útil para la verificación de “prueba de vida”, es decir, en detectar deepfakes. Un sistema de reconocimiento con 3D analiza la información facial con mucho énfasis en la profundidad de campo de la imagen, por lo que usar una imagen impresa o en una pantalla no debería funcionar para engañarlo.
Por supuesto, para esto necesita de un entrenamiento basado en datos con profundidad, por ejemplo, con imágenes de la misma cara desde varios ángulos. Además de que el propio sistema debe poder escanear la cara a reconocer, mediante sensores aptos.
Skin Texture Analysis (Análisis de textura de piel)
Un método muy específico, donde además de analizar las formas y distancias de los elementos característicos del rostro, toma detalles de la piel en cuanto al color, marcas y demás puntos de interés. Es un acercamiento más complementario para ayudarse de más detalles en el reconocimiento.
Más que en sistemas de reconocimiento, el análisis de texturas de piel tiene mucho protagonismo en aplicaciones médicas o de estética. Para poder llegar a detectar este tipo de detalles es muy importante el entorno controlado, desde iluminación hasta variación de pose.
Thermal Cameras (Reconocimiento mediante imagen térmica)
Una cámara térmica permite interpretar más información facial, al medir también la profundidad y la diferencias entre regiones del rostro. Por supuesto, para conseguir esta información hace falta el hardware específico, cámaras térmicas de infrarrojos.
La principal ventaja de este método es el hecho de que no influye la calidad de la iluminación.
Librerías abiertas y softwares especializados en visión artificial
OpenCV
Open Computer Visión es la librería abierta más extensa en cuanto a visión artificial en general. En su sitio web cuentan con foros, artículos y recursos útiles para desarrollo se software de reconocimiento facial y otros muchos tipos de aplicaciones.
Tensorflow
La principal librería abierta dedicada a la creación de modelos de aprendizaje automático. Es un clásico paquete de recursos para machine learning, es decir que puede ser clave para el desarrollo de sistemas de visión artificial, pero también de modelos más amplios de redes neuronales.
DLIB
Otra especializada en algoritmos de machine learning, concretamente en C++. Es muy completo y extenso, con documentación precisa sobre cada función y herramienta específica. Esta es la librería que hemos usado en nuestro propio software de reconocimiento facial.
NeoFace de NEC
NEC es una empresa japonesa que lleva años mejorando su software de reconocimiento facial. Al parecer ha demostrado ser muy efectivo en el reconocimiento por segmentos de la imagen. aprovecha la cuantificación vectorial de aprendizaje generalizado (GLVQ en inglés), así puede reconocer un rostro incluso con mascarilla de por medio.
Face++ de Megvii
La empresa china Megvii cuenta con una amplia gama de productos de software especializado no sólo en reconocimiento facial, sino también del cuerpo completo o análisis de emociones. El algoritmo de Face se basa en estructuras gráficas locales simétricas (SLGS en inglés), un método muy potente y preciso.




