8
1 Abstract - The following document presents the design, development and implementation of an algorithm to recognize Numerical Characters through two architectures of Artificial Neural Network, Self Organizing Maps (SOM’s) and MultiLayer Perceptron’s (MLP’s). The input images to the algorithm come from a database that contains RGB images of numbers from zero to nine. These images are processed through a series of steps such as filtering low resolution images, transforming all RGB images to Black and White scale, selecting only images with the written character on black (and a white background) , resizing the images to a moderate pixel dimension etc. Once the images are completely processed, the ANN was trained with two type of input data. All the pixels from each image or three statistical features (Mean, Standard Deviation and Variance) obtained from each of the four segments the image is divided into, for a total of twelve input features. Finally, the ANN was trained using the ANN Toolbox from the MATLAB Software and the performance of both architectures was compared using the confusion matrix. Key Words: Character Recognition, ANN, SOM, MLP, Confusion Matrix I. INTRODUCCIÓN as aplicaciones que el ser humano ha desarrollado a lo largo del tiempo siempre han tenido múltiples propósitos entre los cuales se destaca siempre la increíble necesidad y deseo de desarrollar procesos, maquinas u dispositivos que tengan la capacidad de resolver problemas de la vida cotidiana. Si se analiza con detalle, dichas aplicaciones utilizan o proponen métodos de solución que implican algoritmos específicos y únicos, destinados precisamente a la solución de dichos problemas en específico. Con el avance tecnológico que se ha tenido desde los años 70- 80’s , gracias a la automatización y los sistemas embebidos, se ha encontrado poco a poco la manera de resolver cada vez problemas más complejos. Dentro de un intento en enfrentar los problemas surgidos a diario surge un área de solución de problemas llamada Redes Neuronales Artificiales (RNA), en las cuales se reta al diseño de algoritmos que intenten emular el funcionamiento de las neuronas del cerebro. Cabe resaltar entonces que la idea de este tipo de procesamiento de información se da gracias a la similitud en la transferencia de información entre las neuronas biológicas. La transferencia de información entre las neuronas básicamente consta de: Las neuronas tienes cientos de miles de conexiones entre ellas, lo que las hace altamente capaces de procesar la información. Una neurona tiene una entrada de información en forma de señal eléctrica, que al pasar por el cuerpo de esta, dicha información se ve alterada o modificada generando una salida que afecta a sus neuronas vecinas o algún tipo de musculo. Es importante resaltar que la comunicación entre las neuronas no se realiza de manera física como tal, sino mediante un proceso denominado sinapsis, el cual compone de una combinación de sustancias químicas llamadas neurotransmisores. Los neurotransmisores como tal son los que definen el paso o no de información de una neurona a otra u otras. Algunas veces, puede suceder que la neurona como tal no se active, debido a que esta tiene un potencial que al no ser superado generara la inactividad de dicha neurona. En la Fig.1 se muestra de forma detallada una neurona biológica como tal. Fig. 1. Modelo de una neurona biológica. Por tanto, se propuso un modelo de una neurona artificial, con el fin de realizar una conexión entre múltiples neuronas y tratar de solucionar problemas con el fin de que dichas conexiones neuronales. A continuación se presenta mediante la Fig.2 el modelo de la neurona artificial y se observa un símil entre las partes de la neurona biológica y artificial. Reconocimiento de Caracteres Numéricos implementando RNA con arquitecturas SOM y MLP David Alvarez Charris 1 , Andrés Camilo Cubides 1 Felipe Palta 2 , 1 Ingeniería Mecatrónica, 2 Ingeniería Electrónica y Tel., Facultad de Ingeniería, Universidad Autónoma de Occidente Cali Colombia, Junio 02 del 2015 L

Reconocimiento de Caracteres Numéricos implementando RNA

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Reconocimiento de Caracteres Numéricos implementando RNA

1

Abstract - The following document presents the design,

development and implementation of an algorithm to recognize

Numerical Characters through two architectures of Artificial

Neural Network, Self Organizing Maps (SOM’s) and MultiLayer

Perceptron’s (MLP’s). The input images to the algorithm come

from a database that contains RGB images of numbers from zero

to nine. These images are processed through a series of steps such

as filtering low resolution images, transforming all RGB images

to Black and White scale, selecting only images with the written

character on black (and a white background) , resizing the

images to a moderate pixel dimension etc. Once the images are

completely processed, the ANN was trained with two type of

input data. All the pixels from each image or three statistical

features (Mean, Standard Deviation and Variance) obtained from

each of the four segments the image is divided into, for a total of

twelve input features. Finally, the ANN was trained using the

ANN Toolbox from the MATLAB Software and the performance

of both architectures was compared using the confusion matrix.

Key Words: Character Recognition, ANN, SOM, MLP, Confusion

Matrix

