El reconocimiento de rostros es algo que tenemos cotidianamente en nuestras computadoras y dispositivos “inteligentes”. Por ejemplo, las aplicaciones que toman fotos (y las cámaras digitales, que parece que desaparecerán), muchas veces muestran en recuadros los rostros de las personas que van a ser fotografiadas. Es más, Qualcomm hace un par de años mostró una app que tomaba una foto siempre y cuando el o los personajes que salían en la foto, estuviesen sonriendo.
Para poder hacer reconocimiento de rostros podemos usar algunas bibliotecas de código abiert como OpenCV (Open Computer Vision). Sin embargo, las aplicaciones en este tema parece que son reducidas y no es fácil hallarlas de manera pública. OpenFace pretende pues cambiar esto. Es una implementación de reconocimiento de rostros de código abierto, escrito en Python y Torch y basado en redes neuronales y aprendizaje profundo. En estos términos es un trabajo complejo y para que funcione mejor, sigue la filosofía de Unix de hacer programas pequeños que hagan algo, los cuales se conectan con otros programas vía la redirección o el comando “pipe”. Para ello usa una serie de componentes, cada uno basando su entrada en la salida del componente previo. Así, se tiene dlib y OpenCV, usados para la detección de rostros, alineación y transformación, y la biblioteca de aprendizaje de máquina Torch para implementar el aprendizaje profundo.. Hay además, nn4, el modelo de la red neuronal.
Un flujo de trabajo típico empieza con alimentar un conjunto de imágenes a dlib, el cual detecta los rostros en las mismas. Coloca cajas alrededor de los rostros y genera imágenes de esos rostros en áreas que son de 96×96 pixeles. Se alínea cada rostro entonces y se transforma de manera que los ojos y el labio inferior aparezcan en la misma localidad de la imagen, ya que los rostros pueden tener diferentes orientaciones. Cabe añadir que OpenFace 2.0 ha mejorado este proceso removiendo el ciclo redundante de detecciónde rostros y ahora ha logrado disminuir a la mitad el tiempo de este proceso.
Cada rostro procesado por dlib se usa como entrada para el componente nn4 de la red neuronal, el cual mapea cada imagen en una hiperesfera de 128 unidades dimensionales, lo que quiere decir que representa cada rostro en 128 bytes. Debido al proceso anterior de alineación ya en esta temprana etapa nn4, puede distinguir si dos imágenes corresponden o no al mismo sujeto a través de una medida de las distancias euclidianas entre las características de sus representaciones y así saber si dos rostros son similares.
Hay que decir que hay que entrenar a la red neuronal con un conjunto de datos y el modelo será tan bueno como el conjunto que se use para este proceso. nn4 puede ser entrenado de diversas maneras y con diferentes conjuntos de datos. El modelo actual es entrenado usando los conjuntos de FaceScrub y CASIA-webface, pero los autores están en la búsqueda de conjuntos más grandes. Aparentemente la solución será MegaFace. Finalmente, cuando termina nn4, se pueden usar técnicas de clasificación que pueden aplicarse para la tarea de reconocimiento.
El sistema parece ser muy poderoso y ponerlo accesible a todo el público ha levantado algunas críticas interesantes: ¿No se está atacando el derecho a la privacidad? ¿No se están poniendo en tela de juicio las libertades civiles? ¿Alguien tiene el derecho de reconocer rostros, por ejemplo, en un banco, y así hacer perfiles de los usuarios? Siempre que surgen este tipo de sistemas nos encontramos con dificultades que tienen que ver con la ética. Sin embargo, hay que reconocer que el mundo es peligroso por sí mismo y que hoy en día en muchos lugares hay cámaras de seguridad que graban el acontecer cotidiano. Por supuesto, no llegan a los extremos que este sistema parece tener, pero es evidente que con el tiempo tendremos sistemas de vigilancia, de reconocimiento, mucho más sofisticados que los que podemos ver actualmente.
Los autores de este sistema indican que esta tecnología da mucho poder y con éste viene mucha responsabilidad. Por ello indican que “¡Por favor, úsese responsablemente!”. Y aclaran que no apoyan el uso de este proyecto en aplicaciones que violen la privacidad y la seguridad. Debiese usarse para los usuarios con discapacidades visuales, por ejemplo, y para entender el mundo alrededor, indican.
Referencias: