Blog

Cómo utilizar el reconocimiento facial y deep learning en apps

Contenidos

Rafael Julián dirige una cadena de restaurantes para ejecutivos y viajeros de negocios. Su enfoque siempre ha sido el compromiso de alta calidad con el cliente. Para mejorar la experiencia del cliente John instaló un sistema en cada uno de sus restaurantes que saludaba a cada visitante. Ahora quiere aprovechar las últimas tecnologías y dar la bienvenida a los visitantes frecuentes por su nombre. Espera que el nuevo sistema también supere las deficiencias del existente. Por ejemplo, emite un mensaje de bienvenida cada vez que se abre la puerta del restaurante, incluso si son los empleados. Esto drena la energía del sistema rápidamente y también irrita a los clientes que están cenando.

Rafael quiere un sistema que identifique a la persona que entra por la puerta y la salude por su nombre si son habituales. El sistema no debe decir nada a los empleados cuando entran, reduciendo el ruido innecesario. Cualquier nuevo cliente puede ser recibido con el mensaje general de bienvenida.

Lo que Rafael necesita es un sistema de reconocimiento facial. La tecnología que identifica o verifica un rostro en una imagen o un video se llama reconocimiento facial. Además del escenario de ejemplo que se discute aquí, hay situaciones en las que es esencial reconocer automáticamente a las personas, ya sea en una fotografía, un vídeo o en persona. Algunos de estos casos podrían ser: 

  • Restringir el acceso a los recursos online como los servidores de archivos 
  • Coincidencia de la identificación con la cara para la verificación 
  • Identificar a una persona en una imagen o video subido 
  • Usando la seguridad biométrica para dispositivos como portátiles y teléfonos inteligentes 
  • Validación de las transacciones en línea 
  • Vigilancia masiva en espacios sensibles como aeropuertos, estadios deportivos, campus universitarios, etc. 

Face ID es una herramienta más eficaz que otros sistemas de reconocimiento biométrico como las huellas dactilares, ya que es un sistema de identificación sin contacto, que también es más relevante después de la pandemia de COVID-19. 

Como seres humanos, el reconocimiento de rostros es algo natural para nosotros. Pero pensemos en un niño que todavía está creciendo y aprendiendo a identificar a las personas. Si observamos cuidadosamente nos daremos cuenta de que los niños pequeños tienden a confundirse entre personas que tienen rasgos faciales similares como cejas gruesas o barba larga o frente amplia o labio leporino. Una máquina tiene que ser entrenada paso a paso, como un niño aprende, y esto se logra a través de tecnologías de aprendizaje profundo. Antes de entrar en cómo un sistema de reconocimiento facial puede ser incorporado en una aplicación, veamos cómo se desarrolló la tecnología.

Los primeros días del reconocimiento facial

El reconocimiento facial no es un fenómeno nuevo. Durante décadas ha sido la técnica biométrica más importante para la autenticación de la identidad, especialmente en áreas críticas como la militar, la financiera, la de seguridad pública, etc., que siempre dan prioridad a la seguridad.

Sistema de reconocimiento facial manual 

Woodrow Wilson Bledsoe, que implementó manualmente el reconocimiento facial en la década de 1960, es considerado el padre del reconocimiento facial. Desarrolló un sistema que clasificaba las fotos a través de una tableta RAND, un dispositivo gráfico de entrada de ordenador. Bledsoe registró manualmente las coordenadas de los rasgos faciales como los ojos, la nariz, la boca, la línea del pelo, etc. a partir de fotos. Estas coordenadas fueron luego trazadas y guardadas en una base de datos. Se trazaron nuevas fotografías contra la base de datos para identificar los individuos que tenían el mayor parecido numérico basado en la información dada. El reconocimiento facial se refinó aún más en 1970 por Goldstein, Harmon y Leask, pero aún así fue en su mayor parte un proceso computarizado manualmente. 

Sistema de reconocimiento facial asistido por ordenador 

La primera técnica de reconocimiento facial asistido por ordenador fue el enfoque de eigenface, en el que se utilizó el álgebra lineal para la representación de imágenes faciales de baja dimensión. Se demostró que se necesitaban menos de cien valores para codificar con precisión una imagen normalizada de un rostro. Este método se sigue utilizando hoy en día como base de muchos algoritmos de aprendizaje profundo.

Reconocimiento de rostros mediante algoritmos de deep learning 

Los algoritmos de deep learning utilizan conjuntos de datos muy grandes de rostros para entrenar a los sistemas de reconocimiento facial a detectar e identificar nuevos rostros. El mérito de los sistemas de reconocimiento facial de hoy en día se debe al desafío anual de reconocimiento visual a gran escala de ImageNet establecido en 2010. ImageNet es una gran base de datos visual desarrollada especialmente para su uso en la investigación de software de reconocimiento de objetos visuales. El punto a destacar aquí es que el reconocimiento facial es un caso especial de reconocimiento de objetos, donde sólo las caras necesitan ser reconocidas. 

