proyecto formato sis inte

Upload: mariobros15947

Post on 16-Oct-2015

75 views

Category:

Documents


0 download

TRANSCRIPT

Redes Neuronales

Reconocedor de frutas a travs de una RedNeuronal

Integrantes.

1. Introduccin 1.1. Redes Neuronales para el reconocimiento de frutas Las redes neuronales pueden utilizarse en un gran nmero y variedad de aplicaciones, tanto comerciales como militares. La mayora de estas aplicaciones consisten en realizar un reconocimiento de patrones, como es: buscar un patrn en una serie de ejemplos, clasificar patrones, completar una seal a partir de valores parciales o reconstruir el patrn correcto partiendo de uno distorsionado. Desde el punto de vista de los casos de aplicacin, la ventaja de las redes neuronales reside en el procesado paralelo, adaptativo y no lineal. El dominio de aplicacin de las redes neuronales tambin se lo puede clasificar de la siguiente forma: asociacin y clasificacin, regeneracin de patrones, regresin generalizacin, y optimizacin. Para este proyecto las redes neuronales sern utilizadas para el reconocimiento de parones determinados por las siluetas de frutas determinadas. La base del proyecto est en el adecuado entrenamiento de la Red Neuronal, con la base de conocimiento adecuada, para luego reconstruir la red mediante el Software de reconocimiento desarrollado. 1.2. Redes Neuronales Definicin Una red neuronal es un sistema de procesadores paralelos conectados entre s en forma de grafo dirigido. Esquemticamente cada elemento de procesamiento (neuronas) de la red se representa como un nodo. Estas conexiones establecen una estructura jerrquica que tratan de emular la fisiologa del cerebro en busca nuevos modelos de procesamiento para solucionar problemas concretos del mundo real.

Elementos " Un conjunto de sinapsis o ligas de conexin, las cuales son caracterizadas por un peso o potencia propios a cada conexin. " Una funcin suma que se encarga de sumar los productos de las seales de entrada por los pesos de las sinapsis que llegan a la neurona. " La funcin de activacin o transferencia, se encarga de determinar el nuevo estado de actividad de la neurona con base a la actividad actual de la red, condicionado de este modo la amplitud de una neurona.

Resea histrica En 1943, el neurobilogo Warren McCulloch, y el estadstico Walter Pitss, publicaron el artculo "A logical calculus of Ideas Imminent in Nervous Activity". Este artculo constituy la base y el inicio del desarrollo en diferentes campos como son los Ordenadores Digitales (John Von Neuman), la Inteligencia Artificial (Marvin Minsky con los Sistemas Expertos) y el funcionamiento del ojo (Frank Rosenblatt). En 1957, Frank Rosenblatt public el mayor trabajo de investigacin en computacin neuronal realizado hasta esas fechas. Su trabajo consista en el desarrollo de un elemento llamado "Perceptron". En 1982 John Hopfield con la publicacin del artculo Hopfield Modelo Crossbar Associative Network, junto con la invencin del algoritmo Backpropagation. Reglas de Aprendizaje Un algoritmo de aprendizaje es un mtodo adaptable por medio del cual un RNA se auto organiza, implementando un comportamiento deseado. Dando un conjunto de muestras para la RNA, el algoritmo de aprendizaje reconfigura iterativamente los parmetros de la red hasta obtener una respuesta deseada. Un paso de correccin es ejecutado iterativamente hasta que la red aprende a producir la respuesta deseada. Esencialmente, un algoritmo de aprendizaje es un ciclo cerrado de presentacin de ejemplos y correcciones de los parmetros de la red. Los algoritmos se dividen en dos diferentes tipos: " Supervisados " No-Supervisados

2. Desarrollo del Reconocedor de Imagen 2.1. Algoritmo BackPropagation En 1986, Rumelhart, Hinton y Williams, formalizaron un mtodo para que una red neuronal aprendiera la asociacin que existe entre los patrones de entrada y las clases correspondientes, utilizando varios niveles de neuronas. El algoritmo de aprendizaje backpropagation conlleva una fase de propagacin hacia adelante y otra fase de propagacin hacia atrs. Ambas fases se realizan por cada patrn presentado en la sesin de entrenamiento. Desarrollo del algoritmo: Se tiene el siguiente problema: No se dispone de las respuestas deseadas para las neuronas ocultas.