I. INTRODUCCIÓN

as aplicaciones que el ser humano ha desarrollado a lo

largo del tiempo siempre han tenido múltiples propósitos

entre los cuales se destaca siempre la increíble necesidad

y deseo de desarrollar procesos, maquinas u dispositivos que

tengan la capacidad de resolver problemas de la vida

cotidiana. Si se analiza con detalle, dichas aplicaciones

utilizan o proponen métodos de solución que implican

algoritmos específicos y únicos, destinados precisamente a la

solución de dichos problemas en específico.

Con el avance tecnológico que se ha tenido desde los años 70-

80’s , gracias a la automatización y los sistemas embebidos, se

ha encontrado poco a poco la manera de resolver cada vez

problemas más complejos. Dentro de un intento en enfrentar

los problemas surgidos a diario surge un área de solución de

problemas llamada Redes Neuronales Artificiales (RNA), en

las cuales se reta al diseño de algoritmos que intenten emular

el funcionamiento de las neuronas del cerebro.

Cabe resaltar entonces que la idea de este tipo de

procesamiento de información se da gracias a la similitud en la

transferencia de información entre las neuronas biológicas. La

transferencia de información entre las neuronas básicamente

consta de:

Las neuronas tienes cientos de miles de conexiones

entre ellas, lo que las hace altamente capaces de

procesar la información. Una neurona tiene una

entrada de información en forma de señal eléctrica,

que al pasar por el cuerpo de esta, dicha información

se ve alterada o modificada generando una salida que

afecta a sus neuronas vecinas o algún tipo de

musculo.

Es importante resaltar que la comunicación entre las

neuronas no se realiza de manera física como tal, sino

mediante un proceso denominado sinapsis, el cual

compone de una combinación de sustancias químicas

llamadas neurotransmisores. Los neurotransmisores

como tal son los que definen el paso o no de

información de una neurona a otra u otras.

Algunas veces, puede suceder que la neurona como

tal no se active, debido a que esta tiene un potencial

que al no ser superado generara la inactividad de

dicha neurona.

En la Fig.1 se muestra de forma detallada una neurona

biológica como tal.

Fig. 1. Modelo de una neurona biológica.

Por tanto, se propuso un modelo de una neurona artificial,

con el fin de realizar una conexión entre múltiples neuronas y

tratar de solucionar problemas con el fin de que dichas

conexiones neuronales. A continuación se presenta mediante

la Fig.2 el modelo de la neurona artificial y se observa un

símil entre las partes de la neurona biológica y artificial.

Reconocimiento de Caracteres Numéricos

implementando RNA con arquitecturas SOM y

MLP David Alvarez Charris1, Andrés Camilo Cubides 1 Felipe Palta 2,

1Ingeniería Mecatrónica, 2Ingeniería Electrónica y Tel., Facultad de Ingeniería, Universidad Autónoma

de Occidente Cali Colombia, Junio 02 del 2015

L

Page 2: Reconocimiento de Caracteres Numéricos implementando RNA

2

Fig. 2. Modelo de una neurona artificial en comparación con las

partes de una neurona biológica.

Como se puede observar de la Fig.1, el símil entre la neurona

biológica y la artificial, es muy grande ya que prácticamente

se logra describir de forma numérica las partes y conexiones

de esta. De forma general, la manera de procesar y actuar una

neurona para dar la salida es realizar una multiplicación entre

los valores numéricos de entrada con los pesos sinápticos de

cada una de las ramificaciones que posea. Dicha sumatoria se

debe realizar con todas las entradas, obteniendo un valor

denominado neta, la cual se ve afectada por el valor del

umbral o bias, donde dicho valor de resultado ya entrará a la

función de activación, donde teóricamente se tendrá la

salida. De manera general, el anterior proceso que sucede

desde la entrada de n datos a una neurona para producir dicha

salida, se puede sintetizar en las siguientes dos ecuaciones:

𝑁𝑒𝑡𝑎 = ∑ 𝑋𝑖 ∙ 𝑊𝑗 ∙ 𝑖

𝑁

𝑖=1

+ 𝑊𝑜 (1)

De (1), se puede observar que N es el número de entradas que

existen y j el valor del peso sináptico para dicha conexión.

Y para generar la salida, entonces:

𝑆𝑎𝑙𝑖𝑑𝑎 = 𝐹𝑎𝑐𝑡(𝑁𝑒𝑡𝑎) (2)

De (2), se analiza entonces, que la salida depende de dicha

función de activación. Existen diversas funciones de

activación las cuales dependen de los procesos o aplicaciones

en específicas, entre estas funciones encontramos la Lineal,

Sigmoidal, Sigmoidal bipolar y Binaria. De este concepto de

RNA, surgieron arreglos de neuronas, para resolver

