Upload
adoria-claros
View
42
Download
0
Embed Size (px)
Citation preview
APLICACIONES DEL ALGEBRA LINEAL
RECONOCIMIENTO DE ROSTRO
NOCIONES DE PARTIDA
• V espacio vectorial dm n . base ortonormal de V
Si x pertenece a V
Si en particular • cuadrada y simetrica , luego T diagonaliza
ortogonalmente: con D matriz diagonal y P matriz ortogonal cuyas columnas
son los vectores propios de T
ii
n
iii vxcvcx ,;
1
iT
ii vxvxc ,
nxnRT TPDPT
1nxRV
Valores y Vectores propios• Sea• Construimos cuadrada, simetrica y semidefinida positiva Luego todos los valores propios de son reales y mayores o
iguales a cero y el numero de los no nulos coincide con
diagonaliza ortogonalmente : con columnas base ortonormal de
• Idem diagonaliza ortogonalmente: con columnas base ortonormal de
mxnRA)(1 nxnAAT T
1T)(ARgo
1T TT VDVAAT 1 nvvvV ...21
nR
)(2 mxmAAT T2T
TT UDUAAT 2 muuuU ...21 mR
Propiedades
• Sea , • Las matrices simetricas tienen los mismos valores propios no nulos
• Los vectores propios asociados a estan vinculados por:
Los vectores forman una base ortonormal del espacio columna de A, luego
es el vector coordenado de respecto a dicha base.
rARgo )(
r ,...,, 21
mxmTnxnT RAARAA ;
TT AAyAA
r
rr
Avu
Avu
Avu
,...,,
2
22
1
11
ruuu ,..,, 21
Tiriiii dddgA ...21
iA
Un poco de estadistica
• Sea: matriz de datos• valor medio, correlacion , covariancia
• Calculados a partir de los datos resultan:
)(...21 mxnXXXX n
TT XXXXECXXERXEX )~
)(~
(;;~
)(...~
);1(1
1
mxnMMMXmxXn
Mn
ii
mxmmatricesXXXXn
CXXn
R TT )~
)(~
(1
;1
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.
• Se calcula la matriz de covariancia cuyos vectores propios , los eigen-face formaran una base del
espacio columna de
TXXXXn
C )~
)(~
(1
XX~
• 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.fig
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 vectores
• 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)
iii
ii conAv
u
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 se toman efectivamente
• De esta forma se obtiene la base del espacio de caras UR=(u1, u2,….,u9) base ortonormal del espacio columnas de A.
i
ii
Avu
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 =Ji
T *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 :
• La menor distancia por debajo de un umbral, permite individualizar el rostro.
)()()((),(2 iT
iiiii ggggggggggdL
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 corresponde al rostro 1 • 203.0688• 304.2247• 392.7719• 276.5140• 404.3301• 360.2931• 513.6230• 476.9250
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