Red Neuronal Multicapa, para aplicar el algoritmo Backpropagation

Se usa error derivado del error en la salida (propagado y escalado). El conocimiento queda almacenado en la matriz de pesos de la red o matriz de conexin.

Paso 0: Inicializar los pesos y biases Establecerlos a valores pequeos y aleatorios Paso 1: Mientras la condicin de parada sea falsa, hacer pasos 2-9 Paso 2: Para cada par entrada-salida de entrenamiento s:t, hacer pasos 3-8 Paso 3: Establecer la activacin de cada unidad de entrada =l,...,in x = si y transmitir esta seal a todas las unidades de la capa oculta Paso 4: Calcular la entrada neta de cada unidad oculta j= l,..,p uj= bj + Wp . x Aplicar su funcin de activacin para calcular su seal de salida Oj = f (Uj) Y enviar esta seal a todas las unidades de la capa siguiente Paso 5: Calcular la entrada neta de cada unidad de salida k=l,..,m uk = bk + wk] . Oj Aplicar su funcin de activacin para calcular su seal de salida bk = f (bk) RETROPROPAGACION DEL ERROR (BACKPROPAGATION) Paso 6: Cada unidad de salida k= recibe el valor deseado asociado al patrn de entrenamiento, y calcula su gradiente loca k = (tk - yj . f' (uj Calcula el trmino para la correccin de los pesos _wk] = n .k. Oj Calcula el trmino para la correccin de los biases _bk = n . k Y enva k a las unidades de la capa anterior Paso 7: Cada unidad oculta j= l,..,p suma sus entradas delta (desde las unidades de la capa de salida) inj = k . Wj, calcula el trmino de gradiente local j = nj . f' (Uj) calcula el trmino de correccin del peso _wij = n r .x y el del trmino de correccin del bias _ br = n. r ACTUALIZAR PESOS Y BIASES Paso 8: Cada unidad de salida k= actualiza su bias y sus pesos (j=0,..,p) wkj (nuevo) = wkJ (anterior) + _wk] bk (nuevo) = bk (anterior) + _bk Cada unidad oculta j= lf..,p actualiza su bias y pesos (i=0,1,&. n) Wj (nuevo) = Wj, (anterior) + _Wji bj (nuevo) = bj (anterior) + _bj

Paso 9: Verificar la condicin de parada Si se logr un error menor al error cuadrtico o se lleg al nmero de pocas de entrenamiento

En esta siguiente etapa, despus de haber encontrado los pesos ideales en el entrenamiento, se aplica slo la fase Feedforward del mismo Paso 0: Establecer los pesos ideales (Aplicar algoritmo de entrenamiento) FEEDFORWARD Paso 1: Para cada vector de entrada, hacer pasos 2-4 Paso 2: Para i=l hasta n, establecer la activacin de la unidad de entrada x Paso 3: Para j=l hasta p j = bj + Wj . x, Qj = f (Uj) Paso 4: Para k=l hasta m uk = bk + wkj. oj Yk = f K) | C 2.2. Proceso de Entrenamiento El proceso de entrenamiento de la red neuronal se llev a cabo mediante el uso del algoritmo Backpropagation, explicado anteriormente para redes multicapa. Este entrenamiento necesit de las entradas adecuadas, esto es: imgenes de las frutas a procesar y su adecuada representacin para la Red Neuronal, adems del uso de las herramientas de entrenamiento para la Red Neuronal, las etapas la describiremos a continuacin. Procesamiento de imgenes para el entrenamiento El artificio empleado es el de una matriz de NxN, para representar la silueta de las frutas a considerar. Por ejemplo en las siguientes figuras se observan una muestra de una fruta, y su respectiva representacin en una matriz.