problemas de mayor complejidad en general. Este tipo de

arreglos son Monocapa, Redes multicapa y Redes

concurrentes.

Después de haber definido dichas estructuras con neuronas,

surge el concepto de aprendizaje de estas, lo que pretende

hacer es enseñarle a la red de neuronas un cierto

comportamiento de los datos de entradas con sus respectivas

salidas para que por medio de la modificación de sus pesos

sinápticos y los umbrales generen forzar las salidas

deseadas.

Por tanto, aquí entra el concepto clave de las RNA, el

aprendizaje de las cosas debe de ser suministrando entradas y

salidas que al irse adaptando más a los datos, características o

parámetros son capaces de aprender para una amplia gama de

entradas (ojala infinita) de predecir la salida correspondiente.

En resumen, dicho aprendizaje se genera es actualizando los

valores de los pesos sinápticos, los cuales como se puede

observar de (1), son los que generan el valor de la neta donde

precisamente influye en la salida deseada.

De manera general, existen diferentes maneras de entrenar las

RNA, estas pueden ser:

Aprendizaje supervisado: Lo que se realiza en este

tipo de aprendizaje es suministrar los datos tanto de

entrada a la red como punto a punto, los

correspondientes a cada salida deseada para dicha

entrada. Por tanto, en dicho aprendizaje se obliga a la

red a que aprenda todos los patrones de

entrenamiento.

Aprendizaje no supervisado: Lo que se realiza en

este tipo de aprendizaje es suministrar datos de

entrada que están más enfocados en características o

parámetros generales u específicos, para lograr

obtener el conocimiento específico con el que se

desea representar la red.

Para dar un ejemplo en las aplicaciones reales donde se

implementan las RNA, se puede pensar directamente en

los problemas de clasificación de imágenes donde

generalmente se desea poseer una imagen de entrada y

que se prediga una característica o palabra que

corresponda al contenido visual de dicha imagen. En

particular, cuando se desea reconocer letras u caracteres,

se observa que el procesamiento suele ser complejo y

algunas veces ineficiente. Dicho problema se puede

solucionar desde diferentes perspectivas haciendo análisis

en varios ámbitos, pero se puede asegurar que las RNA,

son una de las maneras más eficientes de resolver dicho

problema.

Primero que todo, se puede utilizar el entrenamiento

supervisado, específicamente como las redes multicapa

perceptrón (MLP). Generalmente las redes MLP

solucionan el problema de la clasificación de problemas

no lineales. Las características principales de un sistema

MLP son:

Posee al menos tres capas de niveles: la capa de

entrada, la capa oculta y la capa de salida.

El problema de la separación no lineal se supera

debido a que en cada capa, se implementan

umbrales o bias diferentes, lo que hacen que el

origen de la nueva dimensión n sea mayor.

Las funciones de activación pueden ser lineales o

en la mayoría de los casos sigmoidales.

Page 3: Reconocimiento de Caracteres Numéricos implementando RNA

3

El entrenamiento requiere el uso de back-

propagation.

Una estructura poderosa como esta MLP, se representa como

la Fig.3

Fig. 3. Estructura básica de un MLP de una capa de entrada, una capa

oculta y una capa de salida.

Por otra parte, se puede utilizar algún tipo de entrenamiento

no supervisado, como lo es los llamados Mapas Auto-

Organizados SOM. La característica principal de los SOM,

es asociar la capacidad de reconocer y extraer rasgos, esto

implica que se realice una auto organización de las neuronas,

para poderse llevar a cabo. La idea es crear un espacio

multidimensional de entrada en un espacio de salida de menor

dimensión. Al final lo que se obtiene es un conjunto de

sectores que agrupa los datos con las características más

comunes. Antes de llevar a cabo el aprendizaje de la red, se

debe de definir los parámetros que caracterizan la arquitectura

de la red, es decir asignar el número de neuronas de la entrada

y la dimensión de la capa de salida de la red.

Se invita al lector a observar el proceso de diseño y la

implementación de estas dos tipos de RNA y evalúe la

eficiencia para obtener como resultado final la clasificación de

caracteres numéricos.

II. DISEÑO E IMPLEMENTACIÓN

nicialmente el reconocimiento de los caracteres numéricos

se enfocó a un grupo de imágenes de la base de datos de los

investigadores [1]. Partiendo de dicha base de imágenes se

propuso realizar el reconocimiento de los caracteres de estas

imágenes a través de dos métodos de Redes Neuronales

Artificiales (ANN); de aprendizaje supervisado utilizando

Redes Multicapa Perceptron (MLP) y de aprendizaje no

supervisado implementando Mapas Auto-organizados de

Kohonen. Se propusieron estos dos tipos de aprendizaje con el

fin de poder analizar el desempeño y la precisión de

clasificación de caracteres de cada uno de estos.

