0% encontró este documento útil (0 votos)
16 vistas12 páginas

Reconocimiento Facial con MATLAB

Este documento describe el uso de reconocimiento facial en Matlab mediante el análisis de componentes principales (PCA). Explica cómo crear una matriz de proyección PCA entrenando el modelo con múltiples imágenes y cómo luego usar esa matriz para reconocer nuevas imágenes reduciendo su dimensionalidad a las principales componentes.

Cargado por

Paul Benitez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas12 páginas

Reconocimiento Facial con MATLAB

Este documento describe el uso de reconocimiento facial en Matlab mediante el análisis de componentes principales (PCA). Explica cómo crear una matriz de proyección PCA entrenando el modelo con múltiples imágenes y cómo luego usar esa matriz para reconocer nuevas imágenes reduciendo su dimensionalidad a las principales componentes.

Cargado por

Paul Benitez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1.

TEMA:
RECONOCIMIENTO FACIAL EN MATLAB

2. OBJETIVOS:
Objetivo general:
Realizar el reconocimiento facial usando un mdulo de inteligencia artificial
en Matlab.

Objetivos especficos:
Realizar la programacin adecuada para obtener el reconocimiento facial.
Determinar los parmetros a ser evaluados en el reconocimiento de rostros
(PCA).
Experimentar otra forma de aprendizaje prctico para el reconociendo facial
por medio de la elaboracin de un cdigo en Matlab.

3. INTRODUCCIN
El reconocimiento de rostro es un tema predominante en la ciencia de la
computacin especficamente en el rea de la Inteligencia Artificial. Para el
cerebro humano es muy sencillo aprender rostros de personas y reconocerlos,
indiferentemente del ngulo de visin que sea capaz de identificarlos.
La tarea de reconocimiento de rostro o facial se puede encontrar en lugares donde
se necesite tener un control de acceso a una cierta rea sin importar su tamao, o
en sistemas de seguridad para acceder a lugares. Estos deben desempearse a
un nivel ptimo para los usuarios, es decir que debe responder con mayor
precisin al momento de realizar el reconocimiento facial, satisfacindose as el
control de acceso.

4. MARCO TERICO
Matlab
MATLAB (Matrix Laboratory) es un programa interactivo de uso general. Es un
instrumento computacional simple, verstil y de gran poder para aplicaciones
numricas, simblicas y grficas y contiene una gran cantidad de funciones
predefinidas para aplicaciones en ciencias e ingeniera.
La interaccin se realiza mediante instrucciones (denominadas comandos), y
tambin mediante funciones y programas en un lenguaje estructurado. Los objetos
bsicos con los cuales opera MATLAB son matrices. La asignacin de memoria a
cada variable la realiza MATLAB en forma dinmica y eficiente, por lo que no son
necesarias las declaraciones de variables antes de su uso.

Caractersticas de MATLAB:
Clculo numrico rpido y con alta precisin.
Capacidad para manejo matemtico simblico.
Funciones para graficacin y visualizacin avanzada.
Programacin mediante un lenguaje de alto nivel.
Soporte para programacin estructurada y orientada a objetos.
Facilidades bsicas para diseo de interfaz grfica.
Extensa biblioteca de funciones.
Paquetes especializados para algunas ramas de ciencias e ingeniera.

Operacin:
Simple y eficiente.
Interactivo y programable.
Sistema de ayuda en lnea.
Interaccin con otros entornos.

Mdulo de inteligencia artificial Matlab


Inteligencia artificial:
Inteligencia Artificial es una de la rama de la Ciencia Informtica dedicada al
desarrollo de agentes racionales no vivos o dicho de otro como "al estudio de las
maneras en las cuales las computadoras pueden mejorar las tareas cognoscitivas,
en las cuales, actualmente, la gente es mejor." De esta manera podemos ver que
el entendimiento de algn lenguaje natural, reconocimiento de imgenes,
encontrar la mejor manera de resolver un problema de matemticas, encontrar la
ruta ptima para llegar a una objetivo especfico, etc., son parte del razonamiento
humano, y que hasta ahora el hombre ha deseado poder imitarla desarrollando la
Inteligencia Artificial.

Descripcin del mdulo de inteligencia artificial Matlab:


MATLAB dispone en la actualidad de un amplio abanico de programas de apoyo
especializados, denominados Toolboxes, que extienden significativamente el
nmero de funciones incorporadas en el programa principal. Estos Toolboxes son
mdulos de Inteligencia Artificial que cubren en la actualidad prcticamente casi
todas las reas principales en el mundo de la ingeniera y la simulacin,
destacando entre ellos los toolboxes de adquisicin y procesamiento de
imgenes y el Matlab Guide que nos permitir realizar nuestro programa en
ambiente visual.

El Toolbox de adquisicin de imgenes es una coleccin de funciones que sirven,


entre otras cosas, para adquirir imgenes de diversos dispositivos (desde frame
grabbers profesionales hasta USB webcams), para visualizar videos en vivo, para
la adquisicin de imgenes mediante triggers, para importar datos hacia el entorno
de trabajo de MATLAB, etc. En otras palabras, es la herramienta que nos permitir
realizar la aplicacin en tiempo real.

El Toolbox de Procesamiento de Imgenes proporciona a MATLAB un conjunto de


funciones que ampla las capacidades del producto para realizar desarrollo de
aplicaciones y de nuevos algoritmos en el campo del proceso y anlisis de
imgenes.
El entorno matemtico y de creacin de MATLAB es ideal para el procesado de
imgenes, ya que estas imgenes son, al fin y al cabo, matrices. Este toolbox
incorpora funciones para:
Diseo de filtros.
Mejora y retocado de imgenes.
Anlisis y estadstica de imgenes.
Operaciones morfolgicas, geomtricas y de color.
Transformaciones 2D, etc.

PCA (Principal Component Analysis)


PCA es un mtodo que transforma un nmero de variables posiblemente
correladas en un pequeo nmero de variables incorreladas llamadas
componentes principales, es decir, es un algoritmo de reduccin dimensional que
permite encontrar los vectores que mejor representan la distribucin de un grupo
de imgenes.
PCA est basado en la Transformada de Karhunen-Loeve (KLT), que consiste en
la representacin de un proceso estocstico no peridico a travs de una base de
vectores obtenidos completamente del proceso en s mismo, es decir, PCA
permite representar una imagen de una cara usando una base que se ha
conseguido a partir de muchas observaciones de diferentes caras.
El objetivo de este mtodo consiste en representar una imagen en trminos de un
sistema de coordenadas ptimo reduciendo el nmero final de componentes que
tendr la imagen. Un ejemplo de PCA lo podemos ver en la figura 1.

Figura 1. Componentes principales de un conjunto de puntos bidimensional. La primera componente ofrece una
reduccin lineal ptima de dimensin de 2D a 1D en cuanto a error cuadrtico medio se refiere.

Esta base de transformacin depende de las observaciones y se forma a partir de


los d autovalores ms significativos de la matriz de covarianza, los cuales
representan las componentes principales que son ms comunes en imgenes de
diferentes caras.
La reduccin dimensional realizada por PCA es equivalente al nmero de
autovectores que se utilicen. Por lo tanto la imagen proyectada por PCA tendr
una dimensin de valor d, como se puede ver en la figura 2.
Figura 2. Ejemplo de reduccin dimensional al aplicar PCA.

Estos autovectores representan las componentes principales que son ms


comunes en imgenes de diferentes caras, otra forma de verlo, es que son los
ejes del subespacio donde proyectaremos las imgenes de caras humanas los
cuales se corresponden con las direcciones de mxima varianza de los datos. La
matriz de transformacin, est formada por los autovectores correspondientes a
los d autovalores ms significativos. En la figura 3 se muestran los primeros 7
autovectores que derivan del uso de la base de datos. La imagen media
correspondiente a estos 7 autovectores la podemos ver en la figura 4 y en la figura
5 podemos ver las imgenes correspondientes a los 7 autovalores ms bajos.
Estos ltimos se corresponden con autovalores muy pequeos y son considerados
como ruido de manera que no se tienen en cuenta para el reconocimiento

Figura 3. Autovectores correspondientes a los 7 mayores autovalores mostrados como imgenes pxp = n (Obtenidos
de la base de datos de caras).

Figura 4. Cara media de los 7 primeros autovectores (Obtenidos de la base de datos de caras).
Figura 5. Autovectores correspondientes a los 7 menores autovalores mostrados como imgenes pxp = n (Obtenidos
de la base de datos de caras).

Otra de las cualidades de PCA, es que realiza una discriminacin entre clases, es
decir, todas las caras correspondientes a un mismo individuo estn cerca entre s,
mientras que las imgenes correspondientes a individuos diferentes estn ms
alejadas. Esta propiedad es ms destacable en las primeras componentes de las
imgenes proyectadas. En la figura 6 se muestra un ejemplo de la proyeccin de
tres imgenes de personas diferentes mostrando diferentes componentes.