Fotografa de muestra de fruta

Imagen procesada y dispuesta en una matriz para la entrada de la Red Neuronal

Para la realizacin del proyecto se utiliz la representacin de la imagen en una matriz de 50x50. Este artificio consiste en representar cada sector perteneciente a la silueta de la imagen por un nmero, en nuestro caso el uno (1), y por los sectores vacis el cero (0). De la siguente manera

Luego se realiz la linealizacin de la matriz a un vector de dimensin 50x50 =2500. Por ejemplo tenemos esta seccin de la matriz con su respectivo ndice que representara cada celda el vector

Distribucin de celadas y posiciones del vector linealizado, en la matriz de la imagen

EL objetivo es poder obtener el vector que representar la entrada de la Red Neuronal. Obtencin de entradas para el entrenamiento La forma de poder obtener el vector que representa a la imagen para el entrenamiento, se realiz mediante el Software desarrollado: _Reconocedor de frutas_, con el anlisis de la imagen y luego con la opcin _TXT_, as como se muestra en la siguiente imagen.

Generacin del archivo de entrada para el entrenamiento

Red Neuronal para el reconocimiento de peras y carambolas: Para entrenar la red Se utilizar el archivo generado por el Software desarrollado, en la carpeta _TXT_ del paquete del proyecto. Se utilizar un pequeo programa desarrollado para Matlab. Lo tenemos adjunto en la carpeta del proyecto como _NeuronTrainPattern00.m_ Entrenamiento En el entorno del MATLAB ejecutar el programa NEURONTRAINPATTERN " Introducir nombre de archivo con data: frutentrena2.prn (Base de entrenamiento) " Resultados de la lectura del archivo con data " Nmero de entradas: 2500 " Nmero de salidas: 3 " Nmero de paquetes de datos entrada-salida: 9 " Seleccionar de la Ventana Nueva: Sern generados automticamente (SINAPSIS) " Introducir neuronas en capa intermedia: 150 " Seleccionar de la Ventana nueva: Considera Neurona bias: SI " Introducir ratio de aprendizaje: .0009 " Introducir momento: 0 " Introducir ratio de aprendizaje de exponente a: 0 " Introducir ratio de aprendizaje del centro c: 0 " Introducir el valor mximo del error (%): 10 " Introducir el mximo etapas de aprendizaje: 300

Grfica de la disminucin del error durante entrenamiento

Luego se solicitar guardar los valores de la Red entrenada. Lo realizamos en el archivo: _frutentrenado206.prn_, de la carpeta _DataRedNeuronal_ del paquete del proyecto. Este archivo de texto _frutentrenado206.prn_, es el que nos permitir el funcionamiento de nuestro software: _Reconocedor de Frutas_, ya que representa la informacin y estructura de nuestra Red Neuronal, 2.3. Tecnologas y plataformas usadas Las tecnologas utilizadas son: a. Java (versin 7): Java es un lenguaje de programacin de propsito general, concurrente, orientado a objetos y basado en clases que fue diseado especficamente para tener tan pocas dependencias de implementacin como fuera posible. Java es, a partir de 2012, uno de los lenguajes de programacin ms populares en uso, particularmente para aplicaciones de cliente-servidor de web.

Duke . La mascota de Java

Matlab versin 2012

Matlab es una herramienta de software matemtico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacin propio (lenguaje M). Est disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux. Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. Es un software muy usado en universidades y centros de investigacin y desarrollo. En los ltimos aos ha aumentado el nmero de prestaciones, como la de programar directamente procesadores digitales de seal o crear cdigo VHDL.

Netbeans versin 7.4

El IDE NetBeans es un entorno de desarrollo integrado - una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Est escrito en Java - pero puede servir para cualquier otro lenguaje de programacin, de cdigo abierto escrito completamente en Java. El NetBeans IDE soporta el desarrollo de todos los tipos de aplicacin Java (J2SE, web, EJB y aplicaciones mviles).

2.4. Software Reconocedor de Frutas Arquitectura:

Arquitectura del Software Reconocedor de Frutas y principales componentes