A. Pre – Procesamiento de Imágenes

Como primer paso en el desarrollo de algoritmo, se planteó

una serie de etapas de pre procesamiento de las imágenes de

entrada (Anexo 1, Inicio de Algoritmos: charSOM). Estas

etapas de procesamiento fueron pensadas con el fin de mejorar

la calidad de los datos y sintetizar la información que describe

el carácter en el menor número de parámetros * (entradas a las

ANN) y lograr así un mejor desempeño de las redes. El

primer procesamiento de la imagen consiste en un Filtro de

Resolución (Fig.4), el cual con base a ambas dimensiones

(número de filas y numero de columnas) de la matriz que

representa la imagen, determinara si estas son mayores al

mínimo número de pixeles adecuado (dimPx), permitiendo o

no el uso de esta como dato de entrada. Posterior a dicho

filtro, las imágenes seleccionadas fueron convertidas

inicialmente a escala de grises con el fin de poder realizar un

Proceso de Binarización a niveles de solo blanco y negro

(Fig.4),, transformándolas así de un tipo de dato RGB a uno

BW, el cual facilitara de gran manera el aprendizaje de los

datos de entrada.

* Aunque insertar como entrada a la ANN el total de pixeles de la imagen

(mxn) es un enorme cantidad de datos, y no es para nada sintetizar la información, esto fue realizado como parte del proyecto con el fin de poder

contrastar el desempeño de la ANN frente a los pixeles de la imagen y frente a

los datos estadísticos % Filtering image with low resolution (i.e < dimPX) if(size(fileTemp,1)>=dimPx && size(fileTemp,2)

>=dimPx)

% Transforming image from RGB BW imG = rgb2gray(fileTemp);

level = graythresh(imG) ;

imBW = im2bw(imG,level);

Fig.4. Filtro de Resolución y Binarización de Imagen – Código MATLAB

Como segundo filtro creado se encuentra un Filtro de

Carácter Negro, el cual procura estimar si el carácter

(numero) de la imagen de entrada es negro o blanco. Esto

debido a que para el proyecto solo se utilizaran caracteres de

color negro, ya que si se introducen como datos de entradas

tanto caracteres blancos como caracteres negro, para un

mismo número se presentaran entradas totalmente diferentes,

causando que la ANN no aprenda de forma adecuada cada uno

de los caracteres a predecir y por ende que esta tenga un

desempeño muy bajo. Como criterio para estimar el color del

carácter se determinara el valor promedio de la matriz que

representa la imagen; por lo cual para una imagen con carácter

negro el fondo será predominantemente blanco y por ende su

valor promedio será más cercano a ‘1’. Para el caso opuesto

(carácter blanco) el valor promedio será cercano a ‘0’.

Comparando el valor promedio con una umbral establecido

(0.66 determinado experimentalmente) se determinara si la

imagen es apta o no para ser una entrada a la ANN (Fig.4).

Posteriormente se realiza una Reducción de Tamaño (Fig.4)

de la imagen a un valor de dimPx x dimPx , para disminuir la

cantidad de pixeles de la imagen. Es importante resaltar que la

reducción de los pixeles de la imagen debe ser realizada

después de la aplicación del Filtro de Carácter Negro, con el

fin de que este filtro pueda trabajar sobre una mayor cantidad

I

Page 4: Reconocimiento de Caracteres Numéricos implementando RNA

4

de pixeles y por ende obtener un promedio que permita con

mayor probabilidad determinar correctamente el color del

carácter (B o W). Dicha reducción fue realizada por que

durante el desarrollo del algoritmo se pudo observar que el

procesamiento de esta gran cantidad de pixeles y gran cantidad

de imágenes era un proceso lento por tanto producía una carga

computacional alta y requería un tiempo muy extenso de

ejecución. Finalmente se realiza la Extracción de

Características (Features, Anexo 2: imFeatures), la cual

consiste en dividir la imagen en cuatro cuadrantes simétricos

(utilizando las dimensiones de la matriz de la imagen

anteriormente puesta), y para cada uno de estos cuadrantes

obtener datos estadísticos los cuales son la Media, Desviación

Estándar y Varianza. (Fig.4)

% Use image for Data Base only If image is

predominantly white (i.e.written character is black)

if (mean(mean(imBW))>= 0.66)

% Reduce ammount of px imRBW = imresize(imBW,[dimPx dimPx]);

%Feature Extraction,Divide in four simetric parts imP1 = imRBW(1:dimPx/2,1:dimPx/2) ;

imP2 = imRBW(1:dimPx/2,dimPx/2+1:end); imP3 = imRBW(dimPx/2+1:end,1:dimPx/2) ;

imP4 = imRBW(dimPx/2+1:end,dimPx/2+1:end);

imTot = {imP1 imP2 imP3 imP4};