Hasta la fecha, el proyecto ImageNet ha anotado a mano más de 14 millones de imágenes, de las cuales al menos un millón de imágenes tienen cajas delimitadoras proporcionadas. Veremos por qué las cajas delimitadas son importantes más adelante, cuando discutamos cómo funcionan los algoritmos de reconocimiento facial. 

Cómo las aplicaciones pueden integrar el reconocimiento facial  

La demanda de reconocimiento facial en las aplicaciones está aumentando porque es una forma eficaz de garantizar la seguridad del sistema, la seguridad de los usuarios y la participación de los usuarios. El creciente interés puede medirse por el hecho de que el mercado de reconocimiento facial, que en 2019 tenía un valor de 3.200 millones de dólares de los EE.UU., crecerá a una tasa compuesta de 16,6% y se situará en 7.000 millones de dólares de los EE.UU. en 2024.  

Este crecimiento se esperaba debido a la expansión del mercado de vigilancia, los crecientes avances tecnológicos y el aumento del despliegue gubernamental y de defensa. Se espera que la pandemia de COVID-19 impulse aún más la demanda a medida que más y más empresas adopten la transformación digital y busquen formas seguras de autentificar el acceso a los activos en línea, validar las transacciones financieras y aumentar la ciberseguridad.

Diferentes enfoques para identificar un rostro humano

  • Reconocimiento 2D – Es muy solicitado especialmente para propósitos de identificación biométrica para asegurar cualquier cosa desde un teléfono inteligente hasta una instalación militar. 
  • Reconocimiento 3D – Es inferior al reconocimiento 2D pero está ganando popularidad porque puede reconstruir imágenes 3D del sujeto. 
  • Búsqueda facial basada en colores/texturas – En este sistema, las áreas con el color o la textura típica de la piel se identifican primero y luego se localiza la cara. 
  • Reconocimiento facial en fondo controlado – Se utiliza en escenarios donde se sabe de antemano que la nueva imagen se pulsaría contra un fondo sólido. A medida que discutimos cómo funcionan los algoritmos, nos daremos cuenta de que cuanto más rico sea el fondo, mayor será el esfuerzo necesario para identificar un rostro. 
  • Búsqueda de rostros por movimiento – Esto se usa típicamente en imágenes de video donde los puntos de referencia como los ojos parpadeantes, las fosas nasales de la frente, la boca o las cejas pueden usarse para localizar el rostro. 
  • Imágenes térmicas – Las imágenes térmicas proporcionan información adicional sobre un rostro en términos de imágenes térmicas. Cuando se utilizan tanto las imágenes visuales como las térmicas, aumentan las posibilidades de obtener una coincidencia. Es especialmente útil cuando las imágenes visuales son de mala calidad debido a la mala iluminación, el envejecimiento, las diferentes poses, etc. 

El método integrado en la aplicación depende de la necesidad. 

Cómo integrar el reconocimiento facial en una aplicación nueva o existente

Para integrar el reconocimiento facial en una aplicación nueva o ya existente, se necesita: 

  • Una cámara de video 
  • Un poderoso servidor para almacenar datos  
  • Algoritmos de detección, comparación y reconocimiento 
  • Redes neuronales entrenadas con acceso a imágenes 

En la era de los teléfonos inteligentes, en la que cada persona tiene en sus manos una cámara HD de alta calidad, las empresas no tienen que preocuparse de cómo los usuarios utilizarán la aplicación de reconocimiento facial. Las cámaras de vídeo para uso comercial como en restaurantes, centros de convenciones, centros de investigación, etc. también son muy asequibles. La computación en la nube ha hecho que el acceso a servidores poderosos que pueden almacenar, procesar y servir grandes volúmenes de datos sea accesible y económico.  

Son los dos últimos componentes – algoritmos y redes neuronales entrenadas – los que necesitan ser trabajados. Así es como estos algoritmos identifican las caras.  

Detección de la cara 

El primer paso es detectar las caras presentes en la entrada proporcionada. Esta entrada podría ser en forma de imágenes o videos. Además, el sistema puede ser necesario para detectar una o más caras. La detección de rostros entra en la categoría de detección de objetos. El sistema identifica un objeto como cara y lo delimita, es decir, localiza su extensión con una caja. La detección de rostros es el paso más crítico porque si un rostro no es detectado, nunca podrá ser identificado. 

Normalización / alineación de datos 

Los rostros detectados en el paso anterior a menudo deben normalizarse para que sean coherentes con la base de datos. No es necesario que las caras detectadas estén siempre enfrentadas. Podrían ser perfiles laterales o mirar en diferentes direcciones o disparadas con poca iluminación. El sistema debe ser capaz de identificar el rostro de una persona aunque la pose, la iluminación y la expresión sean diferentes. 

Extracción de características 

El siguiente paso en el reconocimiento facial es extraer los rasgos que pueden ser usados para identificar la cara. Aquí se utilizan redes convolucionales y de autoencoder. Cada base de datos tiene un conjunto predefinido de rasgos que deben ser extraídos de cada cara detectada para que pueda ser identificada con éxito.  

