Hoy en dia unas de las aportaciones a los sistemas de acceso a las diferentes aplicaciones y control es mediante el reconocimiento facial.El presente trabajo enfoca un análisis comparativo del uso de diferentes redes neuronales para el reconocimiento facial, este obedece a un análisis previo para el desarrollo de una aplicación sobre un control de acceso mediante esta técnica, para ello se establecieron específicamente las de Hopfield, Backpropagation y Algoritmo PCA. Todas ellas bajo las misma condiciones, sin embargo una de las condiciones que mas afectaron el resultado de este comparativo era la iluminación al momento de captar la imagen a identificar.
Palabras clave: Reconocimiento Facial, Redes Neuronales, Hopfield, Backpropagation, Algoritmo PCA
Today one of the inputs to access systems and control different applications is through facial recognition. This paper focuses on a comparative analysis of using different neural networks for face recognition; this follows a previous analysis for the development of an application for access control using this technique, for it specifically established the Hopfield, Backpropagation and PCA algorithm. All under the same conditions, however one of the conditions that most affected the results of this comparison was the lighting when the picture is taken to identify.
Keywords: facial recognition, neural networks, Hopfield, Backpropagation, PCA algorithm.
Generalidades
En la actualidad, existen diversas aplicaciones cuyo funcionamiento está basado en el reconocimiento facial, dividiéndose en tres grandes grupos [1]. El grupo más conocido por la gente, es el comercial, es decir, aplicaciones para la introducción de un usuario en redes de computadoras, seguridad electrónica, acceso a internet, cajeros automáticos, controles de acceso, teléfonos móviles, etc. Entre estas aplicaciones podemos mencionar los ejemplos de Google y Facebook.
El segundo gran grupo al que se hace referencia, es el gubernamental, cuyas aplicaciones son las vinculadas a documentos identificativos (DNI, pasaporte, permiso de conducir), Seguridad Social, control de fronteras, control de aeropuertos, etc. La aplicación más conocida y moderna, perteneciente a este segundo grupo es el ABC system, utilizado para el chequeo de pasaportes (se pone un pasaporte y se comprueba que la foto coincide con la del mismo, registrada en la base de datos
En el tercer grupo, el forense, tienen lugar investigaciones criminales, identificación de cadáveres, terrorismo, identificación de personas desaparecidas, etc.[2]
El reconocimiento facial cada día cobra un mayor auge derivado principalmente a las nuevas aplicaciones que lo incluyen como mecanismo de control de seguridad y acceso a las mismas.
Steve Rossius enfatiza en su artículo Reconocimiento de Objetos Mediante Webcam en tiempo real “sin duda alguna, uno de los campos más interesantes y revolucionarios es la robótica y su estrecha relación con la inteligencia artificial” [3]. Ya no hace falta dominar un lenguaje computacional para interactuar con los sistemas inteligentes. Los sistemas de inteligencia artificial ya son capaces de entender y procesar nuestras órdenes empleando el lenguaje natural. Igual que en los humanos, la entrada de datos más importante es la visión. Menciona también que en un sistema inteligente, normalmente se trata de una cámara compuesta por multitud de lentes y sensores específicos para cada sistema y campo de aplicación. La visión artificial engloba a cualquier proceso óptico mediante el cual un sistema inteligente es capaz de extraer información de un entorno para su interpretación mediante el uso de la computadora.
Algunos de los principales desafíos para lograr un reconocimiento facial con mayor precisión pueden ser el rechazo de usuarios no permitidos, independizar el reconocimiento de la iluminación, poder realizar el reconocimiento tanto de día como de noche y la detección de gafas de sol para que el usuario se las quite en el caso que quiera arrancar el coche[4].
Los sistemas de reconocimiento facial se basan fundamentalmente en 2 técnicas: Biometría y PCA/2DPCA (Principal Component Analysis /2 Dimensional PCA).
Sebastián Bronte Palacios de la Universidad de Alcalá nos habla en su artículo Sistema de Detección y Reconocimiento Facial de Conductores Mediante Sistemas de Visión Computacional[5]; que la Biometría se basa en calcular distancias entre partes significativas de la cara, como pueden ser la distancia entre ojos, dimensiones de la nariz, tamaño de la boca, etc.
Este cálculo de distancias puede fallar si las cámaras se descalibran o si están mal enfocadas o si el objetivo se mueve mucho obteniendo unas imágenes borrosas no aptas para un buen cálculo de distancias. Otras posibles variaciones que nos podemos encontrar a la hora de medir distancias en una cara son los gestos, con los cuales podemos modificar sustancialmente las dimensiones de la boca y de los ojos. Si queremos unas buenas medidas de distancia entre puntos característicos de la cara, no se puede confiar únicamente en una proyección 2D de la cara.
Con respecto a los sistemas basados en PCA, tienen el inconveniente de que se basan en la apariencia de las imágenes para proceder a la comparación, esto es, que influye en gran medida el gesto que tenga la cara de la persona en el instante que se proceda al reconocimiento. Este problema se soluciona enriqueciendo la base de datos con suficientes gestos de una misma persona.
En estas dos técnicas de reconocimiento facial aparece el problema de la iluminación de la escena, la cual hace que varíen los colores de ciertas zonas de la cara dependiendo de dónde esté el foco, y esta es una alinealidad que no es fácilmente eliminable.
Pamela Alejandra Pereyra de la universidad de Buenos Aires, habla en su tesis Reconocimiento Facial Mediante Imágenes Estereoscópicas Para Control de Ingreso; “Los seres humanos se reconocen entre sí por medio de los rostros”, se puede decir que se almacenan en la memoria las imágenes de las caras de gente que se conoce.
Para ello, se tienen en cuenta los rasgos característicos que permiten identificarlas. Generalmente se logra el reconocimiento aún con cambios importantes producto del paso del tiempo, el uso de accesorios y maquillaje entre otros.
Esta capacidad es excelente para reconocer caras de conocidos, aunque no es tan buena cuando se trata de caras poco familiares. El progreso computacional de las últimas décadas, permitió automatizar el reconocimiento facial modelizando los mecanismos de la percepción visual de los seres humanos con el objeto de poder emplearlo en diversos campos de aplicación, principalmente, en los casos que se requiere mejorar la seguridad a todo nivel.
Con la evolución de las tecnologías asociadas a la información, nuestra sociedad está cada día más conectada electrónicamente. Labores que tradicionalmente eran realizadas por seres humanos son, gracias a las mejoras tecnológicas, realizadas por sistemas automatizados. Dentro de la amplia gama de posibles actividades que pueden automatizarse, aquella relacionada con la capacidad para establecer la identidad de los individuos ha cobrado una gran importancia y como consecuencia directa, la biometría se ha transformado en un área emergente.
Carmen Virginia Gámez Jiménez argumenta en su artículo Diseño y desarrollo de un sistema de Reconocimiento de Caras [6] que no cualquier característica anatómica puede ser utilizada con éxito por un sistema biométrico y que para que esto sea así debe cumplir ciertas características como se mencionan a continuación: Universalidad, Unicidad, Permanencia y Cuantificación.
En principio, cualquier característica física o determinados tipos de comportamiento pueden ser utilizados como rasgos biométricos, siempre y cuando posean las propiedades mencionadas anteriormente:
En la actualidad existen tres métodos de reconocimiento facial [7]:
Luis Blanquez Pérez nos dice en su proyecto Reconocimiento Facial Basado en Puntos Característicos de la Cara en entornos no controlados [8]; que la biometría se encarga del reconocimiento automático de personas mediante sus rasgos físicos (cara, retina, iris, voz, huellas dactilares, etc.) o rasgos de conducta (forma de andar, de escribir, etc.).
Hay tres enfoques predominantes en el problema de reconocimiento facial: i) geométrico: basado en los rasgos, ii) fotométrico: basado en lo visual, y iii) la combinación de los dos enfoques anteriores[9] como se muestra en la Ilustración 1,en ella se puede apreciar los puntos que conforman el rostro humano y que son identificados en el reconocimiento facial. Conforme a que el interés en reconocimiento facial continuó, fueron desarrollados muchos algoritmos diferentes; se deben destacar tres de ellos, los cuales han sido bien estudiados en la literatura del reconocimiento facial:
Los sistemas de reconocimiento facial modernos se basan en estos algoritmos.
Ilustración 1 Conformación del Rostro Humano
Metodología
Este proyecto se baso en el modelo en espiral [10], el cual, es un modelo de procesos de software evolutivo que conjuga la naturaleza iterativa de construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial. Este modelo sigue una serie de versiones incrementales, durante las primeras iteraciones puede ser un modelo basado en prototipos y durante las últimas iteraciones se pueden llegar a producir versiones cada vez más completas del sistema dañado como se muestra en la siguiente ilustración.
Ilustración 2 Modelo Espiral y sus Fases
El modelo en espiral se divide en un número de actividades de marco de trabajo, también llamadas regiones de tareas. Generalmente, existen entre tres y seis regiones laterales:
Comunicación con el cliente. Las tareas requeridas para establecer comunicación entre el desarrollador y el cliente. Planificación. Las tareas requeridas para definir recursos, el tiempo y otra información relacionadas con el proyecto. Análisis de riesgos. Las tareas requeridas para evaluar los riegos técnicos y de gestión. Ingeniería. Las tareas requeridas para construir una o más representaciones de la aplicación. Construcción y acción. Las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario. Evaluación del cliente. Las tareas requeridas para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementada durante la etapa de instalación.
Como resultado de la fase de análisis, primera fase del proyecto se determino los Requerimientos Funcionales del Sistema de Control de Acceso mediante el Reconocimiento facial, sin embargo derivado del comportamiento de los diferentes algoritmos de reconocimiento, se determinaron como lo muestra la siguiente tabla en la cual se resumen para efectuar un análisis comparativo sobre los diferentes algoritmos el Hopfield, Backpropagation y Algoritmo PCA.
Requerimientos Funcionales Determinados para el Reconocimiento Facial | ||||
ID | Requisito | Descripción del requisito | Medio | Prioridad |
rfRF-01 | Captura fotográfica | Para realizar el reconocimiento del usuario es importante capturar una imagen del usuario. | Cámara web | Alta |
rfRF-02 | Procesado de la imagen | Esta es la parte más importante del sistema, ya que para realizar el reconocimiento es necesario procesar la extracción de características capaz de encontrar en la imagen todos aquellos elementos que pueden ser de interés para el reconocimiento y posteriormente realizar el reconocimiento. | MATLAB | Alta |
rfRF-03 | Reconocimiento Facial | En esta parte el sistema definirá si el usuario tendrá acceso o no. El proceso de reconocimiento facial se llevara a cabo utilizando el algoritmo PCA. | MATLAB | Alta |
rfRF-04 | Resultado | Si el resultado del reconocimiento fue correcto el sistema arrojara un aviso diciendo que el usuario fue reconocido y por ende tendrá acceso. | INTERFAZ EN MATLAB | Alta |
Tabla 1 Requerimientos Funcionales
El primer requerimiento funcional es la captura fotográfica, bajo este esquema se programo una función que permitiera esta captura mediante la siguiente interfaz.
Ilustración 3 Interfaz para la Captura de Imagen
Para esta interfaz se desarrollo el siguiente código, que muestra el funcionamiento para la captura de la imagen mediante una cámara web integrada al equipo de cómputo.
function encender_Callback(hObject, eventdata, handles)
global vid
global bandera
if bandera == 0
vid = videoinput('winvideo', 1,'YUY2_640x480');
vid.LoggingMode = 'memory';
FocusMode= 'auto';
src = getselectedsource(vid);
vid.ReturnedColorspace = 'RGB';
vidRes = get(vid, 'VideoResolution');
imWidth = vidRes(1);
imHeight = vidRes(2);
nBands = get(vid, 'NumberOfBands');
hImage = image( zeros(imHeight, imWidth,
nBands),'Parent',handles.webcam);
preview(vid,hImage);
bandera = 1;
elseif bandera == 1
flushdata (vid);
delete(vid);
bandera = 0;
end
La función encender_Callback mostrada anteriormente, se utiliza para encender y apagar la cámara. Las condiciones nos ayudaran a determinar cuándo encendemos la cámara o la apagamos.
La función imagen_Callback contiene el código para capturar la fotografía y a su vez se realiza la detección de rostros. Esta función solo se activa al momento de pulsar el botón capturar mediante el método callback, el siguiente código muestra dicha función.
function image_Callback(hObject, eventdata, handles)Se realiza la captura de la imagen, esta debe almacenarse en la variable cap, a la imagen tomada se le asignara un nombre, después de asignar el nombre se guarda la imagen en el disco duro en la ubicación de donde se encuentra la interfaz.Con imread se hará la lectura de la imagen capturada y se almacenara en la variable I. En la variable bbox, se guardara el resultado de la detección de rostros faceDetector (vision.CascadeObjectDetector('FrontalFaceCART');) y la variable I. después se dibujara un cuadro en la imagen capturada, y con imcrop se hace un recorte a la imagen ya que solo se necesitara el rostro de la persona.
El reconocimiento facial es el requerimiento más importante ya por medio de él se coteja la imagen para determinar su identidad y por consiguiente saber si se trata de la misma persona. Para hacer el reconocimiento facial se utilizó una red neuronal la cual se entrena con las imágenes a reconocer, para este proyecto se entrenaron con tres algoritmos para su análisis.
El siguiente código esta enfocado a una red Hopfield y determinara si el reconocimiento fue o no exitoso.
load images.matUna vez que la imagen es recortada se guarda en la variable Icrop, como ya se mencionó anteriormente; a esta imagen se convierte a blanco y negro con im2bw y se guarda en la variable imagenprueba. Esta variable imagenprueba, se trabaja en la red neuronal; al terminar el procesamiento facial indica si el reconocimiento fue exitoso.
Se hicieron Pruebas con Cinco Personas diferentes entrenando las redes neuronales con los tres algoritmos Hopfield, Backpropagation y Algoritmo PCA. Una vez entrenados se procedió a la captura de imagen y reconocimiento facial para cada uno de ellos en las tres redes.
Prueba | Resultado |
Tabla 2 Proceso de Reconocimiento Facial
En la tabla anterior se muestra el resultado del proceso descrito el cual inicia con la captura de la Imagen, posteriormente se delimita el rostro de la persona y como ultimo paso se reconoce y coteja contra la red neuronal entrenada, para que se dictamine si es correcto el reconocimiento o no.
Por último se muestran los resultados obtenidos en la evaluación de las tres técnicas empleadas para el reconocimiento facial siendo los siguiente :
Ilustración 4-Comparación de resultados de las evaluaciones.
Al Comparar los resultados de la evaluación, se puede observar cuál de los tres métodos realizados es el mejor para el reconocimiento facial. La Red Neuronal de Hopfield es el más apto para el reconocimiento facial ya que obtuvo el mayor porcentaje de efectividad con un 80%.
La primer técnica utilizada fue la implementación de la red neuronal de Hopfield, la cual se encarga de reconstruir el patrón que se le ha introducido, que en este caso fue la imagen del usuario y lo va asociando con los patrones con los que ha sido entrenada, cabe mencionar que esta red se vuelve muy estable cuando los patrones de entrenamiento son muy diferentes lo cual asegura mucho más su funcionamiento ya que si los rostros de los usuarios registrados son diferentes asegura la confiabilidad del sistemas.
La segunda técnica utilizada es el PCA que por sus siglas se puede interpretar como análisis de componentes principales la cual tiene como función analizar algunas partes fundamentales del rostro como son el color, el brillo, etc. Todas estas características pueden ser comúnmente conocidas como eigenfaces.
La tercer técnica utilizada es el Backpropagation la cual con base a las investigaciones se descubrió que es uno de los mejores para clasificar imágenes y el más usado por algunos investigadores, su principal característica es que reduce el tiempo para determinar la similitud entre los patrones establecidos, se puede reducir como consecuencia de que la red puede aprender el algoritmo correcto sin que alguien tenga que deducirlo por anticipado.
La desventaja de utilizar la técnica Backpropagation es el tiempo de entrenamiento ya que a diferencia de la red Hofield, la red Backpropagation tardo mucho más al momento de entrenar la red con los patrones de entrada.
Al aplicar estas tres técnicas se llegó a la conclusión que aunque el backpropagation es una de las mejores, no fue lo suficiente efectivo en la prueba de reconocimiento ya que el que más dio eficacia y seguridad fue el de Hopfield con un porcentaje del 80% en el reconocimiento facial, lo cual hace que ocupe el puesto número uno en este proyecto, y como segundo numero tenemos al algoritmo PCA con un porcentaje de 65% de eficacia, y como tercer puesto lo ocupa el algoritmo Backpropagation con un porcentaje de 25%.
Para cada algoritmo se realizaron las mismas pruebas, y a partir de los resultados se obtuvieron los porcentajes para cada red, a partir de estos resultados se optó por el algoritmo de Hopfield para ser implementado en este proyecto.
Es importante mencionar que se debe tener en cuenta el medio ambiente en el cual nos encontramos al momento de realizar el reconocimiento, ya que ciertos factores influyeron al momento reconocer al usuario.
[1]Incera, J. A. (2007). Nuevas Interfaces y sus Aplicaciones en las Tecnologías de Información y Comunicaciones. Reporte técnico.
[2]Binetskaya, M. (2013). Reconocimiento facial en el ambito forence. Madrid.
[3]Rossius, S. (2013). Reconocimiento de objetos mediante webcam en tiempo real. Valencia, España.
[4]Palacios, S. B. (2008). Sistema de deteccion y reconocimiento facial de conductor mediante sistemas de vision computacional. Madrid, España.
[5]Bronte, S., Bergasa, L. M., Nuevo, J., & Barea, R. Sistema de reconocimiento facial de conductores.
[6]Jiménez, C. G. (2009). Diseño y Desarrollo de un sistema de Reconocimiento de Caras. Proyecto Fin de Carrera de Ingeniera de Telecomunicaciones. Universidad Carlo III, Madrid.
[7]Chiriboga Maldonado, M. P., & Salcedo Eches, E. A. (2003). Implementacion de algoritmos para procesamiento, deteccion de bordes y segmentacion de imagenes digitales a color. Quito, Ecuador.
[8]Blázquez, L. (2013). Reconocimiento Facial Basado en Puntos Característicos de la Cara en entornos no controlados. Universidad Autónoma de Madrid.
[9]Marquez, C. S. (2015). Sistema basico de identificacion de usuario en matlab .
[10]Alfonso, M., Botía, A., Mora, F., & Trigueros, J. P. (2005). Ingeniería del software. I. Sommerville. Pearson Educación.
[a] Profesor Investigador de la Universidad Autónoma del Estado de Hidalgo - Escuela Superior Huejutla.