You are on page 1of 23

Sistemas de control difuso y sistemas de control Robusto

Gua N 2

UNIVERSIDAD TECNOLGICA DEL PER


FACULTAD DE INGENIERA DE SISTEMAS Y ELECTRNICA
CARRERA DE INGENIERA MECATRNICA

Sistemas de control difuso y sistemas de control robusto

Gua N6
Sistema robusto de
reconocimiento de imgenes
con redes neuronales

1
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

NDICE GENERAL

1. Objetivos _________________________________________________________ 4
2. Descripcin terica _________________________________________________ 4
3. Ejemplo del reconocimiento de patrones con RN para 10 imagenes____________ 5
4. Pixeleando 10 fotos a un mismo tamao de 50x45 (EJEMPLO) _______________ 6
4.1. Consideraciones: ____________________________________________________ 6
4.2. Cdigo en MatLab: __________________________________________________ 6
4.3. Resultados: ________________________________________________________ 9
5. Entrenamiento de la red Neuronal (EJEMPLO): __________________________ 10
5.1. Consideraciones: ___________________________________________________ 10
5.2. Resultados del entrenamiento: _______________________________________ 13
5.2..1. La red se entren satisfactoriamente: ____________________________________ 13

6. Validacin de la Red Neuronal con fotos distintas a las usadas para entrenar
(EJEMPLO). __________________________________________________________ 14
6.1. Validacin con imagen distinta para la persona 1 _________________________ 17
6.2. Validacin con imagen distinta para la persona 2 _________________________ 18
6.3. Validacin con imagen distinta para la persona 5 _________________________ 19
6.4. Casos en el que empieza a fallar la red neuronal. _________________________ 20
6.5. Resultados: Nmero de pixeles distintos que soporta la RN1. _______________ 20
6.6. Resumen de resultados con ms pruebas variando nm y el nmero de imgenes
de misma persona: ________________________________________________________ 20
7. DESCRIPCIN DEL TRABAJO #6 _______________________________________ 21
8. Referencias ______________________________________________________ 23

2
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

NDICE DE FIGURAS

Figura 1 Tres tomas de la persona 4, con diferentes gestos o expresiones._________________________ 6


Figura 2 Proceso genrico de pixeleado para cada imagen por persona. ____________________________ 9
Figura 3 Representacin del proceso de ingreso de datos en forma de vector a la red neuronal. _________ 9
Figura 4 Cuatro etapas de procesamiento de la imagen para pixelearla. __________________________ 10
Figura 5 Imgenes de 10 personas que se usan para entrenar a la red neuronal. __________________ 10
Figura 6 Entrenamiento para la imagen de la persona 1, correcto. _______________________________ 13
Figura 7 Proceso de reduccin de la funcin de costo J respecto al nmero de iteraciones. _____________ 13
Figura 8 Imgenes de las diez personas pexeleadas para validar el entrenamiento de la red neuronal. ___ 14
Figura 9 Estructura de funcionamiento de la red neuronal. _____________________________________ 14
Figura 10 Validacin con imagen distinta para la persona 1. ____________________________________ 17
Figura 11 Validacin con imagen distinta para la persona 2. ____________________________________ 18
Figura 12 Validacin con imagen distinta para la persona 5. ____________________________________ 19
Figura 13 Alteracin de la imagen ara encontrar el nmero de pixeles distintos que soporta el algoritmo. 20

3
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

Gua N2
Sistema robusto de reconocimiento de

imgenes con redes neuronales

1. Objetivos
Entrenar la Red Neuronal para que identifique el rostro de 12 personas.
Validar la red neuronal entrenada, con fotos diferentes a las que se usaron para
entrenar a la Red Neuronal.