Figura 6. Representacin de diferentes componentes de tres imgenes de individuos distintos proyectadas.

5. DISEO DEL CDIGO


PCA es un proceso que permite realizar una reduccin dimensional, de manera
que el anlisis se reduce a unas pocas componentes. Para ello se necesita tener
la matriz de proyeccin PCA. A continuacin se detallarn los pasos a seguir para
preparar esta matriz y el procedimiento a seguir para el reconocimiento.

Creacin de la matriz de proyeccin:


Para la creacin de la matriz de proyeccin, se entrena PCA con N imgenes (xi),
que son de diferentes personas, con diferentes gestos faciales. El procedimiento
que se realiza para calcular W (matriz de proyeccin) consta de los siguientes
pasos:
1) Calcular la media del vector:

=
=1

2) Estimar la matriz de covarianza:


= ( )( )
=1

3) Calcular los autovectores y autovalores de ST y generar W de forma que


sus columnas son los autovectores correspondientes a los autovalores ms
significativos (con mayor energa):

= (1 2 )

Reconocimiento:
Cuando se tiene una nueva imagen de test en el sistema, el procedimiento que se
realiza es el siguiente:
1) Primero se redimensionan la imagen de test al tamao que se ha utilizado
para la creacin de la matriz de proyeccin PCA (este valor est
almacenado conjuntamente con toda la informacin referente a la clase
PCA).
2) Se normaliza en media 0 y norma 1.
3) Se quita la media de la clase PCA por filas.
Una vez realizados estos tres pasos la imagen est lista para ser proyectada al
nuevo subespacio. En este procedimiento toda imagen de entrada al sistema x
(imagen facial), es proyectada al subespacio caras por el mtodo de PCA, donde
W es la matriz de proyeccin PCA, y es la imagen proyectada en el nuevo
subespacio de baja dimensionalidad y x es la imagen de entrada. Despus de
realizar esta proyeccin, el vector (imagen) n-dimensional de entrada se reducir a
un vector d-dimensional en el subespacio caras (2). Este nuevo tamao del
vector depender del nmero de componentes principales que se utilicen.

6. CDIGO DE MATLAB

function varargout = proyecto_instru(varargin)


% Inicializacion del codigo
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @proyecto_instru_OpeningFcn, ...
'gui_OutputFcn', @proyecto_instru_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% Fin del codigo de inicializacion

function proyecto_instru_OpeningFcn(hObject, eventdata, handles,


varargin)
% Elije la salida de lineas de comando predeterminadas: proyecto_instru
[Link] = hObject;
[Link]=0;

% Actualizar la estructura de controladores


guidata(hObject, handles);

% UIWAIT espera la respuesta del usuario

% Las salidas de esta funcin se devuelven a la lnea de comandos


function varargout = proyecto_instru_OutputFcn(hObject, eventdata,
handles)
% varargout Las salidas de esta funcion se devuelven a la linea de
comandos (VARARGOUT);
% hObject Manejo de la figura
% handles Estructura de identificadores y datos de usuario (GUIDATA)

% Se obtiene salida de lnea de comandos predeterminada desde la


estructura de controladores
varargout{1} = [Link];

% Ejecuta la pulsacin del botn en el pulsador 1.


function pushbutton1_Callback(hObject, eventdata, handles)
[archivo ruta]=uigetfile('*.*');

[Link]=imread(fullfile(ruta,archivo));

axes(handles.axes1);
imshow([Link])

guidata(hObject, handles);

% Ejecuta la pulsacion del boton en el pulsador.


function pushbutton2_Callback(hObject, eventdata, handles)

input='Fotos';
N=70;
normalizacion=[N N];%dimensionamiento de la foto

nombre= dir(fullfile(input,'*.jpg')); %carpeta donde se encuentra de los


archivos
num=numel(nombre);%numeor de imagenes
%representacion de las fotos en vectores

c_vect=[];%conjunto de caras

for n=1:num
filename=fullfile(input,nombre(n).name);
img=imread(filename);%foto a ser convertida en vector
imagenGris=uint8(zeros(size(img,1),size(img,2)));

for i=1:size(img,1)
for j=1:size(img,2)