xtIm(i,1) = mean(mean(imTot{i})); stdIm(i,1) = std(std(imTot{i})); varIm(i,1)= var(var(imTot{i}));

Fig.4. Filtro de Carácter Negro y Reducción de Tamaño de Imagen– Código MATLAB

B. Visualización de Imágenes

Con el fin de que el usuario pudiera tanto ver una muestra

de las imágenes de entrada a la red, como validar de forma

visual (Fig.5) el comportamiento de esta una vez fuese

entrada, se creó un script (Anexo 3: showSamp2) encargado

de mostrar los datos al usuario. Como datos de entrada esta

función recibe la matriz que contiene todas las imágenes, la

dimensión en pixeles de cada una de estas imágenes y el

número de imágenes que se desean desplegar en la matriz de

despliegue. El algoritmo consiste en introducir pixel por pixel

el valor de cada punto de la imagen a una matriz cuadrada

(displayMatrix) que tendrá un tamaño equivalente al número

de imágenes a desplegar por el tamaño de cada una de estas

(i.e. displayMatrix = ones(displayDim*dimPx ,

displayDim*dimPx)). Es importante resaltar que debido a que

durante la etapa de carga y procesado de las matrices de la

imagen estas son transformadas a vectores columnas, al

insertar cada imagen en la matriz displayMatrix los vectores

deben ser de nuevo transformados a matrices

(reshape(Xdisp(:,count),dimPx,dimPx)). Finalmente la matriz

es pasada como parámetro de entra al comando de MATLAB

imagesc, el cual re escala cada uno de los valores de la matriz

a valores del mapa de colores (colormap) actual, el cual fue

previamente establecido a escala de grises.

Fig.5. Matriz de muestra de imágenes de entrada, creada usando script showSamp2

C. Reconocimiento de Caracteres utilizando MLP

En la Red Perceptron Multicapa (MLP) (Anexo 4,

charMLP) para la creación de los datos de validación,

entrenamiento y las salidas deseadas, es necesario crear un

vector de índices (numInd) que indique la posición donde

acaba cada número a identificar. Adicionalmente se establece

un vector denominado baseVect, el cual posee diez posiciones

correspondientes a la codificación binaria en números de 10b

de los diez caracteres a identificar (0-9). Los valores de

numInd en conjunto con los de baseVect son utilizados para

crear la salida deseada. Posteriormente se dividen los datos

entre Datos de Entrenamiento (70%) y Datos de Validación

(30%) haciendo de nuevo uso del vector numInd.

La red MLP implementada cuenta con 13 neuronas en la

capa oculta y 10 en la capa de salida, ambas con una función

de activación tangente sigmoidal debido a que como ya se

mencionó anteriormente las salidas serán codificadas

binariamente. Para el aprendizaje de la red se utilizó el

entrenamiento Levenberg-Marquardt a través de 1000

iteraciones, esto debido a que al probar con otros métodos

como el entrenamiento Bayesiano (trainbr), entrenamiento con

momentum (traingdm) y gradiente descendente con razón de

aprendizaje adaptativa (traingda), los resultados convergían a

mínimos locales similares obteniendo un error bastante grande

con los datos de validación; de esta forma el método LM fue

el que permitió el menor error posible. Por ultimo para

comprobar el funcionamiento de la red MLP entrenada, se

obtiene la salida de la red ante un conjunto de la base de datos

para así poder generar un Diagrama De Confusión el cual

permite analizar la exactitud de la clasificación que realiza la

red frente a los diferentes conjuntos (números).

Page 5: Reconocimiento de Caracteres Numéricos implementando RNA

5

Por otro lado para una mejor visualización del funcionamiento

de la red por parte del usuario, de manera aleatoria se

seleccionan números de la base de datos los cuales se

observan en una figura (utilizando showSamp2) y por la línea

de comando se obtiene la clasificación dada por la salida de la

MLP entrenada.

D. Reconocimiento de Caracteres utilizando SOM

La segunda arquitectura de ANN utilizada consistió en un

aprendizaje no supervisado utilizando Mapas Auto-

Organizados de Kohonen (SOM) (Anexo 4: charSOM). Para

este tipo de arquitectura se realiza un procedimiento muy

similar al realizado en los MLP. Inicialmente se pre –

procesaron los datos (imágenes), posteriormente se dividieron

los datos para entrenamiento y validación; y de igual forma se

realizó el entrenamiento del SOM. La configuración para el

entrenamiento se realizó con una vecindad máxima inicial de

15 la cual se reduciría a una vecindad de 1 en 4000

iteraciones. El mapa es una red de 15 x 15 (referido en codigo

como dimMap) neuronas cuya distancia entre neuronas será

calculada por el método de linkdist y el número de iteraciones

totales para el entrenamiento será de 5000.

