Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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
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
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
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.
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
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.
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.
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).
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.
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
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 fruta
3. Convertir la imagen en una matriz 50x50 4. Obtener la salida binaria 0s y 1s para generar el archivo para el software Matlab
Luego presionar el botn Reconocer Imagen para determinar si es una pera o carambola
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.