imagenGris(i,j)=0.2989*img(i,j,1)+0.5870*img(i,j,2)+0.1140*img(i,j,3);
end
end
img=im2double(imagenGris); %foto a double

if n==1%inicializacion del campo vectorial


c_vect=zeros(prod(normalizacion),num);
end
img=imresize(img,normalizacion);%dimensionamiento de la imagen
c_vect(:,n)=img(:);%campo vectorial de caras
end

%calculo de la media, covarianza y el PCA


m_cara=mean(c_vect,2);%Calculo de la media
replica=repmat(m_cara,1,num);%media para cada foto

info=c_vect-replica;%calculo de la covarianza

[vector,score]=princomp(c_vect');

num_vect=17;
disp(size(vector));
vector= vector(:,1:num_vect);

feat= vector'* info; %vectores caracteristicos

%%prueba de la foto

imag_in=[Link];
imag_in=imresize(imag_in,normalizacion);%normaliza la foto

imagg2=uint8(zeros(size(imag_in,1),size(imag_in,2)));

for i=1:size(imag_in,1)
for j=1:size(imag_in,2)

imagg2(i,j)=0.2989*imag_in(i,j,1)+0.5870*imag_in(i,j,2)+0.1140*imag_in(i,
j,3);
end
end
imag_in=im2double(imagg2);%calculo de la similaridad de entrada con cada
de las fotos

feat_vec=vector'*((imag_in(:)- m_cara));
similarity_score= arrayfun(@(n)1/ (1+norm(feat(:,n)-feat_vec)),1:num);

%encuentra la foto parecida


[match_score,match_1]= max(similarity_score);

%Visualizacion de la foto semejante


foto_escog=nombre(match_1).name;
foto_exit=imread(fullfile(input,foto_escog));
axes(handles.axes2);
imshow(foto_exit);

guidata(hObject,handles);

%Menejar para empujar el boton 3


function pushbutton3_Callback(hObject, eventdata, handles)
espe=1;
imshow(espe);

axes(handles.axes2);
a=1;
imshow(a);

guidata(hObject, handles);

7. RESULTADOS
Posterior a la implementacin del cdigo en Matlab, y mediante Matlab Guide nos
permitir realizar la comparacin de manera visual, ya que se generar una
pantalla en donde se podr cargar una foto para posteriormente ser comparada
con las fotos en la base de datos, y con este se identificar el rostro de la persona.

Primera prueba:
Se utiliz una foto de una persona que no se encontraba dentro de la base de
datos.
Figura 7. Resultado de la primera prueba.

Segundo prueba:
Se utiliz una foto de una persona que se encuentra dentro de la base de datos.

Figura 8. Procesado de la foto.


Figura 9. Resulta de la segunda prueba.

8. CONCLUSIONES
Se desarroll un cdigo de reconocimiento facial utilizando la lenguaje de
programacin MATLAB con su Toolboxes, las cuales hacen la deteccin de
la cara, y la verificacin y reconocimiento de la persona.
Los parmetros principales para el reconocimiento facial son: una
iluminacin adecuada; el fondo de la foto debe ser blanco, no se debe
incluir las manos en la foto.
Las fotos se redujo solo para que aparezca la cara debido al tiempo de
respuesta del programa ya que con la foto completa se tardaba mucho.

9. RECOMENDACIONES
Previo a desarrollar alguna de las tcnicas de reconocimiento de rostros, se
recomienda estudiar y analizar cada una de las tcnicas de reconocimiento
de rostros que existen, seleccionar y aplicar la tcnica que ms ptimo sea
acuerdo a sus necesidades.
Tener conocimientos suficiente de algebra lineal y en programacin
computacional en MATLAB.
Para realizar el reconocimiento facial se recomienda tener en cuenta las
condiciones del ambiente como la iluminacin, el entorno (fondo blanco),
as como la postura y la distancia del usuario frente a la cmara.
8. BIBLIOGRAFA
[1] Xiaoguang Lu, Image analisis for FACE Recognition, Department of Computer
Science & Engineering, Michigan State University, May 2003.

[2] M. Kirby and L. Sirovich, Application of the Karhunen-Loeve procedure for the
characterization of human faces IEEE Trans. Pattern Analysis and Machine
Intelligence, vol. 12, no. 1, pp. 103108, Jan. 1990.

[3] [Link]

[4] [Link]
082401/Visi%C3%B3n%[Link]

[5] [Link]
ograias/[Link]

[6] [Link]
[Link]

[7] [Link]
[Link]

También podría gustarte