Posterior al entrenamiento se realizó una etapa de

visualización utilizando el script del Anexo 5: SOMap a través

del cual se podrá ilustrar en una figura, ante que entradas

(caracteres del 0 – 9) de la etapa de entrenamiento se activan

cada una de las 15 x 15 neuronas del mapa auto organizando.

Cada uno de los ejes de la figura representa la posición en el

mapa de la neurona en una cuadricula(Grid). La activación

ante cierta entrada será codificada a través de un conjunto de

colores definido en el colormap el cual se presenta en la

Tabla.I.

Lo descrito anteriormente se realiza simulando el SOM ante

las entradas de entrenamiento mediante el comando sim del

software MATLAB (Fig.6). Este comando entrega un matriz

de dimensiones No. de Neuronas en SOM x Cantidad de

entradas, donde cada columna representa una de las entradas y

cada fila representa una de las 15 neuronas presentes en el

Mapa Auto Organizado. Realizando el análisis por columnas,

la neurona (fila) que presente un ‘1’ lógico será aquella que se

activó ante dicha entrada (columna). Posteriormente usando el

comando vect2ind (Fig.6) se logra saber para cada entrada

(columna) cuál de todas las neuronas se activó, esto ubicando

el índice respecto a las filas donde existía un ‘1’.

% Trained SOM Simulation OutNetT=sim(net,XinT);

% For each column(input) in the binary matrix, find

the position(index) of the neuron which got ctivated (i.e. has a logic'1')

index = vec2ind(OutNetT);

Fig6. Simulación de SOM y Busqueda de Neurona activada ante cierta entrada de entrenamiento

Posteriormente para cada uno de los posibles caracteres del

0 – 9 representados por el índice ‘j’, se analiza todo el rango

(rango de índice ‘i’) de los training examples correspondientes

a dicho carácter. Esto con el fin de saber la posición en el

mapa, de la neurona que se activó para el carácter ‘j’.

Utilizando las operaciones de división y residuo se logra

cambiar el valor dado por índex, desde un índice que

representa la posición de la neurona activada en el contexto de

una columna, a un conjunto de índices row o col que

representa la coordenada de la posición de la neurona en el

contexto de una matriz (Mapa). Finalmente a través de las

iteraciones se llena una matriz DT la cual contendrá el registro

de que neuronas se activaron para determinada entrada durante

la etapa de entrenamiento; este registro servirá como una clase

de “salida deseada” para logra realizar el análisis del SOM

durante la etapa de validación. De igual forma se llena la

matriz Map la cual relacionara la neurona activada con la

entrada ‘j’ con el colormap anteriormente definido usando el

