Vous êtes sur la page 1sur 31

APLICACIONES DEL ALGEBRA

LINEAL
RECONOCIMIENTO DE
ROSTRO

NOCIONES DE PARTIDA
V espacio vectorial dm n .
base ortonormal de V
n

Si x pertenece a V
Si en particular

V R

x ci vi
i 1

nx1

; ci x, vi

ci x, vi xT vi

cuadrada y simetrica , luego T


diagonaliza ortogonalmente:
T PDP T
con D matriz diagonal y P matriz ortogonal
cuyas columnas son los vectores propios de T

T R nxn

Valores y Vectores propios


Sea
A R mxn
Construimos
T1 AT A (nxn)
cuadrada, simetrica y semidefinida positiva
Luego todos los valores propios de
son reales y mayores
T1
o iguales a cero y el numero de los no nulos coincideRgo
con( A)

T1

diagonaliza ortogonalmente :
T1 AT A VDV T
con columnas base ortonormal
R n de
V v1 v2 ... vn

Idem
T2 AAT (mxm)
T
T
diagonaliza ortogonalmente:
T

AA

UDU
T2
2
con columnas base ortonormalmde

U u1 u2 ... u m

Propiedades
Sea Rgo( A) r
,
T
nxn
T
mxm
A
A

R
;
AA

R
Las matrices simetricas
, 2 ,..., r
tienen los mismos valores propios no1nulos
Los vectores propios asociados
AT A a y AAT
Av 2
Av r
estan vinculados por: Av1
u1
, u2
,..., ur
1
2
r
Los vectoresu , u ,.., u
forman una base
1
2
r
T
ortonormal del espacio columna
d i1A,diluego

Ai g i de
...
d
2
ir
es el vector coordenado Ade
respecto a dicha
i
base.

Un poco de estadistica
Sea: X X 1 X 2 ... X n (mxn)
matriz de datos

,
~valor medio, correlacion
~
~ T
T
X E X ; R E XX ; C E ( X X )( X X )
covariancia

1 n
~
M X
(mx1); deX los
Mdatos
M ...
M (mxn)
i partir
Calculados
a
resultan:
n i 1
R

1
XX T
n

; C

1
~
~
( X X )( X X )T
n

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 imgenes de
rostro etiquetados con la identidad
de la persona (conjunto de
entrenamiento) y un conjunto sin
etiquetar de imgenes 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 imgenes de los rostros dentro de
todo el espacio imagen. Ellos definen el subespacio de
las imgenes de rostro: el face space, y dentro de este
subespacio, los que corresponden a nuestro conjunto
de entrenamiento.
Supongamos tener n imgenes (pxq) de rostros de
entrenamiento . Con este conjunto armaremos la
matriz de datos X, cuyas columnas sean la
1
~
~
representacion vectorial de dichas
imgenes.
C ( X X )( X X )T
Se calcula la matriz de covariancia n
~, los eigen-face formaran una
cuyos vectores propios
X X
base del espacio columna de

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 imgenes 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 A 1 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
Av
u

con
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 mltiplo)
i

IMAGENES DE LAS EIGENFACES

EIGENFACES

Base Ortonormal del face space


Para obtener la base ortonormal del
espacio de rostro generado por
Avi
u

nuestra Base de Datosi se


toman
i
efectivamente
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 mtodo 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
imgenes 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 :
Li d 2 ( g , g i ) ( g g i )( g g i ( g g i )T ( g g i )

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