APLICACIONES DEL ALGEBRA LINEAL
RECONOCIMIENTO DE ROSTRO
NOCIONES DE PARTIDA
• V espacio vectorial dm n .
base ortonormal de V
n
x
Si x pertenece a V
Si en particular
•
cv
i
i
;
ci  x , vi
i 1
V  R
nx 1
ci  x , vi  x vi
T
nxn
cuadrada y simetrica , luego T diagonaliza
TR
ortogonalmente: T  PDP T
con D matriz diagonal y P matriz ortogonal cuyas columnas
son los vectores propios de T
Valores y Vectores propios
mxn
• Sea
A R
T
• Construimos
T1  A A ( nxn )
cuadrada, simetrica y semidefinida positiva
Luego todos los valores propios de T1 son reales y mayores o
iguales a cero y el numero de los no nulos coincide con Rgo ( A )
T
T1 diagonaliza ortogonalmente :
T1  A A  VDV
V  v1 v 2 ... v n  con columnas base ortonormal de
T
R
( mxm )
• Idem T 2  AA
T
T
T

AA

UDU
T 2 diagonaliza ortogonalmente:
2
U  u1 u 2 ... u m  con columnas base ortonormal de
n
T
R
m
Propiedades
• Sea Rgo ( A )  r ,
T
nxn
T
mxm
A
A

R
;
AA

R
• Las matrices simetricas
tienen los mismos valores propios no nulos  1 ,  2 ,...,  r
• Los vectores propios asociados a A T A y AA T
estan vinculados por: u 1  Av 1 , u 2  Av 2 ,..., u r  Av r
1
2
r
Los vectores u 1 , u 2 ,.., u r forman una base ortonormal del
T
espacio columna de A, luego Ai  g i  d i1 d i 2 ... d ir 
es el vector coordenado de A i respecto a dicha base.
Un poco de estadistica
• Sea: X   X 1 X 2 ... X n  ( mxn ) matriz de datos
•
valor medio, correlacion ,
covariancia
R  E XX
~
X  E  X ;
T
;

~
~ T
C  E ( X  X )( X  X )
• Calculados a partir de los datos resultan:
M 
1
n
X

n
( mx 1);
i
~
X  M
M
...
M

( mxn )
i 1
R 
1
n
XX
T
;
C 
1
n
~
~ T
( X  X )( X  X )
matrices mxm

Matriz de Covariancia
• En la matriz de covariancia se resumen la
variabilidad de los datos y la informacion
relativa a las relaciones lineales entre las
variables.
• La matriz de covariancia es cuadrada,
simetrica y semidefinida positiva por lo tanto
diagonaliza ortogonalmente.
PROBLEMA PLANTEADO
• Dado un conjunto de imágenes de rostro
etiquetados con la identidad de la persona
(conjunto de entrenamiento) y un conjunto sin
etiquetar de imágenes de rostros del mismo
grupo de personas (conjunto test) , identificar
cada persona de este ultimo grupo.
Solucion
• La idea es encontrar los vectores que mejor representen a las
imágenes de los rostros dentro de todo el espacio imagen.
Ellos definen el subespacio de las imágenes de rostro: el face
space, y dentro de este subespacio, los que corresponden a
nuestro conjunto de entrenamiento.
• Supongamos tener n imágenes (pxq) de rostros de
entrenamiento . Con este conjunto armaremos la matriz de
datos X, cuyas columnas sean la representacion vectorial de
dichas imágenes.
1
~
~ T
C

(
X

X
)(
X

X
)
• Se calcula la matriz de covariancia
n
cuyos vectores propios , los eigen-face formaran una base del
~
espacio columna de X  X
• Cada rostro del conjunto de entrenamiento viene
representado por un vector de coordenadas respecto a dicha
base.
• Para identificar un rostro no incluido en el conjunto de
entrenamiento, se procede:
• 1) dada la nueva imagen de rostro, se calcula el vector
coordenado respecto a la base de eigenfaces
• 2) se clasifica su vector coordenado de acuerdo a su menor
distancia a los respectivos vectores de coordenadas del
conjunto de entrenamiento.
Base de DATOS
• ORL: Olivetti Research Laboratory Cambridge –UK
• 10 imagenes distintas de cada uno de 40
sujetos con variaciones menores de
iluminacion, expresion del rostro, postura
• Cada imagen es de 112x92 pixels con 8 bits de
niveles de gris
• Se utilizaron 10 imagenes de s1 a s10
tomando de cada una Ii=imread(‘1.pgm’)
BASE DE DATOS USANDO ORL
base de datos
De matrices a vectores columna
• Se transforman las imágenes Ii (112x92) en vectores
columna
IIi =Ii (:) (10304x1)
• Se arma la matriz X=[II1 II2 ….. II10] . Las columnas
son clase uint8.
• Para mejor operar la llevo a clase double:
A1=im2double(X)
• Se calcula el valor medio de las columnas
M=mean(A1, 2)
• Se resta a cada columna de A1 el valor medio M:
J1=A1 (:,1)-M;….. J10=A1(:,10)-M
y se arma la matriz A=[J1 J2 ….J10]
ROSTRO PROMEDIO
• M es una columna promedio (10304x1) que
representa el rostro promedio.
• Para visualizarlo, llevo esta columna a ser
nuevamente una matriz 112x92
•
MM=reshape(M,112,92)
Rostro Promedio
AUTOVALORES
• A los fines de trabajar con los autovalores , se
arma la matriz T=ATA (10x10) y se calcula
[V,D]=eig(T)
• Los valores propios son los elementos de la
diagonal principal de D (matriz diagonal) a los
cuales se los ordena de mayor a menor .
• A la vista de la matriz D resulta: c1=D(10,10) ,
c2=D(9,9)……y de igual forma a los vectores
propios: v1=V(:,10); v2=V(:,9)..
Valores Propios encontrados
•
•
•
Los valores propios encontrados son
[V,D]=eig(T);
>> D
•
D=
•
•
•
•
•
•
•
•
•
•
0.0000
0
0
0
0
0
0
0
0
0
0 90.8927
0
0
0
0
0
0
0
0
0
0 113.0817
0
0
0
0
0
0
0
0
0
0 118.7217
0
0
0
0
0
0
0
0
0
0 161.7505
0
0
0
0
0
0
0
0
0
0 180.1657
0
0
0
0
0
0
0
0
0
0 228.2964
0
0
0
0
0
0
0
0
0
0 303.0239
0
0
0
0
0
0
0
0
0
0 363.4151
0
0
0
0
0
0
0
0
0
0 456.3304
EIGENFACES
• Para encontrar las eigenfaces se toman los
Av
vectores
u 
con   