2. Descripcin terica
Los sistemas de visin robustos representan el nivel de complejidad ms alto en
el procesamiento de imgenes. Se adaptan a los requisitos especficos de cada
aplicacin. Las soluciones de sistemas de procesamiento de imgenes son adecuadas
para casi todos los sectores de la industria, desde la de automocin hasta la
farmacutica.
Los sistemas robustos de procesamiento de imgenes en la industria tienen diversas
aplicaciones en numerosos mercados tales como:

La industria del automvil y proveedores de la industria del automvil


Los proveedores de sistemas de automatizacin, fabricantes de robots y empresas
de servicios informticos
Los proveedores de ingeniera de maquinaria y equipos de manipulacin
La industria farmacutica, tecnologa mdica e industria alimentaria
La industria elctrica, electrnica, las fundiciones y entre muchas otras.

Para el desarrollo de sistemas robusto de reconocimiento de patrones en imgenes, se


presenta un esquema que muestra el funcionamiento completo de trabajo.
En primer lugar (1) se parte de unas imgenes capturadas. Estas imgenes pueden ser
de cualquier tipo que se pretenda analizar, en nuestro caso utilizaremos las imgenes
de rostros de personas tomadas de una base de datos de rostros (database face).
Dichas imgenes son almacenadas por el administrador del sistema en una carpeta
del servidor (existen bases de datos de imgenes de rostros almacenadas en la Web).
Tras un anlisis del tipo de imagen a procesar, se seleccionan las imgenes ms
apropiadas;(2) La Red Neuronal debe ser entrenada con las salidas pertenecientes al
cdigo asignado a las imgenes (ejm: para la imagen de la personas 1 se asigna la
salida 1000000000) de forma que se obtenga el mnimo error posible (se emplea el
algoritmo de entrenamiento de la RN). Una vez entrenada, los datos ofrecidos por la
red son los pesos de sus neuronas, bias, nmero de capas ocultas, neuronas de
entrada y de salida; junto con informacin adicional de cada imagen (3). Por ltimo
luego del entrenamiento de la red neuronal se obtendr los pesos ( , ,) y las
caractersticas de la RN (nmero de pesos en la capa oculta, nmero de entradas y
salidas, etc)(4).[1], [2].

4
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

3. Ejemplo del reconocimiento de patrones con RN para 10 imagenes


En el siguiente ejemplo se entrena una red neuronal (RN) con 10 imgenes (variando el
nmero de neuronas en la capa intermedia, el ratio de aprendizaje y otros parmetros de
la RN). Una vez entrenada se validad con imgenes diferentes a las del entrenamiento.
Para el proceso de entrenamiento no se trabaja con las imgenes del tamao originas.
Primero se pixelean a un tamao inferior para una mayor rapidez de procesamiento en la
RN (calculo computacional) y a partir de esas imgenes se trabaja como se muestra a
continuacin:
Imagen de entrada original: 200x180
Imagen pixeleada entrada: 50x45

Datos bsicos de la red neuronal:


Entradas a la Neural Network (red neuronal)
Neurona Salida
Persona Entrada (imagen 50x45 en vector 1x2250)
Bias
1 2 . . . 2249 2250 2251
1 * * . . . * * 1 10000000
2 * * . . . * * 1 01000000
3 * * . . . * * 1 00100000
. . . . . .
. . . . . . . . .
. . . . . .
9 * * . . . * * 1 00000010
10 * * . . . * * 1 00000001

5
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

4. Pixeleando 10 fotos a un mismo tamao de 50x45 (EJEMPLO)


4.1. Consideraciones:
Se emplea la base de datos de imgenes (Face Databases1) tomadas por: Computer
Vision Research Projects, de la cual se usan 3 por persona de 10 sujetos; una para
entrenar y las otras dos para validar, cabe recalcar que cada imagen es tomada con un
gesto diferente como las presentadas en la figura 1.

Imagen entrenamiento Imagen de validacin Imagen de validacin

Figura 1 Tres tomas de la persona 4, con diferentes gestos o expresiones.