comando imagesc(Map), el cual produce los colores (no el

texto) del mapa presentado en la (Fig.9) % Iterate to through all possible inputs (all characters (0-9)

for j = 1:length(numIndT)

% For each of the training examples of j-th character, check the position (row,col) of the

neuron that got activated

for i = charPos:numIndT(j)

% By using the division(/) and residue(rem) on index one transforms a "column position" i.e.

index, into a "matrix position" i.e. representing

the position of the neuron on the SOM map

row = ceil(index(i)/dimMap);

col = rem(index(i),dimMap);

Map(row,col)=j;

DT(row,col) = j-1;

Fig.7 Ubicación de Posición de la Neurona Activada ante Datos de

Entrenamiento en la matriz (Mapa) total del SOM

Consecutivamente, se realiza de nuevo la simulación de la red

(comando sim) utilizando un conjunto de imagenes. A la

matriz obtenida se le realiza el mismo procedimiento

anteriormente de obtener los índices (denominado indexV) y la

coordenada row o col de la neurona activada ante los datos de

validación. Para la validación, en el for interno con la variable

de iteración ‘i’ en vez de representar la activación de la

neurona como un color, se representara mediante un texto que

describe ante qué entrada se activó (Fig8).

Con el fin de no solo validar el comportamiento del SOM

visualmente como lo descrito en el apartado

B. Visualización de Imágenes, sino también poder validarlo

numéricamente. Se binarizaron con un numero de 11b cada

uno de los caracteres (posibles clusters) de la SOM, lo cual

permite utilizar el método plotconfussion como una

herramienta numérica de validación para saber la precisión de

clasificación total y para cada una de las clases que realiza el

SOM entrenado. Haciendo uso de este vector, se logra

construir dentro del for interno una salida deseada (DV) y una

salida real del SOM (Fig.8) para los datos de validación, esta

última utilizando la matriz anteriormente creada DT la cual

con base a la coordenada de la neurona permite saber en qué

clúster se ubicó esta neurona durante el entrenamiento y por

Page 6: Reconocimiento de Caracteres Numéricos implementando RNA

6

ende saber qué carácter clasificara. Finalmente con la salida

Deseada y la salida verdadera del SOM se logra realizar la

Tabla de Confusión del Mapa ante los datos de validación.

text (col,row,num2str(j-1));

% Desired Validation Output (DV)and Actual SOM

Validation Output (OutSOMV) DV = [DV baseVect(:,j)]; OutSOMV = [OutSOMV baseVect(:,DT(row,col)+1)];

Fig8. Obtención de salida del SOM y salida Deseada para datos de validación.

Tabla.I. Codificación de Colores para activación de Neuronas ante

Inputs

Carácter

(Input)

0

1

2

3

4

5

6

7

8

9

Color

(Codificación)

Fig.9 Ilustración de activación de Neuronas ante entradas durante el entrenamiento (Codificación por colores) y Predicción de SOM ante datos de

validación (Etiquetas numéricas en negro).

A continuación se muestra un diagrama de bloques (Fig.10)

el cual resume todas las etapas anteriormente mencionadas

que componen el algoritmo desarrollado para el

reconocimiento de caracteres numéricos:

Fig.10. Diagrama de Bloques de Algoritmo de Reconocimiento de Caracteres Numéricos

I. SIMULACIONES Y ANÁLISIS DE

RESULTADOS

A. Resultados Obtenidos de Arquitectura MLP

Con el objetivo de poder observar el correcto funcionamiento

y desempeño de este tipo de arquitectura (Multi-layer

Perceptron), la cual emplea aprendizaje supervisado, se realizó

una prueba utilizando la matriz de confusión, utilizada

precisamente para este tipo de entrenamientos, la cual se

define como una herramienta de visualización óptima que

brinda una información muy certera acerca de las predicciones

de cada clase, además de poder observar si el sistema

confunde dos clases por ejemplo.

Es importante saber que en una matriz de confusión cada

columna representa el número de predicciones de cada

clase, mientras que cada fila representa los casos en una clase

real.

Por tanto, realizando el comando en MATLAB y graficando

en este, se pudo encontrar los resultados mostrados por la

Fig.11

Fig.11 Matriz de confusión obtenida para las salidas del reconocimiento de

caracteres, haciendo uso de la arquitectura MLP.

Por tanto de la (Fig.11), se puede observar que

aproximadamente el 80.7% de las imágenes ingresadas fueron

clasificadas de manera correcta. Se puede observar que entre

los números mejores clasificados, se encuentra el número 1 el

cual, es el índice 2 en la matriz de confusión, debido a la

organización que se realizó siendo, el índice 1 el que

representa a el número 0, y así sucesivamente hasta el índice

10 el, cual representa el número 9. Así mismo los números 0,

1, 2, 3, 5 y 7 presentan de los mayores porcentajes de

reconocimiento (entre el 75 y 90%), debido a que dentro de la

base de datos se encuentra un mayor índice de números que

son válidos para la entrada a la red (recordando por todos los

Page 7: Reconocimiento de Caracteres Numéricos implementando RNA

7

filtros que pasa). También se puede observar que de manera

muy específica la red tiene problemas para distinguir el

número 8, debido a que 2 de los 4 números que son 8 los

clasifico mal, 1 de estos lo clasifico como número 2, y el otro,

como número 9. Evidentemente el problema de

reconocimiento de datos, como le sucede en específico al

número 8, es debido a la falta de datos en la entrada, lo cual

reduce las posibilidades de dar con un valor que para la red

sea fácil de reconocer, mientras que como se puede observar

para el número 1 que posee una base total de 34 imágenes,

lográ clasificar el 90% de manera correcta, mientras que 7 de

las mal clasificadas distribuidas en diferentes números no

afectan tanto el porcentaje, como si lo hacen las 2 mal

clasificadas para el numero 8. El número 9 es uno de los

mejores clasificados, pero no se puede considerar que aporte

demasiado al porcentaje global del sistema, debido a la poca

cantidad de números que se posee (7).

De manera general se puede observar que si se tuviera una

base más grande de datos disponibles para la entrada a la red,

como por ejemplo para el número 8 y el 6, se podría obtener

un porcentaje aún más elevado en el reconocimiento general

de la red.

B. Resultados Obtenidos de Arquitectura SOM

Para poder corroborar el funcionamiento y conocer el

desempeño del mapa auto-organizado (SOM) se generó un

mapa de verificación y una matriz de confusión como se

observa en las figuras 12 y 13 respectivamente.

Fig.12 Mapa de validación creado para las salidas del entrenamiento

obtenidos para la arquitectura SOM.

Fig.13 Matriz de confusión obtenida para las salidas del entrenamiento de

la arquitectura SOM.

La matriz de confusión obtenida muestra el desempeño de

cada número donde el índice 1 es el número 0 y así

sucesivamente hasta el índice 10 que representa el número 9,

el ultimo índice, el 11, representa los números que no fueron

clasificados en ninguna categoría. De la matriz de confusión

se obtuvo que el 81.1% de los datos fueron clasificados

correctamente, donde todos los números seleccionados por la

red como 1 (zona verde), 2 (zona aguamarina), 3 (zona roja), 7

(zona café), 8(zona azul cadete) y 9 (zona azul acero) fueron

100% correctos, esto también se observa en la (Fig.12),

debido a que las zonas de estos números contienen en cada

casilla únicamente el número que les corresponde. Por otro

lado según los datos ingresados el que mejor se clasificó fue el

número 7 (después del 8 número del cual solo hay una

muestra) ya que de los que debían ser 7 el 88.9% se clasifico

correctamente y el otro 11.1% activó una neurona que durante

el entrenamiento nunca se activó, es decir que este dato no se

clasificó en ninguno de los números, sino en la zona negra del

mapa (Fig.12). El número con más errores de clasificación es

el 4, donde de los datos ingresados que representaban este

número, solo el 66.7% (4 imágenes) se clasificó correctamente

los otros datos (2 imágenes) se clasificaron como 5 y el ultimo

no se clasifico en ningún número. El 4 mal clasificado como

un 5 se puede observar en el mapa (Fig.12) en la coordenada

(6,8) donde estos dos números se encuentran sobrepuestos,

adicionalmente según la matriz de confusión una imagen del

número 1 fue clasificado como un 4, pero esto no se puede

observar en el mapa de verificación debido a que el 1 presenta

la misma forma del lado derecho de un 4 por lo tanto al

sobreponerse no es evidente el error.

Page 8: Reconocimiento de Caracteres Numéricos implementando RNA

8

II. CONCLUSIONES

Se observó que no siempre al tener una gran cantidad

de datos en la entrada se poseerá un buen desempeño

de la red. Esto debido a que al ingresar como entrada

todos los pixeles de la imagen, la carga

computacional para el entrenamiento fue demasiado

elevada y de igual forma el desempeño no fue

significativamente alto.

Para la etapa de entrenamiento de ambas ANN (SOM

y MLP), se logró observar que es esencial extraer las

características (Feature Extraction) adecuadas como

la media, varianza y desviación estándar de

cuadrantes de la imagen, con el fin de que la red

pudiese aprender con una alto desempeño la

identificación de cada carácter (0-9).

El aumentar el tamaño del Mapa Auto Organizado

(SOM), permitió incrementar la selectividad que

tenía cada neurona, ya que se evitó que una sola

neurona se activara ante múltiples patrones de

diferentes caracteres. Permitiendo una mejor

clasificación por parte del SOM, evitando que las

zonas de activación quedasen sobrepuestas.

Se evidencio la importancia del plotconfusion debido

a que, a pesar de generar el mapa de colores (SOMap)

de validación, este solo nos permite observar

visualmente donde hubo errores y que números se

confundieron de una manera sencilla. Sin embargo no

ofrece información matemática sobre el desempeño

general de la red como si lo hace el plotconfusion, del

cual se puede extraer el desempeño total o por

categoría, es decir cuál fue el número mejor y peor

clasificado.

Fue necesario estandarizar (Color de carácter,

Resolución de Imágenes etc.) las características de

las imágenes de los caracteres, ya que durante el

entrenamiento se observó que si se ingresaban

caracteres tanto de color negro como blanco; se

afectaba negativamente la identificación de

caracteres, disminuyendo en gran manera el

desempeño de la red

Observando los SOM Input Planes, se puede concluir

que la característica estadística de Desviación

Estándar fue la entrada que menos aporto al

aprendizaje de las neuronas. Esto posiblemente se

debe a que la Desviación Estándar es la raíz cuadrada

de la varianza (otra de las entradas estadísticas

ingresadas a la red)

III. REFERENCIAS BIBLIOGRÁFICAS

[1] T. E. DE CAMPOS, B. R. BABU AND M. VARMA. Character

recognition in natural images. In Proceedings of the International

Conference on Computer Vision Theory and Applications

(VISAPP), Lisbon, Portugal, February 2009.

[2] MARIN. J.M. An Introduction to Neural Networks, Madrid,

España, January 2010. Archivo tomado del sitio web:

http://halweb.uc3m.es/esp/Personal/personas/jmmarin/esp/DM/tema

3dm.pdf.

[3] BAEZ GARCIA P. Introducción a las redes neuronales y aplicacion

a la investigación Atrofisica, Paris, Francia, March 2009. Archivo

tomado del sitio web:

http://www.iac.es/sieinvens/SINFIN/Sie_Courses_PDFs/NNets/conf

iac.pdf

[4] LOPEZ SOTELO J. A., CAICEDO BRAVO. Redes Neuronales

Artificiales, Cali, Colombia 2010.