En 1970, cuando Harman, Goldstein y Leask perfeccionaron los sistemas de reconocimiento facial manual, utilizaron 21 marcadores faciales como el grosor de los labios, la línea del pelo, el color del pelo, etc. para detectar automáticamente las caras. Los algoritmos modernos extraen 64 o 128 marcadores faciales, también llamados incrustaciones. Este es el paso en el que se pueden generar caras alternativas para la misma colección de rasgos para su futura referencia. 

Reconocimiento de rostros 

Este es el paso en el que se produce el reconocimiento real comparando las características identificadas con la base de datos. Hay que entender que prácticamente nunca hay una coincidencia del 100%; cada sistema tiene que definir su propio umbral por encima del cual la cara se considerará reconocida. Normalmente es el 80%. Si hay una coincidencia del 80% o más, el sistema devolverá un estado identificado. Cualquier cosa por debajo de esto, el sistema devolverá un estado «no identificado».  

Las aplicaciones pueden elegir aumentar o disminuir este umbral dependiendo de sus necesidades. Por lo general, las instalaciones militares, las instalaciones de investigación sensibles, las transacciones financieras, etc., que necesitan un nivel de seguridad muy alto pueden aumentar el umbral. Pero para todos los demás propósitos el umbral del 80% funciona bien. Cuando se disminuye el umbral puede resultar en un exceso de personas vivas y autorizadas. 

Deep learning para entrenar sistemas de reconocimiento facial 

Los algoritmos necesitan ser entrenados en cómo localizar rostros, extraer características de ellos y luego identificarlos. Los sistemas de deep learning utilizan las bases de datos existentes de millones de imágenes para entrenar a los sistemas de reconocimiento de rostros mediante algoritmos de detección, extracción y comparación.  

Estos algoritmos están diseñados como la red neuronal de un animal y se llaman Redes Neuronales Artificiales (RNA). Dos tipos de RNA – redes neuronales convolucionales y redes profundas de auto-codificación – son los algoritmos más populares para entrenar sistemas de reconocimiento facial. 

Redes neuronales convolucionales 

Es un conjunto de redes neuronales artificiales de alimentación profunda para analizar imágenes visuales. La CNN puede tener en cuenta la topología 2D de una imagen, y minimiza el efecto de los cambios de escala, giros y ángulos, sesgos y otras distorsiones en la imagen de entrada. 

Se utiliza en:

  • Aprendizaje supervisado para la clasificación, el reconocimiento y la detección de objetos
  • Aprendizaje no supervisado para la segmentación de imágenes 
  • Compresión de la imagen 

Redes profundas de auto-codificación 

Se trata de redes utilizadas en un modo de aprendizaje no supervisado para reducir la dimensionalidad de la entrada. Ayudan a optimizar el tiempo necesario para cotejar la entrada dada con la de la base de datos. Básicamente, un auto-codificador es un conjunto de codificador y decodificador. El codificador toma la entrada, la encoge en un simple vector que luego pasa por la CNN. La salida proporcionada por la CNN es entonces decodificada y proporcionada como salida. Como la red neuronal enrevesada obtiene un vector de característica comprimida, se optimizan el tiempo y los recursos necesarios para identificar la cara. 

Frameworks de reconocimiento de rostros 

El reconocimiento facial es una de las características de muchas aplicaciones que se están desarrollando. Por lo tanto, no se puede esperar que los desarrolladores comiencen el reconocimiento facial desde cero, escribiendo sus propios algoritmos y entrenándolos usando enormes conjuntos de datos. El acceso a volúmenes tan altos de imágenes en sí mismo sería un desafío. Además, la mayoría de los algoritmos son especializados, haciendo sólo 2-3 de los pasos muy bien. Para construir un sistema de reconocimiento facial, los desarrolladores necesitan usar al menos dos algoritmos para lograr el resultado deseado.  

Hay muchos frameworks de reconocimiento facial y API disponibles, que pueden utilizarse para construir los sistemas de reconocimiento facial. Algunos de los más populares en 2020 incluyen: 

  • Microsoft computer vision
  • Inferdo 
  • Kairos 
  • Face++ 
  • EyeRecognize 
  • Lambda Labs 
  • OpenCV 
  • Animetrics 

De estos, OpenCV y Face++ son libres de usar. 

Cómo Juice Studio puede ayudar a desarrollar aplicaciones con capacidades de reconocimiento facial 

Juice Studio cuenta con un equipo de consultores y desarrolladores que proporcionan integración y desarrollo de aplicaciones de reconocimiento facial de extremo a extremo según los requisitos del cliente. Siendo el reconocimiento en aplicaciones una tecnología relativamente nueva, a menudo las empresas no tienen claro lo que necesitan. Nuestros expertos entienden esas necesidades únicas para salvar la brecha entre lo que se requiere y lo que se puede lograr, y diseñan el sistema en consecuencia. Aplicamos los puntos de referencia de la industria en el desarrollo de sistemas de reconocimiento facial seguros y robustos que son fáciles de entrenar, instalar y utilizar. 

Artículos destacados

Artículo

From offline to online.

Comparte tus ideas con nosotros