2.5. Modulo para la construccin de la Red Neuronal Ubicamos este componente en la arquitectura general del proyecto:

Ubicacin del mdulo de la construccin de la Red Neuronal, en la Arquitectura del proyecto El mdulo para la construccin de la red neuronal, corresponde a las clases ubicadas en el paquete del cdigo fuente _RedNeuronal_, Estas clases son: _BackPropagation.java_, que posee parte del algoritmo de entrenamiento BackPropagation y operaciones de matrices para el algoritmo. _InPutOutPutRNFile.java_ con mtodos bsicos lectura de archivos y tratamiento de imgenes.

2.6. Mdulo la para capturas de imgenes.

Ubicacin del mdulo para la captura de imgenes, en la Arquitectura del proyecto

Software utilizado para la captura de imgenes es yawcam es un software de cmara web para Windows escritas en Java. Las principales ideas para Yawcam son que sea sencillo y fcil de usar sino que incluye todas las caractersticas habituales. Caracteristicas Yawcam: " Reproduccin de vdeo " fotos de la imagen " servidor web incorporado " La deteccin de movimiento " FTP-upload " Texto y superposiciones de imgenes " Proteccin por contrasea " Anuncios en lnea para las comunidades " Programador de tiempo en lnea " pelculas de lapso de tiempo " Ejecutar como un servicio de Windows " Multi idiomas

2.7. Mdulo para el procesador de imagen

Ubicacin del mdulo para el procesador de imagen, en la Arquitectura del proyecto

Este mdulo se encarga de procesar la imagen tomada desde la webcam, haciendo los procesos de binarizar la imagen en dos colores (blanco y negro), obtener el contorno o cascara de la fruta, convertir la imagen en una matriz de 50x50 y obtener la salida binaria para generar el archivo para el matlab.

FIGURA DE LA PERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.

1. Binarizar la imagen en dos colores en blanco y negro.2. Obetner el contorno de la cascara de la fruta3. Convertir la imagen en una matriz 50x504. Obtener la salida binaria 0s y 1s para generar el archivo para el software Matlab

3. Funcionamiento del reconocedor El software reconocedor es un archivo ejecutable java .jar que funciona en cualquier plataforma Windows, Linux o Mac.

La ejecucin del programa se despliega sobre las libreras de Swing de Java Para comenzar el reconocimiento es necesario capturar la imagen.

Luego presionar el botn Reconocer Imagen para determinar si es una pera o carambola

Vista de la matriz de salida de un reconocimiento, visto en consola

4. Conclusiones " Las redes neuronales representan una alternativa muy recomendable para el reconocimiento de patrones, sobre todo por la adaptabilidad a cualquier tipo de forma. " El trabajo aplic las redes neuronales como aplicacin para el reconocimiento de formas en este caso frutas, con el fin de determinar si un objeto era una pera, una carambola o no se poda determinar. " El algoritmo Backprogation soluciona de manera efectiva el aprendizaje de una red neuronal, hallando los pesos que le corresponden a las neuronas de la capa oculta. " El algoritmo BackPropagation es una excelente alternativa si se desea realizar aplicaciones de clasificacin y reconocimiento de patrones. " La manipulacin de cada una de las imgenes se realiz con arreglos de pixeles siendo un mtodo ms directo para las transformaciones de escalado y renderizado. 5. Recomendaciones y trabajo futuro " Adems de los mdulos de entrenamiento y reconocimiento, sera necesario un mdulo para modificar las configuraciones como son el porcentaje del contorno, el color discriminante, numero de columnas y filas de la matriz, etc. " Se planea implementar la funcionalidad de poder discriminar espacios vacos de una imagen, para que el procesamiento de la imagen sea ms eficiente. " Utilizar un software de captura de imagen ms verstil que el YawCam, una buena alternativa seria utilizar la librera de Java Media Framework para la toma de imgenes. " Una mejora seria generar un applet para que los usuarios de un sitio web puedan ejecutar el software sin la necesidad de instalar y configurar el software manualmente.