¿Cómo funciona la tecnología del reconocimiento facial?

¿Cómo funciona la tecnología del reconocimiento facial?

La introducción del smartphone en nuestras vidas ha supuesto una auténtica revolución en un montón de campos. Hace 20 años era impensable tomar fotografías con el móvil, y menos de la altísima calidad con la que la ofrecen los teléfonos de hoy día. Menos aún, imaginamos tener funciones adicionales tan extendidas como el reconocimiento de caras o de sonrisas. Fue más tarde cuando llegó esta tecnología a plataformas digitales como Facebook, que permitía el automático reconocimiento facial de una persona a través de una fotografía. Hoy forman parte de nuestro día a día.

¿Te has preguntado cómo funciona la tecnología del reconocimiento facial? En este artículo te revelamos los secretos de su proceso y una de las herramientas estándar del mercado para lograrlo: OpenCV.

¿Qué es OpenCV?

OpenCV es una biblioteca de procesamiento de imágenes de código libre desarrollada por Intel, y disponible para una variedad de lenguajes de programación (C, C++, Python, Java).

Se trata de una biblioteca que engloba tanto manipulación de imágenes a bajo nivel (píxel a píxel), como implementaciones de algoritmos de visión artificial a alto nivel (reconocimiento y seguimiento de objetos, reconstrucciones 3D, filtros de imágenes, algoritmos de Machine Learning, etc..)

Grupo de personas con circulos verdes del reconocimiento en la cara

 

Identificando objetos: los clasificadores en cascada

Para poder reconocer caras, identificar personas y otros objetos, OpenCV nos ofrece una herramienta: los clasificadores en cascada.

Un clasificador es un tipo de algoritmo de Machine Learning que permite identificar si una entrada pertenece o no a una categoría de entradas. Por ejemplo, podríamos construir un clasificador que determine el idioma en el que está escrito un texto. Para que los clasificadores funcionen, deben entrenarse con una gran cantidad de datos perteneciente a cada una de las categorías.

Existen muchos tipos de clasificadores, pero para el reconocimiento de objetos, fueron diseñados los clasificadores en cascada.

El algoritmo funciona a partir de una gran cantidad de imágenes que contienen un objeto a identificar (positivas) y otra cantidad de imágenes que no lo contienen (negativas). De esta forma el algoritmo identifica patrones en estas imágenes que le permitan identificar el objeto que buscamos. En los enlaces finales puedes profundizar en el funcionamiento del algoritmo.

¿Y por qué se llaman en cascada? Básicamente, el proceso involucra varias fases. Por lógica se sabe que la mayor parte de la fotografía no contiene el objeto que busca el algoritmo (al buscar rostros en una foto, la mayoría de la imagen puede ser la pared, los cuerpos… y solo una pequeña parte de la misma, es el rostro).

Por ello, en cada fase, el algoritmo es muy preciso en determinar si el objeto no está en la imagen. Si todas las fases se superan en una región de la imagen, se considera que el objeto está en esa zona.

Te puede interesar: El mock de las APIs y su papel en el testing de aplicaciones


Entrenando al algoritmo

Para poder reconocer objetos, hay que entrenar el algoritmo. Este proceso permite identificar los patrones que luego servirán para reconocer el objeto en cualquier imagen. Primero deberemos facilitar un gran conjunto de imágenes positivas y negativas.

Si el objeto a reconocer es muy simple y bidimensional (por ejemplo, un logotipo, un código QR, letras…) se puede usar la herramienta opencv_createsamples, que a partir de una sola imagen nos generará un gran número de variaciones de la propia imagen, rotada, con contraste distinto, etc.

En cambio, cuando el objeto es más complejo, como una cara o un objeto 3D, tendremos que facilitarle nosotros al programa una gran cantidad de muestras desde distintos ángulos para que sepa reconocerlos todos. Además, deberemos usar la herramienta opencv_annotation para indicar dónde está exactamente el objeto en las imágenes que lo contienen.

Una vez hecho esto, con la herramienta opencv_traincascade podemos iniciar el proceso de entrenamiento propiamente dicho. Este proceso es lento, pudiendo durar desde unos 30 minutos hasta varias horas, según el número de imágenes proporcionado y la potencia de nuestra máquina. Sin embargo, una vez hemos entrenado el modelo, se genera un archivo que podemos pasar a la aplicación que se encargue de reconocer el objeto, y así poder detectar de forma muy rápida si dicho objeto está o no en la imagen que le facilitemos.

Así pues, podemos integrar este tipo de modelos, ya prediseñados, en la aplicación de cámara de nuestro móvil y que sea capaz de reconocer caras, sonrisas, o lo que nosotros deseemos.

El futuro del reconocimiento facial

Muchas veces ignoramos la complejidad de las tecnologías que nos rodean. Pero detrás de nuestros smartphones, hay una gran cantidad de algoritmos y técnicas de aprendizaje automático que hacen posible la magia.

En este artículo hemos visto una técnica simple para identificar objetos, cuya ventaja es la gran velocidad a la que funciona, pero existen muchos sistemas complejos que superan esta técnica y la mejoran.

En la actualidad, el uso del reconocimiento facial se utiliza para diferentes funciones alrededor del mundo, y cada día, siguen apareciendo nuevas técnicas y mejoras a las existentes para facilitarnos la vida cotidiana. Ya se prevé que para el 2022 la cifra de inversión en tecnología de reconocimiento facial ascienda a 3.100 millones de dólares, según revela un estudio de Statista.

Aunque los gigantes tecnológicos como Apple, Facebook, Google o Amazon permanezcan en una carrera constante para incorporar el análisis de rostros en innovadoras actividades, este tipo de sistemas no solo se centran en smartphones. Por ejemplo, Apple ha presentado un sistema de reconocimiento facial para abrir el coche, según el portal especializado en vehículos Motor.es.

En España ya es posible sacar dinero del cajero sin la necesidad de introducir un PIN, incluso, es posible abrir una cuenta bancaria solo con un selfie o acceder a la zona de embarque de un aeropuerto y subir a un avión a través del reconocimiento facial biométrico. Este tipo de sistemas ya se han comenzado a imponerse dentro de los aeropuertos en Estados Unidos, India y China. De hecho, se espera que los ingresos del mercado biométrico mundial en los aeropuertos ascienda a 389 millones de dólares en 2022, según Statista.

El futuro pasa por el uso de redes neuronales, unos algoritmos que imitan el comportamiento del cerebro humano para aprender a resolver cualquier tipo de problema. También se entrenan de forma similar a los clasificadores, pero su funcionamiento interno es bastante profundo.

Estos sistemas ya se están usando para reconocimiento de objetos con mayor precisión que los clasificadores en cascada, sin embargo, requieren de mucha más potencia de procesamiento que los hace menos viables en dispositivos de baja potencia como teléfonos móviles.

¿Cómo crees que evolucionará la tecnología dentro de otros 20 años?, ¿Podremos por fin entrar en nuestras casas con la simple imagen de nuestra cara? Solo el tiempo lo dirá.

Te puede interesar: Claves para diseñar experiencia de realidad virtual más reales


Si te ha interesado este tema y quieres profundizar más:

  • Puedes encontrar más información sobre OpenCV y descargarlo en su web oficial haciendo click aquí. 
  • Encuentra una explicación más técnica de los clasificadores en cascada en la página haciendo click aquí.