Proyecto de IAA, UTPL.
Tema: Comparación de resultados en la convergencia de una red neuronal utilizando 1 y 2 capas ocultas respectivamente en el modelo del perceptrón multicapa utilizando el algoritmo BackPropagation al realizar el reconocimiento de señales de tránsito
1. Comparación de resultados en la convergencia de una red neuronal
utilizando 1 y 2 capas ocultas respectivamente en el modelo del perceptrón
multicapa utilizando el algoritmo BackPropagation al realizar el
reconocimiento de señales de tránsito
Diego Guamán
dguaman04@gmail.com
deguamanx@utpl.edu.ec
Loja – Ecuador
ABSTRACT como las neuronas que forman dicha capa para comparar los
Abstract En la actualidad el reconocimiento de las señales de resultados a la hora de converger los modelos realizados.
tránsito a tenido un gran desarrollo por lo complejo que es éste
tema sea esto identificar de forma adecuada formas, colores, Seguido de toda esta etapa de aprendizaje y creación del modelo
tamaños de las distintas señales de tránsito. Durante el vamos a probar, qué tan eficientes son los modelos generados a
desarrollo de este trabajo obtendré algunos patrones en la hora de clasificar nuevas señales de tránsito.
imágenes de tránsito para entrenar una red neuronal con el
algoritmo BackPropagation y poder comparar la rapidez de la 2.Motivación
convergencia al entrenar el perceptrón multicapa con 1 y 2 capas El campo de la inteligencia artificial es muy amplio, se aplica en
ocultas variando el número de neuronas en las capas de entrada muchas ramas de las ciencias y de la vida diaria, las
y en las capas ocultas, esto con el fin de tomar algunas herramientas de desarrollo en la actualidad brindan muchas
conclusiones a la hora de crear un modelo para que reconozca facilidades para simular comportamientos que quisiéramos
nuevas señales de tránsito, para el modelado se utilizará la tuviera un agente.
herramienta de minería de datos Weka.
Matlab es una herramienta que manipula imágenes muy
fácilmente así la extracción de características lo que luego será
Keywords nuestro patrón de entrada a la red neuronal no tendremos
Palabras Claves ninguna dificultad en generarla, así mismo el integrar Maltab
Reconocimiento de señales de tránsito. con la herramienta de minería de datos Weka no tendremos
problemas ya que todo esto se logrará mediante líneas de
Redes Neuronales. comandos que explicaremos más adelante.
Neuronas.
3.Estado del Arte
BackPropagation.
Convergencia.
3.1Redes Neuronales
Capas Ocultas. Muchos investigadores basados en los procesos llevados a cabo
por el cerebro humano e inspirados en su funcionamiento han
Perceptrón Multicapa desarrollado las Redes Neuronales Artificiales (RNA). Estos
sistemas no requieren que la tarea a ejecutar se programe, sino
1.Introducción que generalizan y aprenden de la experiencia. Este proceso de
En la actualidad los accidentes e infracciones de tránsito han ido aprendizaje puede ser supervisado o no supervisado usando un
aumentando la mayoría por la imprudencia de los conductores conjunto de datos de entrenamiento (patrones)[1]
que no tienen en cuenta las señales de tránsito.
Según Looney[2] una de las ramas en la que se aplica las redes
neuronales con éxito son entre otras el reconocimiento de
En los últimos años se han venido dando muchas mejoras de los
patrones por lo que en el presente trabajo se realizará usando el
algoritmos que tratan sobre el reconocimiento de señales de
modelo de redes neuronales.
tránsito, éstos varían mucho en sus técnicas pues la tarea más
difícil es encontrar los patrones correctos para las señales, pues Las ventajas de las redes neuronales son según Hilera y
aquí interviene lo que son formas, tamaños, colores, velocidad Martinez[1] son :
para captar la señal, etc.. Aprendizaje adaptativo
Dado la complejidad y como veremos los trabajos realizados la Auto organización
idea del presente trabajo es desarrollar un agente que detecte Generalización
dichas señales, extraer características de las imágenes que serán Tolerancia a fallos.
los patrones de entrada al algoritmo de la red neuronal, Operación en tiempo real.
entrenarla y extraer un modelo. Fácil inserción dentro de la tecnología existente.
Para la creación del modelo utilizaremos el algoritmo
BackPropagation, vamos a variar el número de capas ocultas así
2. 3.2Modelos de Redes Neuronales - Pasada hacia delante (foward pass): las salidas son
Existen varios modelos de redes neuronales, cada uno de ellos a calculadas y el error en las unidades de salida es
sido diseñado para fines más o menos específicos, en el calculado.
siguiente cuadro se muestran las características de algunos - Pasada hacia atrás (backward pass): el error de las
modelos que realizan el reconocimiento de patrones como salidas es utilizado para alterar los pesos de las
aplicación según Hilera y Martinez [1]: unidades de salida. Luego el error en las neuronas de
las capas ocultas es calculado mediante propagación
hacia atrás del error en las unidades de salida, y los
pesos en las capas ocultas son alterados usando esos
valores.
Proceso de adiestramiento (retropropagación)
Existen distintos métodos o paradigmas mediante los cuales
estos pesos pueden ser variados durante el adiestramiento de los
cuales el más utilizado es el de retropropagación
[Backpropagation]. Este paradigma varía los pesos de acuerdo a
las diferencias encontradas entre la salida obtenida y la que
debería obtenerse. De esta forma, si las diferencias son grandes
se modifica el modelo de forma importante y según van siendo
menores, se va convergiendo a un modelo final estable.
El error en una red de neuronas para un patrón [x= (x1, x2, …,
xn), t(x)], siendo x el patrón de entrada, t(x) la salida deseada e
y(x) la proporcionada por la red, se define como se muestra en
la ecuación 1 para m neuronas de salida y como se muestra en la
ecuación 2, para 1 neurona de salida.
Como podemos observar el modelo de BackPropagation es el
más popular en el tema de reconocimiento de patrones y la
herramienta Weka [7] trabaja con este modelo para realizar el
modelado de datos por eso en el presente trabajo utilizaremos
éste enfoque. ecuación 1
3.3BackPropagation
Cuando se combinan varios perceptrones en una capa y los
estímulos de entrada después son sumados, se tiene ya una red ecuación 2
neuronal. El método de descenso de gradiente consiste en modificar los
En esta red, se interconectan varias unidades de procesamiento parámetros de la red siguiendo la dirección negativa del
en capas, las neuronas de cada capa se conectan entre sí. Cada gradiente del error. Lo que se realizaría mediante la ecuación 3.
neurona de una capa proporciona una entrada a cada una de las
neuronas de la siguiente capa. En la figura se observa la
arquitectura de este tipo de red.
ecuación 3
w es el peso a modificar en la red de neuronas (pasando de
wanterior a wnuevo) y α es la razón de aprendizaje, que se
encarga de controlar cuánto se desplazan los pesos en la
dirección negativa del gradiente. Influye en la velocidad de
convergencia del algoritmo, puesto que determina la magnitud
del desplazamiento.
El algoritmo de retropropagación es el resultado de aplicar el
Modelo de una red tipo BackPropagation método de descenso del gradiente a las redes de neuronas. El
algoritmo completo de retropropagación se muestra a
El término backpropagation se refiere al método para calcular el continuación:
gradiente de error en una red feed-forward (de aprendizaje
supervisado), que es una aplicación de la regla de la cadena de
cálculo elemental [8]. Indica la propagación hacia atrás de una Paso 1: Inicialización aleatoria de los pesos y umbrales.
señal de error a través de la red[9]. Básicamente el
entrenamiento de este tipo de red consiste en lo siguiente:
3. Paso 2: Dado un patrón del conjunto de entrenamiento (x, t(x)),
se presenta el vector x a la red y se calcula la salida de la red
para dicho patrón, y(x).
Paso 3: Se evalúa el error e(x) cometido por la red.
Paso 4: Se modifican todos los parámetros de la red.
Paso 5: Se repiten los pasos 2, 3 y 4 para todos los patrones de
entrenamiento, completando así un ciclo de aprendizaje.
Paso 6: Se realizan n ciclos de aprendizaje (pasos 2, 3, 4 y 5)
hasta que se verifique el criterio de parada establecido.
En cuanto al criterio de parada, se debe calcular la suma de los
errores en los patrones de entrenamiento. Si el error es constante
Figura 1. Etapas en el proceso de reconocimiento de imágenes [10]
de un ciclo a otro, los parámetros dejan de sufrir modificaciones
y se obtiene así el error mínimo. Por otro lado, también se debe
tener en cuenta el error en los patrones de validación, que se
presentarán a la red tras n ciclos de aprendizaje. Si el error en 3.5 Trabajos Relacionados
los patrones de validación evoluciona favorablemente se
continúa con el proceso de aprendizaje. Si el error no desciende, El tema de reconocimiento de señales de tránsito no es muy
se detiene el aprendizaje[3]. viejo como lo comenta Fleyeh y Dougherty [10], el primer
trabajo científico apareció en Japón en 1984, que se relacionaba
con la detección de objetos en escenas exteriores con varios
3.4Identificación de las Señales de tránsito métodos de computadora, desde ahí hasta la presente fecha el
Básicamente la identificación de señales de tránsito como lo tema de reconocimiento de señales a crecido mucho haciendo
menciona FLEYEH, Mark DOUGHERTY [10] se divide en dos mejorables técnicas y algoritmos por parte de grupos y
fases principales, la primera es la detección y en segundo lugar compañías interesadas en éste campo.
el reconocimiento.
A continuación presento una parte trabajo realizado por Reiterer,
En la primera fase debe realizar un pre-procesado, un mejorado
Hassan y Sheimy en su paper Automated Traffic Sign Detection
y una segmentación de las propiedades de la señal tal como la
for Modern Driver Assistance Systems [11] una historia de
forma o color, el objetivo de esta fase es que la salida de la
cómo han ido evolucionando las técnicas y algoritmos en el
imagen ya pre-procesada contendrá información potencial
tema de reconocimiento de señales de tránsito:
acerca de la imagen a reconocer. Mientras que en la segunda
fase cada uno de los candidatos es probado de a cuerdo a un
conjunto de características (patron) y decidir si pertenece a un - Piccioli (1996) usa el color y la información a priori
grupo de señales de tránsito o no. para limitar las posibles localizaciones de signos en
El Pictograma permite una nueva etapa de clasificación. una imagen, esto es extraer bordes y buscar regiones
Mediante el análisis de pictograma formas junto con el texto circulares o triangulares antes de aplicar alguna
disponible en el interior del signo, es fácil decidir la clase de técnica de correlación cruzada para el reconocimiento
persona del signo en cuestión. de signos
- Estevez y Kehtarnavaz (1996) una medida es usada
para localizar los signos “PARE”, “CEDA EL PASO”
y “NO ENTRE”, esto lo logra siguiendo una detección
de bordes y analizando la forma para identificar los
signos.
- Escalera (1997) empieza con la detección de la gama
de colores y esquinas para analizar esquinas
especificas relacionadas con los signos triangulares,
rectangulares o circulares. Hace una clasificación
utilizando redes neuronales.
- Yuille (1998) usan corrección de los colores de la
iluminación del ambiente y asignan la señal detectada
en una posición paralela antes de analizarlos
- Huang y Hsu (2000) usa formas y colores en un en un
gran vista ángulo para localizar signos de formas
circulares y triangulares.
- Paclik (2000) usa un método de árbol de decisión para
detectar y reconocer signos sin usar el color, la
detección es basada en formas usando orientaciones
locales de los bordes de las imágenes y ejemplos
jerárquicos
- Sekanina (2000) las señales de límites son detectadas
usando técnicas de color y de multi-resolución.
4. - Fleischer (2002) muestra un enfoque muy diferente, el detección del color, la combinación con la función normalizada
método desarrollado, basado en un modelo basado en de la correlación cruzada (NCC), y un análisis de forma
proceso de arriba hacia abajo, predicciones son hechas matemática para el reconocimiento semáforo. Para la detección
para localizar cual signo puede aparecer, Formas, de color, obtiene una solución inicial mediante el ajuste RGB
tamaños u colores son usados para especificar modelos componente, umbral algoritmo, y el filtro de mediana. Al tratar
de última generación para los signos en el mundo 3D. con cambios de iluminación con el clima y el tiempo, un método
Los signos que se encuentran a través de imágenes se simple de adaptación han desarrollado.
realiza un seguimiento posterior mediante un filtro de
Kalman.
- Shaposhnikov 2002) Hace uso de la segmentación de 3.6Aporte Personal
color usando el modelo de apariencias CIECAM97,
histogramas de los elementos de borde orientado se Como podemos darnos cuenta en los trabajos relacionados, el
utilizan para determinar la forma del signo seguido por tema del reconocimiento de imágenes es muy extenso y tiene
la localización del centro del signo. Los signos son muchas mejoras con relación a los primeros trabajos realizados.
descritos por un conjunto de descriptores que se En las lecturas que realice sobre el tema de reconocimiento de
corresponden con los modelos almacenados a imágenes muchas trabajaban con lo que es redes neuronales,
reconocer los signos utilizaban el perceptrón multicapa, en la mayoría [11][8][9]
- Fang (2003) se centra en la detección de señal en usaba una sola capa oculta, la razón por lo que dice que es
ambientes desordenada. Las redes neuronales se bueno tener una sola capa oculta ya que la red converge de una
utilizan para localizar las regiones que pueden ser el manera mucho más rápida por lo que mi aporte en el siguiente
centro de signos (el uso del color y forma), los signos trabajo es comprobar que esto es cierto, haciendo pruebas con 1
candidatos se realiza un seguimiento a través del y 2 capas ocultas para realizar un análisis comparativo entre
tiempo mediante un filtro de Kalman. ellas y variando el número de neuronas en la capa de entrada (35
- Otros métodos y desarrollos para la detección de y 144 neuronas) así como el número de neuronas en las capas
señales de tránsito han sido publicados por Kumar ocultas.
(1997), Lalonde (1995), Prince (1998), Zadeh et al.
(1997), Hsien et al. (2003), Shadeed et al. (2003), Gao Por lo que el tema del proyecto se llamará:
et al. (2003), Oh et al. (2005), Marmo et al. (2006). Comparación de resultados en la convergencia de una red
neuronal utilizando 1 y 2 capas ocultas respectivamente en el
modelo del perceptrón multicapa utilizando el algoritmo
El grupo de investigación CAOS del departamento de BackPropagation al realizar el reconocimiento de señales de
computación de la universidad de Madrid Carlos III [12] ofrece tránsito.
un sistema de reconocimiento de señales de tránsito llamado
ADAS, la particularidad de éste sistema es que no solo utiliza
una técnica ni un solo clasificador, utiliza un conjunto de 4.Metodologías
clasificadores para la toma de decisiones lo que facilita una MESSAGE/UML
implementación distribuida. La idea clave es que el conjunto de MESSAGE (Methodology for Engineering Systems of Software
los clasificadores son más precisos que cada uno de los Agents) parte de UML y lo extiende con conceptos de nivel de
clasificadores por separado. conocimiento sobre agentes y diagramas con notaciones para
verlos. Se considera que UML es un buen punto de partida por
En el trabajo elaborado por miembros del departamento de las siguientes razones:
teoría de señales y comunicaciones de la universidad de Alcalá
[13] muestra cómo resolver el problema de el reconocimiento de UML es aceptado ampliamente como estándar de modelado
señales de tránsito, implementan un modelo de red neuronal orientado a objetos, lo que significa que muchos modeladores lo
como es el perceptrón multicapa, explican que hay dos maneras conocen y saben manejarse bien.
para reducir el coste computacional para implementaciones en Los paradigmas objetual y orientado a agentes son altamente
tiempo real, El primero reduce el número de entradas MLP por compatibles.
el pre-procesamiento de la señal de tráfico de la imagen (Blob). UML se basa en un metamodelo (MOF) lo que lo hace
Información adicional se mantiene durante esta operación y sólo extensible [12].
la redundancia contenida en la mancha se quita. El segundo El lenguaje de modelado de MESSAGE se relaciona con UML
busca las redes neuronales con reducción de la complejidad como sigue [13]:
mediante la selección de un criterio de error apropiado para la 1. Comparte un mismo lenguaje de metamodelado con UML y
formación. Dos criterios de error se estudian: el mínimo error MOF.
Plaza (SL) y los criterios de error de Kullback-Leibler. Los 2. Extiende UML con conceptos “de nivel de conocimiento”
mejores resultados se obtienen utilizando el criterio de error de
Kullback-Leibler. orientados a agentes .
En el Abstract trabajo realizado por Yang, Zhao y Kim, del
departamento de electricidad e Ingeneria de Computación de la
universidad de Calument (USA)[14] plantea un problema de
reconocimiento de imágenes para personas con deficiencias
para percibir colores, proponen un sistema de transporte
inteligente en la que proporciona al conductor información útil
sobre las señales de tránsito. Utiliza diversas técnicas de
5. Semáforo en
verde
Una vez guardadas las imágenes se procede a utilizar
herramientas del ToolBox de Matlab para el tratamiento de las
imagénes y extraer los patrones.
5.1.1Preprocesamiento de la imagen
Tenemos que ir procesando todas las 32 imágenes guardadas
para extraer sus características (patrones)
for nombreimagen = 0:31
imagen = imread(['entrenamientoST/',
5.Entrenar Red Neuronal con Weka INT2STR(nombreimagen), '.jpg']);
En esta sección vamos a presentar paso a paso como hicimos el entrenamientoST significa la carpeta que almacena las 32
proceso de creación de los archivos arff admitidos en Weka señales de tránsito.
hasta su entrenamiento, todo esto desde matlab
INT2STR significa que vamos a cambiar el formato de
5.1Extracción de Patrones en las Señales de numérico a string, las imágenes de tránsito están numeradas del
0 al 31.
Tránsito
La primera tarea para crear el clasificador para el agente fue jpg significa el formato admitido para la lectura de las
almacenar 32 imágenes de señales de tránsito, las que se dividen imágenes.
en 8 grupos de 4 imágenes. Éstas imágenes servirán para extraer 5.1.2Grises, Binarización y ajuste de la imagen
patrones y así poder categorizar a alguna clase como se La forma más común de generar imágenes binarias es mediante
explicará en la siguiente sección. la utilización del valor umbral de una imagen a escala de grises;
Los grupos de imágenes guardadas son las siguientes: es decir se elige un valor limite (o bien un intervalo) a partir del
cual todos los valores de intensidades mayores serán codificados
Señal de Tránsito Imagen como 1 mientras que los que estén por debajo serán codificados
a cero.[15]
Pare
No entrar
No virar en u
El código en Matlab para convertir a escalas de gris a la imagen
es la siguiente:
Semáforo en rojo imagenGris = rgb2gray(imagen);
con el comando rgb2gray cambiamos a gris la imagen, con este
comando obtenemos la siguiente imagen:
Velocidad
máxima
Semáforo en Con el comando im2bw se binariza la imagen y se calcula el
tomate umbral para la binarización.
bw = im2bw(imagen,graythresh(imagenGris));
con el comando graythresh se calcula el umbral para la
binarización, luego de este comando obtenemos la siguiente
imagen:
Ceda el paso
6. Con el comando imresize cambio el tamaño de la imagen a
120x120 pixeles.
imagen_120120=imresize(imagen,[120,120]);
for cnt=1:12
for cnt2=1:12
porcentajeVacio=sum(imagen_120120((cnt*10-9:cnt*10),
(cnt2*10-9:cnt2*10)));
Luego con la función ajustarTamanio toma la imagen y busca patron((cnt-1)*12+cnt2)=sum(porcentajeVacio);
sus valores máximos y mínimos para limitarla y proceder a end
eliminar la información que se encuentra fuera de estos límites end
bw2 = ajustarTamanio(bw);
patron=((100-patron)/100);
5.1.3Obtención de los patrones en las imágenes patron=patron';
Luego de realizar el ajuste de la imagen se la envía ésta a la
función obtenerPatrones.
En porcentajeVacio se suman todos los pixeles blancos de cada
patron = obtenerPatrones(bw2);
caja de la matriz que es de 144x144, se suman los pixeles
blancos ya que estos tienen un valor de 1 mientras que los
La función obtenerPatrones la describo a continuación está es
negros tienen el valor de 0.
para generar una matriz de 7x5 la cual nos dará luego 35
En patrón=((100-patron)/100) se resta de 100 los pixeles blancos
neuronas de entrada para la red neuronal.
y obtenemos el área de cada matriz de la matriz de 12x12
Con el comando imresize cambio el tamaño de la imagen a
70x50 pixeles. 5.2Creación de Variables predictoras y clases
imagen_7050=imresize(imagen,[70,50]); Para la creación de las variables predictoras y clase necesitamos
primeramente haber extraído las características de las señales de
tránsito (patrones) que analizamos en la sección anterior.
for cnt=1:7 Como vimos los patrones están representadas por matrices de
for cnt2=1:5 7x5 y de 12x12 cada una de ellas, lo que haremos es utilizar
porcentajeVacio=sum(imagen_7050((cnt*10-9:cnt*10), éstos 35 y 144 elementos de la matriz, tomarlas como un
(cnt2*10-9:cnt2*10))); conjunto de patrones que representarán cada una de las
patron((cnt-1)*5+cnt2)=sum(porcentajeVacio); imágenes y al final como se utilizará un paradigma de
end aprendizaje supervisado colocaremos nosotros al final de cada
end patrón una clase a la que va a pertenecer.
patron=((100-patron)/100); Para el desarrollo del presente trabajo vamos a trabajar con 8
patron=patron'; señales de tránsito a las cuales les vamos a asignar las siguientes
clases:
En porcentajeVacio se suman todos los pixeles blancos de cada
caja de la matriz que es de 10x10, se suman los pixeles blancos
ya que estos tienen un valor de 1 mientras que los negros tienen
el valor de 0.
Señal de Tránsito Clases
En patrón=((100-patron)/100) se resta de 100 los pixeles blancos
y obtenemos el área de cada matriz de la matriz de 7x5
Pare 1
No entrar 2
No virar en u 3
Semáforo en rojo 4
Velocidad máxima 5
En la interfaz el proceso de extracción de patrones de las 32
imágenes es el siguiente Semáforo en tomate 6
Ceda el paso 7
Semáforo en verde 8
El formato de las variables predictoras y clases para un número
de 35 neuronas en la capa de entrada es el siguiente:
La función para obtener una matriz de 12x12 la cual nos dará
luego 144 neuronas de entrada para la red neuronal es la n1,n2,n2,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n
siguiente 18,n…..,n…..,n…..,n…..,n…..,n35,Clase
7. a4b6 REAL','n','@ATTRIBUTE a4b7
REAL','n','@ATTRIBUTE a5b1 REAL','n','@ATTRIBUTE
a5b2 REAL','n','@ATTRIBUTE a5b3
REAL','n','@ATTRIBUTE a5b4 REAL','n','@ATTRIBUTE
a5b5 REAL','n','@ATTRIBUTE a5b6
REAL','n','@ATTRIBUTE a5b7 REAL','n','@ATTRIBUTE
class {1,2,3,4,5,6,7,8}','n','@DATA'];
Luego utilizamos un for para leer la matriz w enviada a ésta
función que toma el nombre de patrón como se muestra en el
siguiente código:
a=1;
for i = 1:31
El formato de las variables predictoras y clases para un número for j=1:35
de 35 neuronas en la capa de entrada es el siguiente: textoadd = num2str(patrones(i,j));
if(j==1)
n1,n2,n2,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n texto = [texto,textoadd];
18,n…..,n…..,n…..,n…..,n…..,n143,n144,Clase else
texto = [texto,',',textoadd];
end
end
claseS = num2str(a);
texto = [texto,',',claseS,'n'];
if(mod(i,4)==0)
a=a+1;
end
end
texto=[encabezado,'n',texto];
de éste código podemos analizar que el comando num2str
transforma un entero a un string, esto se hace con el fin de ir
5.2.1Creación del archivo entrenamiento.arff escribiendo en la variable texto los valores de los patrones de
El formato que admite Weka es *.arff por lo que en el siguiente cada imagen.
código en Matlab creamos este archivo utilizando los patrones texto = [texto,',',claseS,'n'];
de las imágenes obtuvimos anteriormente.
Luego utilizamos la comparación if(mod(i,4)==0), esto nos
La función convertirAWeka(w) envía el arreglo w de 32x35 y de permite ir colocando cada 4 imágenes un número del 1 al 8 que
32x144 elementos donde 32 son las imágenes que utilizamos son las clases a las que pertenecen las imágenes que describimos
para el entrenamiento y los 35y144 son el número de elemento anteriormente, a continuación se muestra como queda la
de los patrones extraídos de cada imagen. variable texto que contiene los patrones de cada imagen.
Utilizamos una variable encabezado que es de tipo string para Ejemplo para un patrón de 35 neuronas de entrada
quemar el encabezado del archivo entrenamiento.arff de la
siguiente manera: 0.06,0.88,1,0.88,0.06,0.65,1,1,1,0.65,0.64,0.72,0.79,0.71,0.71,0.
6,0.59,0.58,0.53,0.81,0.86,0.82,0.71,0.72,0.78,0.65,1,1,1,0.65,0.
encabezado = ['@RELATION 06,0.88,1,0.88,0.06,1
entrenamiento','n','@ATTRIBUTE a1b1
REAL','n','@ATTRIBUTE a1b2 REAL','n','@ATTRIBUTE Ejemplo para un patrón de 144 neuronas de entrada
a1b3 REAL','n','@ATTRIBUTE a1b4
REAL','n','@ATTRIBUTE a1b5 REAL','n','@ATTRIBUTE 0,0,0.15,0.9,1,1,1,1,0.9,0.15,0,0,0,0.15,0.9,1,1,1,1,1,1,0.9,0.15,0
a1b6 REAL','n','@ATTRIBUTE a1b7 ,0.15,0.9,1,1,1,1,1,1,1,1,0.9,0.15,0.9,1,1,1,1,1,1,1,1,1,1,0.9,0.55,
REAL','n','@ATTRIBUTE a2b1 REAL','n','@ATTRIBUTE 0.41,0.47,0.94,0.35,1,0.26,0.39,0.79,0.31,0.4,0.77,0.5,1,0.44,0.7
a2b2 REAL','n','@ATTRIBUTE a2b3 ,0.45,0.98,0.45,0.82,0.62,0.5,0.8,0.96,0.5,0.4,0.73,0.47,0.46,0.7
REAL','n','@ATTRIBUTE a2b4 REAL','n','@ATTRIBUTE 6,0.25,0.3,0.89,0.4,0.6,0.91,0.5,1,1,0.53,0.99,0.52,0.5,0.88,0.64,
a2b5 REAL','n','@ATTRIBUTE a2b6 0.4,0.6,0.87,0.85,1,1,0.96,1,0.95,0.95,1,0.95,0.91,0.9,0.87,0.15,
REAL','n','@ATTRIBUTE a2b7 REAL','n','@ATTRIBUTE 0.9,1,1,1,1,1,1,1,1,0.9,0.15,0,0.15,0.9,1,1,1,1,1,1,0.9,0.15,0,0,0,
a3b1 REAL','n','@ATTRIBUTE a3b2 0.15,0.9,1,1,1,1,0.9,0.15,0,0, 1
REAL','n','@ATTRIBUTE a3b3 REAL','n','@ATTRIBUTE
a3b4 REAL','n','@ATTRIBUTE a3b5
REAL','n','@ATTRIBUTE a3b6 REAL','n','@ATTRIBUTE Luego creamos el archivo entrenamiento.arff y le enviamos la
a3b7 REAL','n','@ATTRIBUTE a4b1 cadena texto que concateno el encabezado con los valores de los
REAL','n','@ATTRIBUTE a4b2 REAL','n','@ATTRIBUTE patrones con sus respectivas clases:
a4b3 REAL','n','@ATTRIBUTE a4b4 texto=[encabezado,'n',texto];
REAL','n','@ATTRIBUTE a4b5 REAL','n','@ATTRIBUTE
8. fid=fopen('weka/entrenamiento.arff','W'); 5.3.1Cambiar número de neuronas en la capa
fprintf(fid,texto); oculta[14]
fclose(fid); Lo que se hace en este paso es determinar el número de
neuronas ocultas. Sus posibles valores son:
input('Archivo creado satisfactoriamente' )
‘a’=(atribs+clases)/2,
Guardamos el archivo en la ruta weka/ con el nombre de
entrenamiento.arff. ‘i’=atribs, ‘o’ clases,
En la interfaz la creación de las variables predictoras y clases es ‘t’=atribs+clases .
la siguiente: Para poder modificar estas opciones mostramos en la interfaz de
la siguiente manera:
5.3Entrenar Red Neuronal con Weka
Una ventaja al utilizar comandos de WEKA desde Matlab es que Asi el código para cual opcion está marcada es el siguiente:
se puede crear modelos y analizarlos de una manera muy fácil, a
if (get(handles.neuronasI, 'Value') == get(handles.neuronasI,
continuación presentaré como se realizo todo el proceso para el
'Max'))
entrenamiento de la red neuronal.
opty2=1;
Para lanzar WEKA desde Matlab se realiza una llamada al else
sistema (a MS-DOS) mediante el comando ! y se obtiene el opty2=0;
mismo resultado que el obtenido sobre la ventana de MS-DOS. end
La clase en la que se implementan las redes de neuronas en donde si está marcada la opción en este caso opty2=1 en caso
weka es weka.classifiers.neural.NeuralNetwork.java. Las contrario opty2=0, el mismo razonamiento se utiliza con ‘a’ y
opciones que permite configurar son las que se muestran a con ‘t’.
continuación: 5.3.2Entrenar y crear el modelo con 1 y 2 capas
ocultas[14]
Para el entrenamiento y la creación del modelo con una solo
capa desde Matlab llamamos a Weka como indicamos
anteriormente mediante líneas de comandos, la estructura de la
línea a ser ejecuta es la siguiente:
!java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar"
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -
N 500 -V 0 -S 0 -E 20 -H a -t weka/entrenamiento.arff -d weka/
1Capa.model > analisis/entrena1capa.txt
La letra a es la que permite variar el número de capas ocultas y
significa además el número de neuronas en las capas ocultas por
lo que podemos cambiar con ‘i’ o con ‘t’.
Además podemos agregar a la línea que presentamos la letra -G,
ésta nos permite ver el gráfico de la red neuronal, el
inconveniente es que por defecto nos presenta validación
cruzada por lo que tenemos que presionar 10 veces para que
realice el entrenamiento.
!java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar"
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -
N 500 -V 0 -S 0 -E 20 -H a -G -t weka/entrenamiento.arff -d
weka/1Capa.model > analisis/entrena1capa.txt
Para entrenar con 2 capas ocultas la estructura de la línea a ser
ejecutada es la siguiente:
!java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar"
Opciones de configuración para las redes de neuronas en weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -
WEKA[14]. N 500 -V 0 -S 0 -E 20 -H a,a -t weka/entrenamiento.arff -d
weka/2Capa.model > analisis/entrena2capa.txt
Como podemos darnos cuenta solo agregamos a,a lo que nos da
como resultado una red neuronal con 2 capas ocultas, lo mismo
podemos hacer con i,i y con t,t
9. Igualmente podemos mostrar el gráfico que se genera de la red REAL','n','@ATTRIBUTE a1b5 REAL','n','@ATTRIBUTE
neuronal agregando la letra -G a1b6 REAL','n','@ATTRIBUTE a1b7
!java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar" REAL','n','@ATTRIBUTE a2b1 REAL','n','@ATTRIBUTE
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 - a2b2 REAL','n','@ATTRIBUTE a2b3
N 500 -V 0 -S 0 -E 20 -H a,a -G -t weka/entrenamiento.arff -d REAL','n','@ATTRIBUTE a2b4 REAL','n','@ATTRIBUTE
weka/2Capa.model > analisis/entrena2capa.txt a2b5 REAL','n','@ATTRIBUTE a2b6
REAL','n','@ATTRIBUTE a2b7 REAL','n','@ATTRIBUTE
a3b1 REAL','n','@ATTRIBUTE a3b2
Al final de la línea que se ejecutara en modo de comandos REAL','n','@ATTRIBUTE a3b3 REAL','n','@ATTRIBUTE
guardan los resultados en la ruta “análisis/” para el modelo con a3b4 REAL','n','@ATTRIBUTE a3b5
una capa oculta es entrena1capa.txt y para el modelo de dos REAL','n','@ATTRIBUTE a3b6 REAL','n','@ATTRIBUTE
capas ocultas es entrena2capa.txt. Estos archivos los creamos a3b7 REAL','n','@ATTRIBUTE a4b1
para mostrar información relevante del modelo en la interfaz. REAL','n','@ATTRIBUTE a4b2 REAL','n','@ATTRIBUTE
a4b3 REAL','n','@ATTRIBUTE a4b4
REAL','n','@ATTRIBUTE a4b5 REAL','n','@ATTRIBUTE
a4b6 REAL','n','@ATTRIBUTE a4b7
REAL','n','@ATTRIBUTE a5b1 REAL','n','@ATTRIBUTE
a5b2 REAL','n','@ATTRIBUTE a5b3
REAL','n','@ATTRIBUTE a5b4 REAL','n','@ATTRIBUTE
a5b5 REAL','n','@ATTRIBUTE a5b6
REAL','n','@ATTRIBUTE a5b7 REAL','n','@ATTRIBUTE
class {1,2,3,4,5,6,7,8}','n','@DATA'];
Luego del arreglo BaseDatos1 lo analizamos y escribimos en la
variable textoadd tipo string
for j=1:35
textoadd = num2str(BaseDatos1(1,j));
if(j==1)
5.4Prueba del modelo
texto = [texto,textoadd];
5.4.1Cargar Imagen a analizar y creación del
archivo test.arff else
Primeramente obtenemos nombre del archivo y ruta de imagen a texto = [texto,',',textoadd];
reconocer con el siguiente código: end
[filename, pathname] = uigetfile({'*.jpg'}, 'Elija señal a end
reconocer');
Luego leemos la imágen
Al final como queremos que nos clasifique a que clase pertenece
imagen = imread([pathname,filename]); el patrón de la imagen seleccionada al final colocamos el signo
Luego realizamos el mismo procedimiento de la sección 6.1.2 de intrerrogación ?
con la imagen, esto es obtener imagen en gris, binarización de la texto = [texto,', ?','n'];
imagen y ajuste del tamaño.
Y unimos el encabezado con el texto para formar el archivo
imagenGris = rgb2gray(imagen); test.arff
bw = im2bw(imagen,graythresh(imagenGris)); texto=[encabezado,'n',texto];
bw2 = ajustarTamanio(bw); fid=fopen('weka/test.arff','W');
fprintf(fid,texto);
Luego similar a la sección 6.2 obtenemos los patrones de la fclose(fid);
imagena a ser reconocida
input('Archivo creado satisfactoriamente' )
patron = obtenerPatrones(bw2);
El archivo es creado en el directorio /weka con el nombre
cojuntoDeEntrenamiento(:,:) = patron; test.arff
BaseDatos1 = cojuntoDeEntrenamiento()';
5.4.2Analizar la imagen con el modelo de una capa
Se envía los patrones para crear el archivo test.arff para ser
analizado con weka
oculta y con el modelo de dos capas ocultas.
Una vez creado el archivo test.arff nuevamente ejecutamos
convertirAWekaTest(BaseDatos1);% desde consola el siguiente comando para analizar con el modelo
En la función convertirAWeka realizamos lo siguiente: de una capa oculta:
En la variable encabezado de tipo string escribimos el !java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar"
encabezado del archivo test.arff como se muestra: weka.classifiers.functions.MultilayerPerceptron -T
weka/test.arff -l weka/1Capa.model -p 0 >analisis/1capa.txt
encabezado = ['@RELATION test','n','@ATTRIBUTE a1b1
REAL','n','@ATTRIBUTE a1b2 REAL','n','@ATTRIBUTE
a1b3 REAL','n','@ATTRIBUTE a1b4
10. De manera similar para analizar con el modelo de dos capas Numero de a=22 i=35 t=43
ocultas utilizamos el siguiente comando: neuronas
!java -Xmx1024M -cp "C:Program FilesWeka-3-6weka.jar" Tiempo 2,31 s 4,7 s 3,35 s
weka.classifiers.functions.MultilayerPerceptron -T Convergencia
weka/test.arff -l weka/2Capa.model -p 0 >analisis/2capa.txt
6.1.2 Pruebas variando el número de neuronas de
Al final de los dos comandos respectivamente guardamos la entrada y en las capas ocultas (neuronas de
información proporcionada por la herramienta Weka: 1capa.txt entrada=144)
y 2capa.txt respectivamente para mostrar la información Prueba 1
respecto a la clasificación de la imagen de prueba. 1 capa oculta
La interfaz de toda ésta sección es la siguiente: Numero de a=76 i=144 t=152
neuronas
Tiempo 11,76 s 20,59 s 21,94 s
Convergencia
2 capa oculta
Numero de a=76 i=144 t=152
neuronas
Tiempo 18,85 s 46,44 s 53,02 s
Convergencia
Prueba 2
1 capa oculta
Numero de a=76 i=144 t=152
neuronas
6.Pruebas Tiempo 15,23 s 21,32 s 21,94 s
Convergencia
Los siguientes pruebas son realizadas en un equipo que tiene 2 capa oculta
como características: Procesador intel core 2 duo de 2.2GHz
con 3G RAM. Numero de a=76 i=144 t=152
neuronas
6.1Pruebas de la convergencia de la red Tiempo 21,04 s 49,21 s 61,3 s
neuronal con los dos modelos (1 capa oculta y Convergencia
2 capas ocultas)
6.1.1Pruebas variando el número de neuronas de Gráficas Neuronas de entrada = 35
entrada y en las capas ocultas (neuronas de Prueba 1 Prueba 2
entrada=35) Tiempo de convergencia
Prueba 1
1 capa oculta
Numero de a=22 i=35 t=43
neuronas
Tiempo 1,4 s 1.52 s 1.96 s
Convergencia
2 capa oculta
Numero de a=22 i=35 t=43
neuronas
Gráficas Neuronas de entrada = 144
Tiempo 2,11 s 2,75 s 3,02 s Prueba 1 Prueba 2
Convergencia
Tiempo de convergencia
Prueba 2
1 capa oculta
Numero de a=22 i=35 t=43
neuronas
Tiempo 1,26 s 2,7 s 3,09 s
Convergencia
2 capa oculta
11. clase 4 clase 4
Gráficas Neuronas de entrada (35 Vs 144) Prueba 4
Tiempo de convergencia Confianza con Confianza con 2
1capa oculta 2capas ocultas 1 capa oculta capas ocultas
a=22 0.907% como 0.535% como
clase 2 clase 2
i=35 0.859% como 0.708% como
clase 2 clase 2
t=43 0.771% como 0.733% como
clase 2 clase 2
6.2.2Variando el numero de neuronas en la capa de
entrada = 144
Prueba 1
6.2Pruebas al analizar distintas imágenes con
Confianza con Confianza con 2
los dos modelos (1 capa oculta y 2 capas 1 capa oculta capas ocultas
ocultas)
6.2.1Variando el numero de neuronas en la capa de
entrada = 35
Prueba 1 a=76 0.931% como 0.81% como
clase 1 clase 1
Confianza con Confianza con 2
1 capa oculta capas ocultas i=144 0.891% como 0.765% como
clase 1 clase 6
t=152 0.886% como 0.846% como
clase 1 clase 4
a=22 0.857% como 0.554% como Prueba 2
clase 1 clase 4
Confianza con Confianza con 2
i=35 0.713% como 0.522% como 1 capa oculta capas ocultas
clase 1 clase 6
t=43 0.832% como 0.538% como
clase 1 clase 4 a=76 0.966 % como 0.962 % como
clase 2 clase 2
Prueba 2
i=144 0.969% como 0.975% como
Confianza con Confianza con 2
clase 2 clase 2
1 capa oculta capas ocultas
t=152 0.966% como 0.971% como
clase 2 clase 2
a=22 0.942 % como 0.929 % como Prueba 3
clase 2 clase 2
Confianza con Confianza con 2
i=35 0.963% como 0.903% como 1 capa oculta capas ocultas
clase 2 clase 2
t=43 0.961% como 0.931% como
clase 2 clase 2
Prueba 3 a=76 0.898 % como 0.959 % como
clase 4 clase 4
Confianza con Confianza con 2
1 capa oculta capas ocultas i=144 0.924% como 0.969% como
clase 4 clase 4
t=152 0.92% como 0.97% como
clase 4 clase 4
a=22 0.925 % como 0.917 % como Prueba 4
clase 4 clase 4
Confianza con Confianza con 2
i=35 0.955% como 0.944% como 1 capa oculta capas ocultas
clase 4 clase 4
t=43 0.944% como 0.945% como
12. a=76 0.933% como 0.884% como 7.Conclusiones
clase 2 clase 2
i=144 0.923% como 0.908% como Del presente trabajo que tiene como tema:
clase 2 clase 2
Comparación de resultados en la convergencia de una red
t=152 0.915% como 0.913% como neuronal utilizando 1 y 2 capas ocultas respectivamente en el
clase 2 clase 2 modelo del perceptrón multicapa utilizando el algoritmo
BackPropagation al realizar el reconocimiento de señales de
tránsito, llegue a las siguientes conclusiones:
• Cuando se realizaron la prueba los mejores resultados
al convergir la red neuronal fueron aplicando una sola
capa oculta.
Gráficas Neuronas de entrada (35 Vs 144) • Mientras más neuronas en la capa de entrada hayan la
PARE (neuronas en la capa oculta 35 Vs 144) red se demora un poco más de tiempo al convergir
1capa oculta 2capas ocultas • Al variar el número de neuronas en la capa oculta
a=22ó76, i=35ó144 o t=42ó154 la red tuvo una
convergencia menor utilizando una sola capa oculta
mientras si se aumentaba a dos capas ocultas la red se
demoraba mas en convergir
• Al utilizar un numero de neuronas en la capa oculta
‘a=(atributos+clases)/2’ la red converge de manera
más rápida
• Los mejores resultados al clasificar nuevas clases se
obtuvieron utilizando el modelo de una sola capa
NO ENTRE (neuronas en la capa oculta 35 Vs 144) oculta
1capa oculta 2capas ocultas • Al clasificar nuevas clases la mayor confianza nos
arrojo al utilizar una sola capa oculta y con numero de
neuronas en la capa oculta de ‘a=(atributos+clases)/2’
e ‘i= atributos o clases’
• Los mejores resultados al aproximar una clase nueva
son utilizando 144 neuronas de entrada pues el nivel
de confianza se acerca mucho a la clase a la cual la
clasifica
8.Referencias
SEMAFORO (neuronas en la capa oculta 35 Vs 144)
1capa oculta 2capas ocultas
[1] GONZALEZ HILERA, J.; HERNANDO MARTINEZ, V.;
(1995) Redes Neuronales Artificiales. Fundamentos,
Modelos y Aplicaciones, RA-MA.
[2] LOONEY, C.; (1997) Pattern Recognition Using Neural
Networks, Oxford University Press.
[3] Material Weka, Aprendizaje Automático con Weka- Cesari
Matilde, Disponible en:
http://ai.frm.utn.edu.ar/micesari/files/MATERIAL_WEKA.
NO ENTRE (neuronas en la capa oculta 35 Vs 144) pdf pag. 173
1capa oculta 2capas ocultas [4] Jang J.-S.R., Sun C. –T., & Mizutani E. (1997). Neuro-
Fuzzy and soft computing. A computational approach to
learning and machine intelligence. London, UK: Prentice-
Hall.
[5] Nauck D., Klawonn F., & Kruse R. (1997). Foundations of
neuro-fuzzy systems. Chichester, England: John Wiley &
Sons.
[6] ROAD AND TRAFFIC SIGN DETECTION AND
RECOGNITION, Advanced OR and AI Methods in
Transportation HasanFLEYEH, Mark DOUGHERTY
disponible en:
http://citeseerx.ist.psu.edu/viewdoc/download?
doi=10.1.1.104.2523&rep=rep1&type=pdf pag.2
13. [7] Automated Traffic Sign Detection for Modern Driver
Assistance Systems, TS 9D - Machine Guidance and
Integrated Measurement Systems, Alexander Reiterer,
Taher Hassan, Naser El-Sheimy, FIG Congress 2010,
Facing the Challenges – Building the Capacity Sydney,
Australia, 11-16 April 2010. Disponible en
http://www.fig.net/pub/fig2010/papers/ts09d
%5Cts09d_hassan_elsheimy_3828.pdf, pag.2y3
[8] OO/UC3M/62- TRAFFIC SIGN RECOGNITION
SYSTEM, The research group CAOS at the Computing
Department of the Carlos III University of Madrid, Spain
Disponible en: http://e-
archivo.uc3m.es/bitstream/10016/3185/1/OO_UC3M_62_I
NG.pdf, pag 1
[9] COMPLEXITY REDUCTION IN NEURAL NETWORKS
APPLIED TO TRAFFIC SIGN RECOGNITION TASKS,
R. Vicen-Bueno, R. Gil-Pita, M.P. Jarabo-Amores and F.
López-Ferreras, Departamento de Teoría de la Señal y
Comunicaciones Escuela Politécnica Superior, Universidad
de Alcalá Disponible en:
http://www.ee.bilkent.edu.tr/~signal/defevent/papers/cr149
6.pdf, pag. 1-abstract
[10] A REAL TIME TRAFFIC LIGHT RECOGNITION
SYSTEM, XIAOLI YANG, ZHENPENG ZHAO,YOUN K.
KIM,Department of Electrical and Computer Engineering,
Purdue University Calumet, Hammond, Indiana 46323,
USA, ABSTRACT Disponible en:
http://www.worldscinet.com/ijia/05/0502/S0219878908001
569.html
[11] White paper: Redes neuronales, White paper número 11 de
la revista digital: las redes neuronales. Disponible en
www.peiper.com.ar, pag.5
[12] OMG Unified Modeling Language Specification Version
1.3. Object Management Group, Inc.
http://www.rational.com/uml/resources/documentation/inde
x.jtmpl, June 1999.
[13] Julián V.J., Botti V., Estudio de Métodos de Desarrollo de
Sistemas Multiagente. Revista Iberoamericana de
Inteligencia Artificial, nº 18 (2003) pp. 65-80.
http://www.lcc.uma.es:8080/repository/fileDownloader?
rfname=LCC1139.pdf
[14] Aprendizaje Automático Con Weka – Césari Matilde http://
www.metaemotion.com/diego.garcia.morate/download/wek
a.pdf
[15] DESARROLLO DEL SISTEMA DE ADQUISICIÓN Y
PROCESAMIENTO DE IMAGEN , Biblioteca de
Ingeniería eléctrica y electrónica – Escuela Politécnica
Nacional
http://bieec.epn.edu.ec:8180/dspace/bitstream/123456789/1
218/4/T%2011089%20%20CAP%C3%8DTULO%204.pdf
14. [16] PAGE SIZEANex
All material on each page should fit within a rectangle
of 18 x 23.5 cm (7" x 9.25"), centered on the page,
beginning 2.54 cm (.75") from the top of the page and
ending with 2.54 cm (1") from the bottom. The right
and left margins should be 1.9 cm (.75”). The text
should be in two 8.45 cm (3.33") columns with a .83
cm (.33") gutter.
TYPESET TEXT
Normal or Body Text
Please use a 9-point Times Roman font, or other Roman font
with serifs, as close as possible in appearance to Times Roman
in which these guidelines have been set. The goal is to have a 9-
point text, as you see here. Please use sans-serif or non-
proportional fonts only for special purposes, such as
distinguishing source code text. If Times Roman is not
available, try the font named Computer Modern Roman. On a
Macintosh, use the font named Times. Right margins should be
justified, not ragged.
a. Title and Authors
The title (Helvetica 18-point bold), authors' names (Helvetica
12-point) and affiliations (Helvetica 10-point) run across the full
width of the page – one column wide. We also recommend
phone number (Helvetica 10-point) and e-mail address
(Helvetica 12-point). See the top of this page for three
addresses. If only one address is needed, center all address text.
For two addresses, use two centered tabs, and so on. For more
than three authors, you may have to improvise. 1
b. First Page Copyright Notice
Please leave 3.81 cm (1.5") of blank text box at the bottom of
the left column of the first page for the copyright notice.
c. Subsequent Pages
For pages other than the first page, start at the top of the page,
and continue in double-column format. The two columns on the
last
1