330 likes | 650 Views
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
E N D
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 deT
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
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.
Un poco de estadistica • Sea: matriz de datos • valor medio, correlacion , covariancia • Calculados a partir de los datos resultan:
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 facespace, 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
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 imagenesdistintas de cadauno de 40 sujetos con variacionesmenores de iluminacion, expresion del rostro, postura • Cadaimagenes de 112x92 pixels con 8 bits de niveles de gris • Se utilizaron 10 imagenes de s1 a s10 tomando de cadauna Ii=imread(‘1.pgm’)
De matrices a vectorescolumna • 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 esunacolumnapromedio (10304x1) querepresenta el rostropromedio. • Para visualizarlo, llevoestacolumna a ser nuevamenteunamatriz112x92 • MM=reshape(M,112,92)
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)..
ValoresPropiosencontrados • Los valorespropiosencontrados 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)
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.
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 *ujcon lo que se obtiene los vectores columna gi (9x1) que representa cada columna Ji de la matriz A
Reconocimiento de Rostro: segundopaso • 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: tercerpaso • 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.
Ejemplo 1 • Se tomo del archivo s7 la imagen I=imread(‘7.pgm’) • Realizado el procesoindicadoanteriormente , calculadosu vector g de coordenadasrespecto a la base de eigenfaces y lasdistanciaseuclideanasrespecto a los vectorescoordenados de los rostrosusados 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
Ejemplo 2 • Se tomo del archivo s1 la imagen I=imread(‘5.pgm’) • Realizado el procesoindicadoanteriormente , calculadosu vector g de coordenadasrespecto a la base de eigenfaces y lasdistanciaseuclideanasrespecto a los vectorescoordenados de los rostrosusados 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
Ejemplo 3 • Se tomo del archivo s20 la imagen I=imread(‘8.pgm’) • Realizado el procesoindicadoanteriormente , calculadosu vector g de coordenadasrespecto a la base de eigenfaces y lasdistanciaseuclideanasrespecto a los vectorescoordenados de los rostrosusados en la base de datos, resultaron:
ResultadosEjemplo 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 sonmuy grandes. Conun umbral razonable (ej.: 500) podemos asegurar que elrostrodelEjemplo 3 no se corresponde conningunrostro de nuestra base de datos.