4.2. Cdigo en MatLab:
Para reducir todas las imgenes a un mismo tamao de 50x45 se emple el siguiente
algoritmo que recurre al empleo de la funcin:
[I2,Rostro_pix]=imagen_binaria(I1).

A esta funcin de le carga en I1 la imagen en un tamao AxB y retorna la imagen


pixeleada a 50x45.
Script:
%% Principal programa que pasa las 10 imgenes a formato pixeleado
empleando la funcin.
%FUNCIN: [I2,Rostro_pix]=imagen_binaria(I1)
clc
clear all
close all
%% Leyendo las imagenes de las 10 personas
%empleando funcin para binarizar imagen de persona 01.
I01_normal=imread('persona_01_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I01_normal);
Igr_01=Igr; Ico_01=Ico; I_01=Rostro_pix; I_01re=I_re;
%empleando funcin para binarizar imagen de persona 02.
I02_normal=imread('persona_02_a.jpg','jpg')
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I02_normal);
Igr_02=Igr; Ico_02=Ico; I_02=Rostro_pix; I_02re=I_re;
%empleando funcin para binarizar imagen de persona 03.
I03_normal=imread('persona_03_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I03_normal);
Igr_03=Igr; Ico_03=Ico; I_03=Rostro_pix; I_03re=I_re;

1 Referencia: http://homepages.inf.ed.ac.uk/rbf/CVonline/Imagedbase.htm#face
6
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

%empleando funcin para binarizar imagen de persona 04.


I04_normal=imread('persona_04_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I04_normal);
Igr_04=Igr; Ico_04=Ico; I_04=Rostro_pix; I_04re=I_re;
%empleando funcin para binarizar imagen de persona 05.
I05_normal=imread('persona_05_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I05_normal);
Igr_05=Igr; Ico_05=Ico; I_05=Rostro_pix; I_05re=I_re;
%empleando funcin para binarizar imagen de persona 06.
I06_normal=imread('persona_06_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I06_normal);
Igr_06=Igr; Ico_06=Ico; I_06=Rostro_pix; I_06re=I_re;
%empleando funcin para binarizar imagen de persona 07.
I07_normal=imread('persona_07_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I07_normal);
Igr_07=Igr; Ico_07=Ico; I_07=Rostro_pix; I_07re=I_re;
%empleando funcin para binarizar imagen de persona 08.
I08_normal=imread('persona_08_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I08_normal);
Igr_08=Igr; Ico_08=Ico; I_08=Rostro_pix; I_08re=I_re;
%empleando funcin para binarizar imagen de persona 09.
I09_normal=imread('persona_09_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I09_normal);
Igr_09=Igr; Ico_09=Ico; I_09=Rostro_pix; I_09re=I_re;
%empleando funcin para binarizar imagen de persona 06.
I10_normal=imread('persona_10_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I10_normal);
Igr_10=Igr; Ico_10=Ico; I_10=Rostro_pix; I_10re=I_re;

%% Mostrando en un cuadro el proceso de la binarizacin de las 10


imagenes:
figure(1)
subplot(4,10,1), imshow(I01_normal); title('Persona 1');
subplot(4,10,11), imshow(uint8(Igr_01)); title('Escala de grises');
subplot(4,10,21),imshow(uint8(I_01)); title('Imagen 50x45');
subplot(4,10,31),imshow(I_01re); title('Imagen pixel.');

subplot(4,10,2), imshow(I02_normal); title('Persona 2');


subplot(4,10,12), imshow(uint8(Igr_02)); title('Escala de grises');
subplot(4,10,22),imshow(uint8(I_02)); title('Imagen 50x45');
subplot(4,10,32),imshow(I_02re); title('Imagen pixel.');

subplot(4,10,3), imshow(I03_normal); title('Persona 3');


subplot(4,10,13), imshow(uint8(Igr_03)); title('Escala de grises');
subplot(4,10,23),imshow(uint8(I_03)); title('Imagen 50x45');
subplot(4,10,33),imshow(I_03re); title('Imagen pixel.');

subplot(4,10,4), imshow(I04_normal); title('Persona 4');


subplot(4,10,14), imshow(uint8(Igr_04)); title('Escala de grises');
subplot(4,10,24),imshow(uint8(I_04)); title('Imagen 50x45');
subplot(4,10,34),imshow(I_04re); title('Imagen pixel.');

subplot(4,10,5), imshow(I05_normal); title('Persona 5');


subplot(4,10,15), imshow(uint8(Igr_05)); title('Escala de grises');
subplot(4,10,25),imshow(uint8(I_05)); title('Imagen 50x45');
subplot(4,10,35),imshow(I_05re); title('Imagen pixel.');

7
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

subplot(4,10,6), imshow(I06_normal); title('Persona 6');


subplot(4,10,16), imshow(uint8(Igr_06)); title('Escala de grises');
subplot(4,10,26),imshow(uint8(I_06)); title('Imagen 50x45');
subplot(4,10,36),imshow(I_06re); title('Imagen pixel.');

subplot(4,10,7), imshow(I07_normal); title('Persona 7');


subplot(4,10,17), imshow(uint8(Igr_07)); title('Escala de grises');
subplot(4,10,27),imshow(uint8(I_07)); title('Imagen 50x45');
subplot(4,10,37),imshow(I_07re); title('Imagen pixel.');

subplot(4,10,8), imshow(I08_normal); title('Persona 8');


subplot(4,10,18), imshow(uint8(Igr_08)); title('Escala de grises');
subplot(4,10,28),imshow(uint8(I_08)); title('Imagen 50x45');
subplot(4,10,38),imshow(I_08re); title('Imagen pixel.');

subplot(4,10,9), imshow(I09_normal); title('Persona 9');


subplot(4,10,19), imshow(uint8(Igr_09)); title('Escala de grises');
subplot(4,10,29),imshow(uint8(I_09)); title('Imagen 50x45');
subplot(4,10,39),imshow(I_09re); title('Imagen pixel.');

subplot(4,10,10), imshow(I10_normal); title('Persona 10');


subplot(4,10,20), imshow(uint8(Igr_10)); title('Escala de grises');
subplot(4,10,30),imshow(uint8(I_10)); title('Imagen 50x45');
subplot(4,10,40),imshow(I_10re); title('Imagen pixel.');

save Imagenes_50x45 I_01re I_02re I_03re I_04re I_05re I_06re I_07re


I_08re I_09re I_10re

Funcin que pixelea a 50x45:


function [I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I1)
%imshow(uint8(I1));
I2 = I1;
Iz=I2(:,:,2)
[nf nc] = size(Iz);
%figure(2);
%imshow(uint8(Iz));
%imhist(Iz)
Igr=Iz
Ico=Iz

% Pixelamiento en cuadrados de 30x30


Izz = Iz;
ii = 1;
for i = 1:4:200
jj = 1;
for j = 1:4:180
im = Iz(i:i+3,j:j+3);
im = sum(sum(im))/16;
Inueva30(ii,jj) = round(im);
jj = jj + 1;
end
ii = ii + 1;
end
Rostro_pix=Inueva30

%Umbralizacion de la imagen con umbral(threshold)=30


Y2=Inueva30

8
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

W1=size(Y2);
I_x=W1(1,1);
I_y=W1(1,2);
for y=1:I_y %recorre filas
for x=1:I_x %recorre columnas
if Y2(x,y)>30
Y3(x,y)=255;
else
Y3(x,y)=0;
end
end
end

I_re=Y3
end

4.3. Resultados:
En la imagen 2 se puede apreciar las 4 etapas por las cuales se pasa la imagen para que
finalmente se pixelea a 50x45:
Procesamiento de la imagen (empleando el programa: image_to_bin) :
1) Pixelear todas las imgenes aun mismo tamao.
2) Pasar a escala de grises.
3) Bajar la resolucin de la imagen a un tamao de 50x45 en escala de grises.
4) Pixelear la imagen a blanco y negro.

Figura 2 Proceso genrico de pixeleado para cada imagen por persona.

50x45 X2250

9
Figura 3 Representacin del proceso de ingreso de datos en forma
de vector a la red neuronal.
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

En esta Figura 4 se muestra el procesamiento previamente mostrado para las 10


imgenes en simultneo que luego sern procesadas por la red neuronal:

Figura 4 Cuatro etapas de procesamiento de la imagen para pixelearla.

5. Entrenamiento de la red Neuronal (EJEMPLO):


5.1. Consideraciones:
Para el entrenamiento de la red neuronal se emplean las 10 imgenes mostradas en la
figura 5, que fueron previamente procesadas para ser pixeleadas en la seccin 3.

Figura 5 Imgenes de 10 personas que se usan para entrenar a la red


neuronal.

10
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

En MATLAB se crea un Script para solucionar el problema considerando:


%% Entrenamiento patron
clear;
clc;
close all;

load Imagenes_50x45
figure(1);
subplot(2,5,1); imshow(I_01re); title('Persona 1');
subplot(2,5,2); imshow(I_02re); title('Persona 2');
subplot(2,5,3); imshow(I_03re); title('Persona 3');
subplot(2,5,4); imshow(I_04re); title('Persona 4');
subplot(2,5,5); imshow(I_05re); title('Persona 5');
subplot(2,5,6); imshow(I_06re); title('Persona 6');
subplot(2,5,7); imshow(I_07re); title('Persona 7');
subplot(2,5,8); imshow(I_08re); title('Persona 8');
subplot(2,5,9); imshow(I_09re); title('Persona 9');
subplot(2,5,10); imshow(I_10re); title('Persona 10');

disp('Press ENTER');
pause;
cara1 = abs((I_01re-255)/255);
cara2 = abs((I_02re-255)/255);
cara3 = abs((I_03re-255)/255);
cara4 = abs((I_04re-255)/255);
cara5 = abs((I_05re-255)/255);
cara6 = abs((I_06re-255)/255);
cara7 = abs((I_07re-255)/255);
cara8 = abs((I_08re-255)/255);
cara9 = abs((I_09re-255)/255);
cara10= abs((I_10re-255)/255);
% clear cara1pix cara2pix cara3pix cara4pix;

[nf nc] = size(cara1);


x(1,:) = cara1(1,:);
x(2,:) = cara2(1,:);
x(3,:) = cara3(1,:);
x(4,:) = cara4(1,:);
x(5,:) = cara5(1,:);
x(6,:) = cara6(1,:);
x(7,:) = cara7(1,:);
x(8,:) = cara8(1,:);
x(9,:) = cara9(1,:);
x(10,:)= cara10(1,:);
for k = 2:nf
caras = [ cara1(k,:)
cara2(k,:)
cara3(k,:)
cara4(k,:)
cara5(k,:)
cara6(k,:)
cara7(k,:)
cara8(k,:)
cara9(k,:)
cara10(k,:) ];
x = [ x caras ];

11
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

end
[nxf nxc] = size(x);
nx = nxf;

yb(1,:) = [1 0 0 0 0 0 0 0 0 0];
yb(2,:) = [0 1 0 0 0 0 0 0 0 0];
yb(3,:) = [0 0 1 0 0 0 0 0 0 0];
yb(4,:) = [0 0 0 1 0 0 0 0 0 0];
yb(5,:) = [0 0 0 0 1 0 0 0 0 0];
yb(6,:) = [0 0 0 0 0 1 0 0 0 0];
yb(7,:) = [0 0 0 0 0 0 1 0 0 0];
yb(8,:) = [0 0 0 0 0 0 0 1 0 0];
yb(9,:) = [0 0 0 0 0 0 0 0 1 0];
yb(10,:)= [0 0 0 0 0 0 0 0 0 1];

[ nyf nyc ]=size(yb);


ny = nyf;

ne = nxc;
nm = 200; %Neuronas de capa intermedia/tambin se cambia a 500 luego
ns = nyc;
bias = 1; %input('Bias: SI = 1 : ');
if(bias == 1)
ne = ne +1;
x = [ x ones(nx,1) ];
end
v = 0.2*(rand(ne,nm) - 0.5)*2;
w = 0.2*(rand(nm,ns) - 0.5)*2;

eta = input('eta pesos : ');

for iter = 1:1000


count(iter,1) = iter;
dJdw = 0;
dJdv = 0;
for k = 1:nx
in = (x(k,:))';
m = v'*in;
n = 1.0./(1+exp(-m)); % Sigmoidea 1
%n = 2.0./(1+exp(-m)) - 1; % sigmoidea 2
%n = exp(-m.^2); % Gaussiana
out = w'*n;
y(k,:) = out';
er = out - (yb(k,:))';
error(k,:) = er;
dndm = n.*(1 - n); % Sigmoidea 1
%dndm = (1 - n.*n)/2; % Sigmoidea 2
%dndm = -2.0*(n.*m); % Gaussiana
dydw = n;
dJdw = 1*dJdw + dydw*er';
dJdv = 1*dJdv + in*((w*er).*dndm)';
%w = w - eta*dJdw/nx;
%v = v - eta*dJdv/nx;
end
w = w - eta*dJdw/nx;
v = v - eta*dJdv/nx;
JJ = 0.5*sum(sum(error.*error))

12
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

J(iter,1) = JJ;
end

save pesoscarasfotos ns nm v w bias;

figure(2);
plot(y(1,:),'or'); % Se grafica sin redondeo
hold on;
plot(yb(1,:),'*b');

figure(3);
plot(count,J);

5.2. Resultados del entrenamiento:


5.2..1. La red se entren satisfactoriamente:
Como se aprecia la red pudo entrenarse correctamente; en la siguiente imagen se
muestra el entrenamiento frente a la imagen de la persona 1.

Figura 6 Entrenamiento para la imagen de la persona 1, correcto.

Figura 7 Proceso de reduccin de la funcin de costo J respecto al nmero de iteraciones.

13
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

Como se puede apreciar en la Figura 6 la funcin de costo se reduce en las primeras 10


iteraciones y llega rpidamente a valores cercanos a 0 o valores permisibles. Por tanto
se puede decir que la Red Neuronal tuvo un entrenamiento satisfactorio.

6. Validacin de la Red Neuronal con fotos distintas a las usadas para entrenar
(EJEMPLO).
Para validar la red neuronal artificial se emplean imgenes de las 10 personas pero
realizando gestos que producen variaciones en la toma y por ende en la imagen pixeleada.

Figura 8 Imgenes de las diez personas pexeleadas para validar el entrenamiento de la


red neuronal.

Figura 9 Estructura de funcionamiento de la red neuronal.

Se emplea una funcin para encontrar el nmero de pixeles distintos que soporta y validar
la red neuronal.
%% Validacin de la RN con imgenes diferentes y clculo de pixeles
%% distintos que soporta en # y porcentaje
clear all;
clc;
close all;
I01_b=imread('persona_01_a.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I01_b);

14
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

I_original=I_re;
I01_b=imread('persona_01_b.jpg','jpg');
[I_re,Igr,Ico,Rostro_pix]=imagen_binaria(I01_b);

I_01re_b=I_re;

subplot(1,3,1);imshow(I01_b);title('Imagen de prueba b, persona 1')

% I_01re_b(35:50,15:30) = zeros(16,16); % Negro


% I_01re_b(40:48,20:28) = zeros(9,9); % Negro
% I_01re_b(15,20:42) = zeros(1,23); % Negro
% I_01re_b(6:20,26:40) = 255*ones(15,15); % Blanco
% I_01re_b(9:10,18:19) = 255*ones(2,2); % Blanco

I_prueba=I_01re_b;
figure(1);
subplot(1,3,2);imshow(I_prueba);title('Imagen en 50x45')
cara1 = abs((I_01re_b-255)/255);
[nf nc] = size(cara1);
x(1,:)=cara1(1,:);

for k = 2:nf
caras = [ cara1(k,:)
];
x = [ x caras ];
end
[nxf nxc] = size(x);
nx = nxf;

yb(1,:) = [1 0 0 0 0 0 0 0 0 0];
yb(2,:) = [0 1 0 0 0 0 0 0 0 0];
yb(3,:) = [0 0 1 0 0 0 0 0 0 0];
yb(4,:) = [0 0 0 1 0 0 0 0 0 0];
yb(5,:) = [0 0 0 0 1 0 0 0 0 0];
yb(6,:) = [0 0 0 0 0 1 0 0 0 0];
yb(7,:) = [0 0 0 0 0 0 1 0 0 0];
yb(8,:) = [0 0 0 0 0 0 0 1 0 0];
yb(9,:) = [0 0 0 0 0 0 0 0 1 0];
yb(10,:)= [0 0 0 0 0 0 0 0 0 1];

[ nyf nyc ]=size(yb);


ny = nyf;

ne = nxc;
load pesoscarasfotos; % Carga nm v w bias
if(bias == 1)
ne = ne +1;
x = [x ones(nx,1)];
end

in = x';
m = v'*in;
n = 1.0./(1+exp(-m)); % Sigmoidea 1
%n = 2.0./(1+exp(-m)) - 1; % sigmoidea 2
%n = exp(-m.^2); % Gaussiana
out = w'*n;
y = out;

15
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

subplot(1,3,3);plot(yb(1,:),'*b');title('Resultado:');grid on ;
% Se grafica sin redondeo
%%
[maxy k] = max(y);
if(k == 1)
disp('La Cara es 1');
elseif(k == 2)
disp('La Cara es 2');
elseif(k == 3)
disp('La Cara es 3');
elseif(k == 4)
disp('La Cara es 4')
elseif(k == 5)
disp('La Cara es 5')
elseif(k == 6)
disp('La Cara es 6')
elseif(k == 7)
disp('La Cara es 7')
elseif(k == 8)
disp('La Cara es 8')
elseif(k == 9)
disp('La Cara es 9')
elseif(k == 10)
disp('La Cara es 10')
end
%% Funcin para contar la cantidad de pixeles distintis para que
falle
[pix_porce,pix_falla]=pix_error(I_original,I_prueba)

grid;

Funcin: Detecta el nmero de pixeles distintos frente a la imagen original.


function [pix_porce,pix_falla]=pix_error(I_original,I_prueba)

Ipp=I_original-I_prueba;
figure(3);
imshow(Ipp);
%cambia los bits de 255 a 1:
Y2=Ipp;
W1=size(Y2);
I_x=W1(1,1);
I_y=W1(1,2);
for y=1:I_y %recorre filas
for x=1:I_x %recorre columnas
if Y2(x,y)>150
Y3(x,y)=1;
else
Y3(x,y)=0;
end
end
end
%disp('Cantidad de pixeles distintos para fallar')
pix_falla=sum(sum(Y3));
pix_porce=(pix_falla/2250)*100;
end

16
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

6.1. Validacin con imagen distinta para la persona 1


Se empleas una imagen distinta a la que se us para entrenar y se calcul el nmero de
pixeles distintos respecto a la imagen de entrenamiento y en su respectiva expresin de
porcentaje

Matlab:

La Cara es 1

pix_porce =

2.9333 %

pix_diferetes =

66

Figura 10 Validacin con imagen distinta para la persona 1.

17
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

6.2. Validacin con imagen distinta para la persona 2


Se empleas una imagen distinta a la que se us para entrenar y se calcul el nmero de
pixeles distintos respecto a la imagen de entrenamiento y en su respectiva expresin de
porcentaje

Matlab:

La Cara es 2

pix_porce =

5.8222%

pix_diferentes =

131

Figura 11 Validacin con imagen distinta para la persona 2.

18
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

6.3. Validacin con imagen distinta para la persona 5


Se empleas una imagen distinta a la que se us para entrenar y se calcul el nmero de
pixeles distintos respecto a la imagen de entrenamiento y en su respectiva expresin de
porcentaje

Matlab:

La Cara es 5

pix_porce =

5.6444 %

pix_diferentes =

127

Figura 12 Validacin con imagen distinta para la persona 5.

19
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

6.4. Casos en el que empieza a fallar la red neuronal.


La red neuronal empieza a fallar cuando se supera el lmite 206 pixeles distintos frente a
la imagen que se us para entrenarse lo que equivale en porcentaje a 9.16% de pixeles
diferentes que soporta; pasado ese lmite empieza a fallar la red neuronal.

Figura 13 Alteracin de la imagen ara encontrar el nmero de pixeles distintos que


soporta el algoritmo.
6.5. Resultados: Nmero de pixeles distintos que soporta la RN1.
% Superado el lmite de 206 pixeles distintos empieza fallar el
reconocimiento, en porcentaje seria 9.16%.

La Cara es 8

pix_porce =

9.1556

pix_falla =

206

6.6. Resumen de resultados con ms pruebas variando nm y el nmero de imgenes de


misma persona:
Resultados del entrenamiento de la red neuronal
Nmero de Neuronas Nmeros de # de Nmero de Porcentaje de
entradas (ne) intermedias salidas imgenes pixeles pixeles
(nm) de misma distintos distintos que
persona que soporta soporta
R.N. 1 2250 + 1 (Bias) 200 10 1 206 9.16 %
R.N. 2 2250 + 1 (Bias) 500 10 1 416 18.49 %
R.N. 3 2250 + 1 (Bias) 500 10 2 594 26.40 %

20
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

7. DESCRIPCIN DEL TRABAJO #6

-Realice las modificaciones al programa para que reconozca 5 imgenes de personas


distintas (usar imgenes diferentes a la base de datos brindada).

-Modifique la funcin de activacin para sigmoidea tipo 1, sigmoidea tipo 2 y


gaussiana cuando realice el entrenamiento y compare los resultados.
-Muestre y analice que ocurre cuando aumenta y disminuye el nmero de neuronas en
la capa oculta (nm), y variando otros parmetros de entrenamiento que usted
considere pertinentes (nmero de iteraciones, uso de Bias, etc).

Sbalo al intranet Nimbus UTP en la tarea del TRABAJO #6 (informe y programas)


y si tiene inconvenientes Envi al correo: jlbohorquez@pucp.pe / con asunto:
Control robusto con un sustento verificable del porque no pudo subirlo a sistema.

__________________________________________________________________________
Nota:
Comentarios de los programas brindados como ejemplo:
Se emplean tres programas y una funcin (imagen_binaria): la primera para pixelear las
10 imgenes: image_to_bin, un segundo programa para entrenamiento de la red
neuronal: NeuronCarasReconoceFotos (Se entrena la RN encontrando los pesos,
nmero de neuronas en capa oculta adecuado, entre otros parmetros adecuados que
usted encontrara) y un tercer programa para la validacin: NeuronCarasValidaFotos
(verificacin de la robustez de la red neuronal, ingresando otras imgenes diferentes a las
de entrenamiento para cada persona).

21
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

Conclusiones
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________

Observaciones:
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________
- ____________________________________________________________________

22
Sistemas de control difuso y sistemas de control Robusto
Gua N 2

8. Referencias

[1] P. P. Garca Garca, Reconocimiento de imgenes utilizando redes neuronales


artificiales, Universidad Complutense de Madrid, 2013.
[2] D. J. Matich, Redes Neuronales: Conceptos Bsicos y Aplicaciones., 2001.

23

You might also like