jueves, 22 de enero de 2009

Red neural Feed Fordward

con la utiliazciòn de esta red neuronal, y con un banco de 16 imagenes imagenes para entrenamiento y otras 16 para probar la red, se obtuvieron muy buenos resultados, clasificando correctamente las 16 imagenes.

%%
%% Script para Red neuronal de reconocimiento de patrones
clc
Entrada=[Z(:,x) Z(:,y)];
%% Matriz de Entrdas para entrenamiento
P=zeros(2,12);
j=1;
for i=1:+8:25
for k=i:(i+3)
P(:,j)=Entrada(k,:)';
j=j+1;
end
end

%% Matriz de Entradas de prueba
Ptest=zeros(2,12);
j=1;
for i=1:+8:25
for k=i:(i+3)
Ptest(:,j)=Entrada(k,:)';
j=j+1;
end
end
%% Matriz de Clases
Target= zeros(4,16);
j=1;
for i=1:+17:52
for k=i:+4:16*j
Target(k)=1;
end
j=j+1;
end
%% Creación de Red nueronal
% Creando y entrenando la red neuronal
%% Una red neuronal feed forward con una capa oculta de 20 neuronas.
net = newff(P,Target,20);
[net,tr] = train(net,P,Target);
%% Prueba
% Simular con la base de datos de prueba
[a,b]=max(sim(net,Ptest));
Target
disp(b)
%% Fin



Red neural probabilistica

Se pretencia utilizar una red Probabilistica, puesto que es ideal para resolver aquellos problemas donde se precise de clasificacion.

%%
%% Script para Red neuronal de reconocimiento de patrones
clc
Entrada=[Z(:,x) Z(:,y)];
%% Matriz de Entrdas para entrenamiento
P=zeros(2,12);
j=1;
for i=1:+8:25
for k=i:(i+3)
P(:,j)=Entrada(k,:)';
j=j+1;
end
end

%% Matriz de Entradas de prueba
Ptest=zeros(2,12);
j=1;
for i=1:+8:25
for k=i:(i+3)
Ptest(:,j)=Entrada(k,:)';
j=j+1;
end
end
%% Matriz de Clases
Target= [1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 ]
%% Creación de Red nueronal
% Creando y entrenando la red neuronal
%% Una red neuronal probabilistica(De base radial) para clasificacion con 2 capas
% La primer capa tiene neorinas RADBAS, y calculan sus pesos de entrada con DIST, y sus net
% entradas de red con NETPROD. La segunda capa tiene neuronas COMPET, y
% calcula los pesos de entrada con DOTPROD y las entradas de la red con NETSUM.
% Solamente la primer capa tiene biases
%Entrenamiento
%%
T = ind2vec(Target);
spread = 1;
net = newpnn(P,T,spread);

%Prueba
% Simulate the testing dataset
%
[a,b]=max(sim(net,Ptest));
disp(b)
% Pt=Ptest(:,5)
% %[a,b]=max(sim(net,Ptest));
% %disp(b)
% A=sim(net,Pt)
% Ac = vec2ind(A)
%% Fin

PROCESAMIENTO CONTINUO DE IMÁGENES

El procesamiento de video se realizo en SIMULINK, esta herramienta nos brinda la posibilidad de desarrollar de una manera organizada nuestro sistema cada uno de los bloques realiza una tarea de procesamiento del video, el video de entrada fue grabado con anterioridad así que este sistema no se encuentra corriendo en tiempo real.

En la imagen no se puede apreciar muy bien el diagrama asi que si quieres bajarte el archivo descargalo de AQUI.

En este diagrama se realizan las mismas tareas de procesamiento que se implementaron en los algoritmos anteriores, y son mostradas en publicaciones anteriores, El objetivo principal es hacer un seguimiento de la mano a lo largo de su trayecto, para eso se utiliza el bloque de análisis “Blob Alalysis” que me brinda como salida el “BoundingBox” donde se encuentra el segmento de imagen que corresponde a el gesto de la mano, como también me brinda como salida el centro de masa de el gesto de la mano, ambos serán dibujados sobre la el video antes del procesamiento.

Resultados obtenidos.


Se logro un buen seguimiento del gesto manual aunque el procesamiento sea un poco lento, se logro el objetivo que es seguir el gesto manual.


miércoles, 21 de enero de 2009

COSTO COMPUTACIONAL

El calculo del costo computacional se llevo a cabo con la intruccion tic y toc del entorno MATLAB, Se calculo el timempo que le lleva a un PC con procesador 2.8 AMD con 1 GB de memoria RAM.

tic
% instrucciones a calcular el tiempo
toc

el resultado obtenido fue un tiempo de procesamiento de "Elapsed time is 1.396424 seconds"
Este costo de computo es elevadamente alto si se piensa en coorrer la aplicacion en tiempo real y se debe pensar en laguna tecnica para reducirlo.