• Como solo tenemos 9 autovalores no nulos, se
toman 9 vectores propios.
• A estos vectores columna las volvemos
matrices 112x92 . (Debido a que aparecen
muy oscuras tomamos un múltiplo)
i
i
i
i
i
IMAGENES DE LAS EIGENFACES
EIGENFACES
Base Ortonormal del face space
• Para obtener la base ortonormal del espacio
de rostro generado por nuestra Base de Datos
Av
u

se toman efectivamente
i
i
i
• De esta forma se obtiene la base del espacio
de caras UR=(u1, u2,….,u9) base ortonormal
del espacio columnas de A.
Reconocimiento de Rostro: primer paso
• Para usar este algoritmo en el reconocimiento
de rostro, a cada vector Ji (columnas de la
matriz A) le calculamos su vector coordenado
respecto a la base UR: gi =[d1, d2 ,….,d9]T con
dj =JiT *uj con lo que se obtiene los vectores
columna gi (9x1) que representa cada
columna Ji de la matriz A
Reconocimiento de Rostro: segundo paso
• A los fines de usar el método para
reconocimiento de rostro, tomamos otra
imagen de la base ORL . En particular, de las
clases utilizadas para armar nuestra base de
datos pero con imágenes distintas a las usadas
para armar la matriz A. Se la lleva a ser matriz
columna y luego a la clase double. Se le resta
el valor medio M y se calcula su vector
coordenado respecto a la base UR.
Reconocimiento de Rostro: tercer paso
• Para reconocer la imagen nueva , se calculan
las distancias entre los vectores coordenados
g y cada gi :
L i  d ( g , g i )  ( g  g i )( g  g i  ( g  g i ) ( g  g i )
2
T
• La menor distancia por debajo de un umbral,
permite individualizar el rostro.
Ejemplo 1
• Se tomo del archivo s7 la imagen
I=imread(‘7.pgm’)
• Realizado el proceso indicado anteriormente ,
calculado su vector g de coordenadas respecto
a la base de eigenfaces y las distancias
euclideanas respecto a los vectores
coordenados de los rostros usados en la base
de datos, resultaron:
Resultados del Ejemplo 1
• 294.9595
• 297.7571
• 304.4939
• 330.2959
• 424.1840
• 322.3384
• 23.8455 corresponde al rostro 7
• 342.5990
• 304.4939
IMAGENES EJEMPLO 1
Ejemplo 2
• Se tomo del archivo s1 la imagen
I=imread(‘5.pgm’)
• Realizado el proceso indicado anteriormente ,
calculado su vector g de coordenadas respecto
a la base de eigenfaces y las distancias
euclideanas respecto a los vectores
coordenados de los rostros usados en la base
de datos, resultaron:
Resultados del Ejemplo 2
• 138.6051
• 203.0688
• 304.2247
• 392.7719
• 276.5140
• 404.3301
• 360.2931
• 513.6230
• 476.9250
corresponde al rostro 1
IMAGENES EJEMPLO 2
Ejemplo 3
• Se tomo del archivo s20 la imagen
I=imread(‘8.pgm’)
• Realizado el proceso indicado anteriormente ,
calculado su vector g de coordenadas respecto
a la base de eigenfaces y las distancias
euclideanas respecto a los vectores
coordenados de los rostros usados en la base
de datos, resultaron:
Resultados Ejemplo 3
• LH =
( 1.0e+005 )*
•
0.3859
•
0.5568
•
1.4624
•
0.3441
•
0.4907
•
0.2667
•
0.2525
•
0.2460
•
0.3308
• Se observa que todos los valores de distancia son muy grandes. Con un
umbral razonable (ej.: 500) podemos asegurar que el rostro del Ejemplo 3
no se corresponde con ningun rostro de nuestra base de datos.
IMAGEN EJEMPLO 3
Descargar

APLICACIONES DEL ALGEBRA LINEAL