Sistema Sistema Autom Auto mático de Reconocimiento de Rostros Sandra María Villa Palacios Prof. Dr. Guillermo Kemper Vásquez (asesor)
[email protected] Universidad Peruana de Ciencias Ciencias Aplicadas (UPC) - Facultad Facultad de Ingeniería Ingeniería Escuelas Escuelas Profesionales de Ingeniería Ingeniería Electrónica e Ingeniería de Telecomunicaciones Telecomunicaciones y Redes Lima - Perú Resumen .-
El presente proyecto propone un sistema computacional capaz de reconocer rostros a partir de imágenes faciales capturadas a través de una cámara web. El sistema compara paramétricamente la imagen adquirida con aquellas almacenadas en una base de datos (usuarios registrados). Para ello, se desarrolló una aplicación en MATLAB utilizando la interfaz visual Guide. En esta aplicación se pueden controlar los parámetros utilizados para el proceso de reconocimiento. El método de reconocimiento empleado es basado en el procesamiento de imágenes “eigenfaces”. Los resultados obtenidos fueron satisfactorios y son presentados al final del presente articulo.
I.- INTRODUCCIÓN En la actualidad, la seguridad es un tema que tiene gran importancia a nivel mundial. En el Perú, el aumento de la delincuencia ha hecho que muchas empresas y entidades opten por el uso de sistemas de seguridad cada vez más sofisticad sofisticados. os. Es por ello que en los últimos años se ha explotado los sistemas biométricos como métodos efectivos de seguridad. La biometría es un campo tecnológico que consiste en identificar personas a través de características físicas únicas. Desde la percepción del ser humano, la forma más sencilla de reconocer personas es a través del rostro, ya que este tiene características únicas como distancia entre los ojos, anchura de la nariz, forma de la barbilla, pómulos, forma de la boca, etc. El presente trabajo apunta al desarrollo de un sistema computacional de seguridad basado en el reconocimiento de rostros, que explota las características anteriormente mencionadas.
III.- JUSTIFICACIÓN Se desea desarrollar un sistema que sea capaz de reconocer personas a partir de sus característica característicass faciales, faciales, y compararlas con una base de datos para identificar finalmente si se trata de una persona registrada o no. Para esto, es necesario que el sistema sea lo más confiable posible. Esto significa que el margen de error debe ser mínimo, ya que de no ser así podría ocasionar problemas en una situación real. Asimismo el procesamiento debe ser computacionalmente lo mas eficiente posible. El hardware estará conformado por una computadora, una cámara WEB y una plataforma en la cual el individuo colocará su rostro para poder capturar la imagen. El sistema será desarrollado totalmente en el Perú y tendrá un costo bajo, lo cual permitirá que tenga mayor accesibilidad por parte de usuarios y empresas. Asimismo se apunta a obtener un producto final que sea de fácil operatividad por parte del usuario, visualmente atractivo y capaz de ser instalado en sistemas operativos Windows. IV. IV. - A PLICACIONES El producto final podrá ser utilizado en diversas aplicaciones relacionadas con seguridad y acceso restringido. Una de ellas está relacionada relacionada con empresas o áreas en las que se permite el ingreso a un número limitado de personas. También se puede aplicar en lugares públicos con gran concurrencia concurrencia de personas . El sistema puede ser utilizado también en aeropuertos para la identificación de requisitoriados o personas sospechosas de algún delito. V.- DESCRIPCIÓN DEL SISTEMA PROPUESTO
II.- OBJETIVOS • •
•
• •
Desarrollar un sistema de reconocimiento de rostro de gran gra n robustez y confiabilidad. confiabilidad. Estudiar, analizar analiz ar e implementar técnicas de procesamiento digital de imágenes que permitan minimizar minim izar la tasa de error del sistema. Validar el sistema empleando los métodos convencionales descritos en la literatura científica especializada. Implementar un sistema de fácil operatividad con el usuario. Desarrollar un sistema de bajo costo para ser instalado en cualquier sistema operativo Windows.
El sistema está conformado por una parte de software (programa desarrollado en MATLAB) y una parte de hardware. Esta última es conformada por una computadora conectada conectada a una cámara cámara web para poder capturar las imágenes de los rostros de diferentes personas. La cámara web estará colocada sobre un soporte, el cual a su vez tendrá una base donde la persona colocará el rostro para que la cámara pueda capturar la imagen respectiva. El diseño consiste en una caja, donde se encontrará la cámara web en un extremo y en el otro el soporte del rostro. Además se colocará una lámpara fluorescente en la parte superior para asegurar una adecuada ilu minación. minación. El esquema de la base propuesta se muestra en la Fig. 1. 1
De la imagen negativa, se obtienen los vectores Pv(n) y Ph(n), que son las proyecciones de las columnas y las filas, respectivamente (ver Fig. 3).
Fig. 1 Base para la captura de imágenes En la parte de software, se ha implementado un algoritmo que permite segmentar las imágenes capturadas para obtener únicamente la imagen del rostro. De esa forma se descarta información de otro tipo que puede ser no relevante para los objetivos del programa. Posteriormente se procede con la descomposición de las imágenes para luego aplicar la técnica de Análisis de Componentes Principales. Luego se procede a realizar el reconocimiento. A continuación se explicarán los temas involucrados para la realización del algoritmo y posteriormente los pasos que se siguieron para la implementación del programa.
Fig. 2. (a) Imagen capturada después de aplicar el filtrado de mediana. (b) Imagen recuantizada a dos bits. (c) Imagen negativa. Una vez obtenida la imagen recuantizada se obtienen las proyecciones tanto vertical como horizontal P v(x) y Ph(y) respectivamente. Luego se obtienen las derivadas P h’(x) y Pv’(y) (ver Fig. 4).
Segmentación de imágenes: Una vez que la imagen es capturada con la cámara web, se procede con el algoritmo de segmentación, el cual está basado en las derivadas de las proyecciones horizontales ( Ph (x) ) y verticales ( Pv (y) ) de la imagen. Estas proyecciones se definen de la siguiente forma : N −1
Ph (x) = ∑ I(x, y) y= 0
(1)
M −1
Pv (y) = ∑ I (x, y) x =0
(2) Fig. 3. Proyecciones de filas y columnas
donde I(x,y) es la imagen procesada de “M” filas y “N” columnas respectivamente Para este caso M=240 y N=320. La derivada de las proyecciones son obtenidas como :
Ph ' ( x) = Ph (x ) − Ph (x −1)
(3)
Pv ' (x ) = Pv (x ) − Pv ( x − 1)
(4)
Antes de la segmentación se aplica un filtrado de mediana a la imagen con el objetivo de reducir el ruido y suavizar ciertas regiones de pixeles. Luego se procede a recuantizar la imagen a dos bits, a fin de que los cambios sean más bruscos y de esta manera las derivadas se resalten mejor. En seguida, se obtiene el negativo de la imagen recuantizada para que el fondo y todo elemento no perteneciente al rostro sea oscuro y facilite la segmentación (ver Fig. 2).
Fig. 4. Derivada de las proyecciones de filas y columnas, respectivamente. 2
Para las columnas se obtiene el valor máximo, que indica la primera variación de tonalidad. Este valor se va a usar para segmentar la imagen en el eje vertical. El valor máximo de Pv’(y) puede ser expresado como: Pv’max = Pv’(nmax)
(5)
donde: Pv ’(nmax) > Pv ’(y) para todo y
mismo tipo de segmentación que en las columnas ya que no segmentaría bien. Para ello se requiere que el límite inferior del rostro vaya apoyado en una base y de esta manera descartar la parte del cuello o los hombros (Ver Fig. 1).
≠
nmax
(6)
El valor “nmax” es el índice del valor máximo del vector. De la misma forma, “nmin” es el índice del valor mínimo del vector.
De las filas, se obtiene “P h(x)”, donde x= 0, 1, …., M-1 (M es el número de filas de la imagen). Luego se calcula el valor máximo del vector “P h(x)” para segmentar la parte superior de la imagen : Ph (mmax) > Ph (x) para todo x
≠
mmax
(12)
luego se obtiene : Ph1 (x) = Ph (x = 0, 1, …, mmax/2)
(13)
Luego se procede a calcular el valor : Lp = N – nmax
(7)
donde “N” es el número de columnas de la imagen y “Lp” el valor equivalente al número de columnas posteriores al valor máximo. En seguida se procede a calcular el vector Pv1 ’(y), el cual contendrá los valores de las proyecciones posteriores al valor máximo. De manera similar, se calcula el vector Pv2 ’(y). Este vector contiene los valores de Pv1 ’(y) desde la mitad hasta el último valor, ya que en este tramo se encuentra el valor mínimo , el cual indica la segunda variación de tonalidad. Con estos valores, se procede a segmentar la imagen. El procedimiento matemático se puede expresar como : Pv1 ’(y) = Pv ’(y + nmax) n = 0, 1, …., Lp - 1
(8)
Pv2 ’(y) = Pv1 ’(Lp/2 + y) n = 0, 1,….,Lp/2 – 1
(9)
Pv2 ’min = Pv2 ’(nmin)
(10)
donde “Ph1(x)” contendrá los valores de las proyecciones desde la primera fila hasta aquella cuyo índice es la mitad del “mmax” (donde “mmax” es el índice del valor máximo de las filas). De esta manera se obtiene el rango donde se encuentra el cambio brusco que indica cambio de tonalidad (de fondo a rostro). Para que el cambio sea más evidente, se procede con el submuestreo en factor de 3 de “P h1 (m)”, y a este último vector se le calcula la derivada. Luego se procede a segmentar la imagen en las filas. El procedimiento se puede expresar como : Phd (x) = Ph1 (3x) donde x = 0, 1, …, mmax/6 Phd ’(x1) > Phd ’(x) para todo x
≠
(14) x1
(15)
donde “x1” es el índice del valor máximo de Phd ’(x).
donde : Pv2 ’(nmin) < Pv2 ’(y) para todo y
≠
nmin
(11)
Luego se forma el vector con los valores de las proyecciones (desde el índice del valor máximo hasta el índice del valor mínimo ), con lo cual se obtienen las proyecciones de la imagen segmentada con sus respectivos índices. Estos últimos son utilizados para indicar las columnas a descartar y segmentar la imagen en las columnas. Posteriormente se procede a segmentar la imagen en las filas. A diferencia de las columnas, en las filas no se utilizará la derivada de las proyecciones debido a que, como se puede observar en la figura 5, sólo hay un cambio brusco cerca de la fila 50, lo cual indica que hay cambio de tonalidad. Si se observa la figura 2c, en las primeras filas tienen valores bajos, lo cual se ve reflejado en las proyecciones; luego cambia a valores altos que corresponden al rostro. Pero en las últimas filas, donde termina el rostro, no hay cambios significativos como en el caso de las columnas, por lo que no se podría utilizar el
Fig. 5. Proyecciones de las filas (superior), proyecciones de las filas hasta la mitad del vector y las proyecciones submuestreadas en factor de 3. Como el tamaño de las imágenes segmentadas puede variar, se procede a estandarizarlo con pixeles de la imagen entera o quitándole pixeles sobrantes según sea el caso. Luego de esto, se obtiene finalmente la imagen segmentada, como se puede apreciar en la Fig. 6. 3
vectores que conforman esta matriz son los denominado vectores “eigenfaces”. Estos pueden ser combinados adecuadamente para reconstruir cualquier imagen facial del conjunto. Para describir el método, asúmase en primer lugar que se tiene un conjunto de “M” imágenes que previamente fueron segmentadas (de P filas y Q columnas) y que son convertidas a vectores “Φi ”. Con ello se construye una matriz que contiene a cada vector como columna. La matriz resultante presenta por tanto “PxQ” filas y “M” columnas: Fig. 6. Imagen segmentada Descomposición Wavelet:
Y =
En la Fig. 7 se observa la descomposición Wavelet de una imagen facial.
M
En seguida se calcula el vector promedio de la matriz:
La descomposición wavelet es una técnica que se utiliza para descomponer la imagen de entrada en cuatro subimágenes. El resultado de la descomposición esta conformado por cuatro sub-imágenes que contienen detalles principales, detalles verticales, detalles horizontales y detalles diagonales. Para el presente trabajo se descompuso la imagen dos veces, por lo cual se obtienen cuatro subimágenes cuyas dimensiones son cuatro veces menor que la imagen original; sin embargo, los detalles principales no se pierden. Para el programa, se utiliza la sub-imagen con los detalles principales y se le normaliza, a fin de que el rango de grises se encuentre entre 0 y 255.
(16)
Φ ] [Φ1,Φ2 ,.......,
ψ =
1
M
∑Φ
M
(17)
i
i =1
Luego se calcula el vector que indica la distancia de cada vector “Φi ” al vector promedio: (18)
Γ i = Φ i − ψ
Estos vectores se almacenan en una matriz “A”: A
(19)
= [Γ 1 , Γ 2 ,.......,Γ M ]
Luego se halla la matriz de covarianza para poder hallar sus autovalores y autovectores: C ({Φ i })
1
M
∑ Γ Γ = AA M
=
T
i
i
T
(20)
i =1
Como la matriz de covarianza “C” está conformada por PxQ filas y PxQ columnas, resulta ser demasiado grande, por lo que el programa demoraría excesivamente en procesar la información. Para evitar esto, se procede inicialmente a plantear la siguiente igualdad: T
A Av i
(21)
= µivi
donde “µ i ” y “vi ” son los autovalores y autovectores de A TA, de longitud (MxM). Luego se multiplica “A” por A TA: T
AA Av i
= Aµ i vi = µi Avi
(22)
donde AAT viene a ser la matriz “C”. Con este artificio se obtienen los autovalores y autovectores de la matriz “C”. Fig. 7. Imagen facial y sus respectivas subimágenes, obtenidas por descomposición wavelets 2D de profundidad 2. Análisis de Componentes Principales (ACP): El ACP es un método matemático que da origen al método de “eigenfaces”. El método consiste en la recolección de imágenes de rostros de varias personas q ue son luego combinadas y convertidas en una matriz. Los
Los autovectores de “C” se hallan de la siguiente manera: M
ui
= Avi =
∑v
ik
i =1
Γ k
(23)
Luego se toman los autovectores de los autovalores de mayor valor (por encima de un umbral), ya que contienen la mayor información respecto a las imágenes del conjunto. 4
Los autovectores escogidos se almacenan en una matriz “Uk ”, donde “k” es el número de autovectores elegidos: T
U k
= [u1 , u 2 ,......,u k ]T
(24)
Al ser multiplicada la traspuesta de la matriz “U k ”, con la matriz “A”, resulta la matriz del espacio transformado, la cual contiene los datos de las imágenes proyectadas en el nuevo espacio de dimensión “k”. Ω k = U k T A
(25)
Teniendo los vectores que representan las proyecciones de cada imagen del conjunto sobre el espacio de dimensión “k”, se procede al reconocimiento de datos, utilizando los “eigenfaces” “ Ωk ”. Cabe resaltar que mediante combinación lineal de los “eigenfaces” se puede reconstruir cualquiera de los “M” rostros del conjunto. Sin embargo está reconstrucción no es perfecta debido a que se limitó las dimensiones del espacio para mejorar la eficiencia computacional del sistema.
= U k Ω k
VI.- RESULTADOS Con estas adiciones al programa, se procedió al reconocimiento de las imágenes y después de comparar resultados se obtuvo lo siguiente: • • • •
(26)
•
• •
•
Finalmente se obtiene la imagen reconstruida:
ˆi Y
=
ˆ A
i
+ ψ
(27)
• •
Programa: •
Inicialmente el programa adquiere una imagen de rostro en escala de grises. Luego se realiza el procedimiento ACP y se obtiene el vector “eigenfaces” de la imagen adquirida. En seguida el vector es comparado con todos los vectores de las i mágenes proyectadas almacenadas. La comparación es realizada en base a la distancia euclidiana normalizada entre ellos. La distancia mínima obtenida será la que indique el usuario registrado con el cual el rostro de entrada tiene mayor semejanza. Sin embargo, esta distancia mínima puede ser muy grande, lo que indicaría que ninguno de los usuarios registrados coincide adecuadamente con el usuario de entrada. Para evitar este tipo de problemas, se procedió a establecer un umbral, a fin de colocar un límite en la distancia mínima, y rechazar usuarios que no están verdaderamente registrados. Si la distancia es menor al umbral, entonces el usuario se considera como identificado, mostrando en pantalla el nombre respectivo y su foto reconstruida.
Verdaderos aciertos: 92.26% Verdaderos Rechazos: 89.94% Falsos aciertos: 7.04 % Falsos Rechazos: 10.06%. VII.- CONCLUSIONES
•
La reconstrucción se realiza de la siguiente forma:
ˆ A
La interfaz visual de usuario del sistema propuesto es mostrada en la Fig. 8.
Se recomienda aumentar el número de imágenes de más personas en la base de datos para comprobar mejor la efectividad del programa. A mayor número de imágenes, mayor tiempo de procesamiento del programa. Por ello se recomienda utilizar un número de autovectores intermedio. Se estableció un tamaño estándar para las imágenes capturadas ya que estas son convertidas luego a vectores que se almacenan en una matriz. El algoritmo de segmentación ayuda a reducir las dimensiones de las matrices y esto hace posible que el tiempo de procesamiento del programa sea menor. Se recomienda utilizar un fondo blanco para evitar problemas de iluminación. El recorte de las imágenes ingresadas por la webcam ayuda a quitar detalles sin importancia (no faciales) e iguala en tamaño a las demás imágenes registradas. El proceso de reconocimiento devuelve como dato principal el nombre del usuario reconocido, lo cual facilita la identificación de los mismos. VIII.- REFERENCIAS BIBLIOGRÁFICAS
[1] Turk, Mathew and Pentland, Alex, “Vision and Modeling Group, the Media Laboratory. Massachusetts Institute of Technology”. [2] Pecenovic, Zoran and Crivelli, Rocco, “Signal Processing Mini-project: Face recognition using eigenimages”. [3] Bergasa, Luis Miguel, “Aplicaciones con PCA”.
El programa ofrece también la opción de modificar la dimensión del espacio y de esa forma alterar el tiempo de ejecución del mismo. Así mismo se ofrece la opción de poder registrar un nuevo usuario en cualquier momento. 5
Fig. 8. Interfaz visual del sistema propuesto
6