Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
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
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.
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
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).
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
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
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.
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.