Академический Документы
Профессиональный Документы
Культура Документы
Reconocimiento de Letras
Autores: T.S.U. Kesia Isabel Holgun T.S.U. Osvaldo Garca T.S.U. Rafael Hernndez Asesor Acadmico:
Contenido
Objetivo de la prctica...................................................................................................................................... 3 Diseo de Graphic User Interface .................................................................................................................. 3 Elaboracin de Patrones de Reconocimiento .............................................................................................. 5 Creacin de la Red Neuronal y entrenamiento. ........................................................................................... 6 Ejecucin de Red Neuronal y uso e patrones .............................................................................................. 8 Ejecutando desde GUI ..................................................................................................................................... 8
Objetivo de la prctica
Aplicacin de las herramientas de redes neuronales, funciones y operaciones lgicas para hacer el reconocimiento de letras mediante patrones definidos en matrices de 7 filas por 5 columnas para cada uno, crear la red neuronal y entrenarla hasta tener un error mnimo para comenzar a trabajar.
Es importante al seleccionar cada elemento verificar el nombre que se le crea por default para as poderlo configurar en el script que se crear ms adelante. Al guardar GUI se abre el editor y desde esta ventana se edita el comportamiento de los grficos en funcin al algoritmo y la red neuronal. En la parte donde se edita el Popupmenu el callback, lo que se ocupa es obtener el valor decimal de la seleccin del men y se agrega la funcin switch que cambia la imagen que se muestra en funcin a la seleccin del popup segn alguno de los 26 casos, segn las 26 letras del alfabeto que se toman en cuenta.
function popupmenu1_Callback(hObject, eventdata, handles) val = get(handles.popupmenu1,'Value'); val=val-1; switch val case 0 axes(handles.axes1) imagen = imread('P_A.jpg'); axis off; imshow(imagen); case 1 axes(handles.axes1) imagen = imread('P_B.jpg'); axis off; imshow(imagen); case 2 axes(handles.axes1) imagen = imread('P_C.jpg'); axis off; imshow(imagen); case 3 axes(handles.axes1) imagen = imread('P_D.jpg'); axis off; imshow(imagen); case 4 axes(handles.axes1) imagen = imread('P_E.jpg'); axis off; imshow(imagen); case 5 axes(handles.axes1) imagen = imread('P_F.jpg'); axis off; imshow(imagen); case 6 axes(handles.axes1) imagen = imread('P_G.jpg'); axis off; imshow(imagen); case 7 axes(handles.axes1) imagen = imread('P_H.jpg'); axis off; imshow(imagen); case 8 axes(handles.axes1) imagen = imread('P_I.jpg'); axis off; imshow(imagen); case 9 axes(handles.axes1) imagen = imread('P_J.jpg'); axis off; imshow(imagen); case 10 axes(handles.axes1) imagen = imread('P_K.jpg'); axis off; imshow(imagen); case 11 axes(handles.axes1) imagen = imread('P_L.jpg'); axis off; imshow(imagen); case 12 axes(handles.axes1) imagen = imread('P_M.jpg'); axis off; imshow(imagen); case 13 axes(handles.axes1) imagen = imread('P_N.jpg'); axis off; imshow(imagen); case 14 axes(handles.axes1) imagen = imread('P_O.jpg'); axis off; imshow(imagen); case 15 axes(handles.axes1) imagen = imread('P_P.jpg'); axis off; imshow(imagen); case 16 axes(handles.axes1) imagen = imread('P_Q.jpg'); axis off; imshow(imagen); case 17 axes(handles.axes1) imagen = imread('P_R.jpg'); axis off; imshow(imagen); case 18 axes(handles.axes1) imagen = imread('P_S.jpg'); axis off; imshow(imagen); case 19 axes(handles.axes1) imagen = imread('P_T.jpg'); axis off; imshow(imagen); case 20 axes(handles.axes1) imagen = imread('P_U.jpg'); axis off; imshow(imagen); case 21 axes(handles.axes1) imagen = imread('P_V.jpg'); axis off; imshow(imagen); case 22 axes(handles.axes1) imagen = imread('P_W.jpg'); axis off; imshow(imagen); case 23 axes(handles.axes1) imagen = imread('P_X.jpg'); axis off; imshow(imagen); case 24 axes(handles.axes1) imagen = imread('P_Y.jpg'); axis off; imshow(imagen); case 25 axes(handles.axes1) imagen = imread('P_Z.jpg');
Enseguida se sacan los vectores en binario de cada imagen quedando de la siguiente manera:
Al final se crea un nico vector P en el que cada uno de los valores son los vectores que definen cada letra, despus se crea el Target con una matriz de identidad, y por ltimo se crean las matrices de entrada y target que se usaran en la creacin y entrenamiento de la red con los nombres PP y TT respectivamente.
Ahora para poder crear los vectores de cada patrn y usar en la red que se crear es necesario ejecutar el script para que aparezcan en la workspace.
En la siguiente ventana se colocan el nmero de neuronas ocultas con las que ser estructurada la red, y en la figura de abajo se muestra en nmero de entradas de la red en este caso 35 por los vectores con los que se defini cada letra as como las neuronas ocultas, las neuronas de salida y el nmero de salidas que tendr la red. Se hicieron pruebas con 10 y 20 neuronas ocultas con de 3 a 5 entrenamientos dependiendo del resultado que se estaba obteniendo.
Con 20 Neuronas ocultas en el cuarto entrenamiento en el primer entrenamiento se obtuvo un error de 0.0068 en 142 pocas, se muestra adems el entrenamiento, la validacin, y la prueba de la red, cuando se tiene un la validacin mejor, es debido que el error que se obtuvo es pequeo.
A continuacin se muestra la ventana donde se permite guardar los resultados en el workspace, y desde ah guardarlo con una nueva extensin desde el workspace.
Se cargan los valores de cada letra y se utiliza un switch para dependiendo del patrn que se identifique, al final se simula la red y se obtiene el patrn.