Sei sulla pagina 1di 8

1

Reconocimiento de Dígitos Manuscritos


utilizando la Base de Datos MNIST
Alfaro Ponte – Carranza Olivera – Puelles Cáceres - Silva Obregón
Pontificia Universidad Católica del Perú, Lima - Perú

La segunda etapa consiste en la extracción de características, el


Resumen— El trabajo elaborado presenta el reconocimiento de cual nos llevó a obtener resultados aceptables, obteniendo un
dígitos manuscrito utilizando la base de datos MNIST el cual está vector de características que captura ciertas propiedades de los
conformada por 60,000 imágenes de diez dígitos y un conjunto dígitos. Los métodos que se utilizaron fueron el de
independiente de 10,000 dígitos para evaluar la performance del Representación Binaria [20], Wavelet Haar [3]y Proyección
clasificador. Se utilizó para el pre-procesamiento técnicas como la Poligonal[17].
binarización (Otsu), segmentación (flood fill) y la normalización
(Morphology Closing). Posteriormente se obtuvo el vector de La tercera etapa consiste en la clasificación, el cual luego de
características donde se capturaba ciertas propiedades de los
haber entrenado la data, se pudo realizar la clasificación de una
dígitos, utilizando métodos como Representación Binaria, Wavelet
Haar y Proyección Poligonal. Finalmente se pudo realizar la data de prueba utilizando los métodos de clasificación como
clasificación de los datos utilizando los métodos como Support Support Vector Machine SVM[9][10], K-Nearest
Vector Machine SVM, Naive Bayes y K-Nearest Neighbors. Neighbors[12] y Naive Bayes[11].

El mejor resultado de clasificación obtenido fue de 94.740% Finalmente se logra determinar que clasificador es el más
siendo este el menor porcentaje de tasa de error con 5.26% óptimo obteniendo cual fue la menor tasa de error que mostró
utilizando como método de clasificación Support Vector Machine como resultado.
y como extracción de características la técnica de Proyección
Poligonal.

Index Terms----Reconocimiento de dígitos, MNIST, Representación Adquisición de datos


Binaria, Support Vector Machine, Naive Bayes.

Pre-procesamiento Otsu, Flood Fill,


INTRODUCTION Morphology Closing

l reconocimiento de dígitos manuscritos es un problema de


E reconocimiento de caracteres, donde a través de un pre-
procesamiento y extracción de características se logra aprender Extracción de Binaries, Projection
a distinguir patrones de interés a partir de la experiencia, y características Polygonal, Wavelet Haar
tomar decisiones razonables con respecto a las categorías del 0
al 9 a las que pertenecen cada dígito, logrando de esta manera
su correcta clasificación.

El reconocimiento de dígitos para este trabajo, comienza desde Reconocimiento de Caracteres


la una primera etapa que consiste en la lectura de los datos de
los 70,000 mil imágenes comprendidos del 0 al 9 el cual
conforman 10 dígitos o clases 0[2][16], el pre-procesamiento SVM KNN NAIVE BAYES
utilizando diferentes técnicas como la binarización para la
reducción de información, la segmentación (Flood Fill) para
simplificar y/o cambiar la representación de una imagen en otra Figura 1: Esquema de funcionamiento para el reconocimiento de
más significativa logrando que sea fácil de analizar y finalmente dígitos manuscritos
la normalización usando la técnica de Morphology Closing;
obteniendo de esta manera la forma de una imagen suavizada y
más pequeña de los dígitos manteniendo su correlación espacial I. ADQUISICIÓN Y LECTURA DE DATOS
[3][4][6][8][13][14].
Selección del lenguaje de programación
Se experimentó los diversos lenguajes de programación
posibles para poder implementar el sistema para el
2

reconocimiento de dígitos manuscritos entre los cuales fueron


java y Python. Al ejecutar la lectura de datos en java, se notó
que dicha lectura y el pre-procesamiento eran demasiado lentos,
además que existía poca información acerca de sistemas de
reconocimientos de manuscritos ya implementados con este
lenguaje. Lo contrario sucedía con Python el cual existía
abundante información y librerías desarrolladas para el tema de
aprendizaje de máquina, es por eso que el lenguaje de
programación utilizado para este trabajo fue Python.

Entre las librerías utilizadas está el Open CV, el cual es una


biblioteca libre de visión artificial que contiene más de 500
funciones para el reconocimiento de objetos, calibración de
cámaras y visión robótica. El Numpy que le agrega mayor
soporte para vectores o matrices y la librería Matplotlib que se
utiliza para la generación de gráficos a partir de datos
contenidos en listas y arreglos.

Adquisición de los datos


La base de datos utilizada para el reconocimiento de dígitos
manuscritos fue el conjunto de datos MNIST obtenida desde
(http://yann.lecun.com/exdb/mnist/), el cual consiste en un
conjunto de datos de 60,000 imágenes del 0 al 9 para entrenar
el Sistema de reconocimiento y otros 10,000 dígitos para
evaluar el performance del clasificador, cada digito está
conformado por una escala de grises con un tamaño de 28x28
Figura 3: Función para la lectura de datos
pixeles.

II. PRE-PROCESAMIENTO DE LOS DATOS

El pre-procesamiento de los datos consiste en un conjunto de


operaciones (binarizar, eliminar ruido, aumentar contraste, etc.)
realizadas a las imágenes leídas del conjunto de datos MNIST
el cuál se aplica para reducir la influencia del ruido o algunas
deformaciones que pueda presentar el objeto, normalizándola y
adaptándola para su mejor identificación.

Se utilizaron técnicas para la binarización de las imágenes


mediante el método OTSU, la segmentación utilizando Flood
Fill y la normalización aplicando Morphology Closing.

Método de binarización - Otsu.


Otsu es un método de umbralización de imágenes en escala de
grises, consiste en calcular el valor umbral de forma que la
Figura 2: Dígitos aleatorios de MNIST dispersión dentro de cada segmento sea lo más pequeña posible,
pero al mismo tiempo la dispersión sea lo más alta posible entre
segmentos diferentes. Para ello se calcula el cociente entre
Lectura de los datos ambas variancias y se busca un valor umbral para el que este
Para la lectura de datos se utilizó el lenguaje de programación cociente sea máximo.
Python, las librerías numpy y struct; las cuales nos permite
realizar la lectura de los dígitos encontrados en los archivos El primer paso que se realizó fue la tarea de umbralización con
binarias de la web http://yann.lecun.com/exdb/mnist/. el fin de binarizar las imágenes. Esta necesidad nace a partir de
que las herramientas a usar para el procesado de las mismas
trabajan con imágenes binarias.

El valor de umbralización se decidió tras observar el conjunto


de imágenes MNIST y realizar varias pruebas con diferentes
valores para el umbral. En el conjunto de datos se podían
apreciar perfectamente dos clases: uno alrededor de 255 que
3

representa al fondo de la imagen y otro alrededor de 0 que (como pueden ser líneas cercanas de errores que distorsionaban
representa el carácter que conforma el dígito. al dígito).

Tras varias pruebas y observaciones encontradas, se decidió A continuación, se muestra el código implementado del método
utilizar el método de Otsu el cual determinó de forma de segmentación Flood Fill.
automática el mejor umbral en un punto medio entre las dos 
clases de la imagen, de tal forma que la imagen binarizada
contemplase estos píxeles más suaves.

A continuación, se muestra el código implementado del método


de binarización Otsu.


Figura 6: Método de segmentación Flood Fill

Figura 4: Método de binarización Otsu Como resultado se obtiene la siguiente imagen:

Como resultado se obtiene la siguiente imagen:

Figure 7: Imagen segmentada con el método Flood Fill

Figura 5: Imagen binarizada con el método Otsu



Método de Normalización - Morphology Closing:
La normalización de las imágenes es utilizada para obtener las
dimensiones adecuadas en todas las imágenes en una base de
Método de Segmentación - Flood Fill
La segmentación de una imagen consiste en la división o datos.
partición de la imagen en varias zonas o regiones homogéneas
y disjuntas a partir de su contorno, su conectividad, o en En el conjunto de imágenes existían una gran cantidad de
términos de un conjunto de características de los píxeles de la pixeles blancos que alrededor o dentro de sus caracteres
imagen que permitan discriminar unas regiones de otras. Los representativos el cual hacia que el digito no este conformado
tonos de gris, la textura, los momentos, la magnitud del completamente por sus pixeles.
gradiente, la dirección de los bordes, las modas de los tonos de
gris en ventanas 3x3, 7x7 y 15x15, etc., son características a Para esto se utilizó la técnica de normalizado Morphology
utilizar para la segmentación. Closing cuyo principal objetivo era autocompletar los pixeles
faltantes logrando así un digito más representativo, sin provocar
La operación de segmentación trata de distinguir si un píxel en ella alguna distorsión de importancia
pertenece, o no, a un objeto de interés y, por lo tanto, produce 
una imagen binaria. A continuación, se muestra el código implementado del método
de normalización Morphology Closing.
La función Flood Fill extrae o marca una zona conexa en una
imagen donde se mantiene una cierta similaridad entre los
pixeles. Comienza en un pixel inicial y se va extendiendo, como
si de un líquido derramado se tratara, por los vecinos, siempre
que el valor de la función de imagen en estos se mantenga en Figura 8: Método de normalización Morphology Closing
un cierto rango, habitualmente próximo al valor en el pixel
inicial. Como resultado se obtiene la siguiente imagen:
Tras anteriormente haber aplicado la binarización de las
imágenes de la base de datos MNIST, se procedió a la

eliminación de trazos espurios que no pertenecían al carácter
4

Figura 12: Método de proyección poligonal utilizando un cuadrado


como polígono de referencia

 Wavelet Haar
Figure 9: Imagen normalizada con el método Morphology Closing Este método fue desarrollado por Alfred Haar, en él se
encuentran una secuencia de funciones que permiten analizar y
reconocer patrones. Se han utilizado diferentes tipos de
III. EXTRACIÓN DE CARACTERÍSTICAS transformadas como la contínua isotrópica, con orientación
angular y la transformada discreta. Con los coeficientes de
aproximación de estas transformadas se forma una imagen
Las características tienen que ser robustas en el sentido que su
suavizada y con menor dimensionalidad de los dígitos. Luego
extracción debe ser insensible al ruido de captura e iluminación,
con las transformadas se construye el vector de características
asimismo las características deben servir para distinguir objetos
que contiene propiedades de los dígitos como su orientación, el
de clases distintas.
gradiente y la curvatura, los cuales son obtenidos con la
Para este proceso se ha seleccionado 3 métodos de extracción,
entropía y energía de la transformada.
representación binaria, proyección poligonal y Wavelet Haar.

Representación Binaria
En este método se toma un arreglo de 2x2 del vector de la
imagen (que contiene ceros y unos), luego se hace la
representación binaria de izquierda a derecha y de arriba hacia
abajo, como en la figura X y queda de la siguiente forma 0001
que en decimal es 1; es este número el que se reemplaza por el
vector de 2 dimensiones, de esta forma se reduce la
dimensionalidad a 14 x 14 si se realiza el proceso para los
demás grupos de arreglos (2x2)

Figura 13: Ejemplo de la transformada wavelet discreta en dos


Figura 10: Obtención de arreglo de 2x2 para la visualización y dimensiones utilizando la función Haar. (a) Imagen original de un
posterior conversión a decimal dígito 5, (b) 1 paso de la transformada y (c) 2 pasos de la
transformada
Al final del proceso se obtiene la representación que se
muestra en la figura Y: Los resultados obtenidos para el entrenamiento de los 60,000
datos utilizando las fases anteriormente vistas como el pre
procesamiento y extracción de características con sus
respectivas técnicas se muestran a continuación.

Tareas Dimensión Tiempo (segundos)


Lectura 784 5.594
Pre procesado 784 1.953
Proyección Poligonal 112 18.432
Figura 12: Aplicación de método de binarización. Wavelet Haar y Proyección
Poligonal 56 13.346
Proyección Poligonal Representación Binaria y
Este método permite obtener un vector de características Proyección Poligonal 56 117.219
poligonales a partir de la medición de la distancia desde un Total 156.544
polígono de referencia, para el caso ejemplo, un cuadrado
(Figura 1), hasta el contorno de la imagen. La distancia se mide Tabla 1: Tiempos obtenidos para la data de entrenamiento
sobre una imagen binaria normalizada
5

IV. CLASIFICACIÓN Para nuestro caso, para el valor del costo asignado es de 1 y el
de gamma 0.001.A continuación se muestra el código
 implementado del método de clasificación support vector
Support Vector Machine machine.
El método de clasificación support vector machine consiste en
que, dado un conjunto de puntos en un espacio, en el que cada
uno de ellos pertenece a una de varias posibles categorías,
construyendo un modelo capaz de predecir si un punto nuevo
(cuya categoría desconocemos) pertenece a una categoría o a la
otra a través del análisis de datos y reconocimiento de patrones.

La SVM busca un hiperplano que separe de forma óptima a los


puntos de una clase de la de otra. Figura 15: Método de clasificación Support Vector Machine
Naive Bayes
Existe diferentes tipos de SVMs con la finalidad mejorar las Es un método basado en la teoría de la probabilidad, es uno de
técnicas de clasificación MNIST dataset. Los algoritmos de los algoritmos de aprendizaje práctico más utilizados por su
clasificación con los siguientes 4 tipos de Kernel: SVM con sencillez debido a su implementación.
kernel Lineal, SVM Lineal, SVM con Kernel RBF y SVM con
Kernel Polinomial. Es una técnica de clasificación y predicción supervisada ya
que necesita de ejemplos previos a través de un entrenamiento
En las versiones de SVM con Kernel lineal y los SVM Lineal que nos ayuden a clasificar los datos a evaluar, Naive Bayes nos
tal y como su nombre lo indican, son métodos lineales. Sin permite construir modelos que predicen la probabilidad de
embargo, con las SVM con kernel RBF y el Kernel Polinomial, resultados, tomando en cuenta las características que
son complejas decisiones no lineales, aprendidas durante el determinan a que clase pertenece
entrenamiento. De esta manera podemos utilizar el RBF y
Polinomial para modelar límites de decisión compleja y no A continuación, se muestra el código implementado del
lineal. método de clasificación Naive Bayes.
En SVM, existen dos importantes hiperparametros para dar un
equilibrio entre el margen y el límite de decisión. Primero es el
costo (C) de clasificación errónea, es decir dónde establecer el
equilibrio, entre hacer la división más complicada del
hiperplano versus cuánto queremos para dividir el conjunto de
datos de entrenamiento exactamente. Cuando C es igual a 1 Figura 16: Método de clasificación Naive Bayes
entonces el ancho del margen para la clasificación es menor y
cuando C está más cerca de 0 entonces el margen de K-Nearest Neighbors (KNN)
clasificación es el máximo. El método KNN (Vecinos Cercanos) consiste en extraer
información de un conjunto de datos conocidos para clasificar
El segundo parámetro es el Gamma (g), que es el grado de nuevos datos o agrupar existentes.
tensión que queremos que tenga el RBF (g es inversamente Este método supone que los vecinos más cercanos nos dan la
proporcional a la desviación estándar de los Gaussians). mejor clasificación y esto se hace utilizando todos los atributos.
Sin embargo, los costos computacionales pueden sr caros en la
clasificación si los individuos de entrenamiento son muchos.

En el presente trabajo utilizamos este clasificador para


encontrar un modelo para predecir la clase a la que pertenecería
cada registro. El valor de K que utilizamos fue 1, para que se
asignara el vecino más próximo, no encontramos otro valor más
óptimo para la clasificación.
Para este método utilizamos la data de entrenamiento y el de
prueba.

A continuación, se muestra el código implementado del


método de clasificación KNN.

Figura 14: Clasificación Support Vector Machine


6

1 1 1108 0 3 0 1 4 6 3 7
2 3 5 974 11 4 1 0 7 9 0
3 1 1 15 941 0 35 1 7 13 17
4 3 0 3 0 931 1 4 17 4 24
5 1 0 0 8 0 806 9 0 10 2
6 7 6 0 1 4 9 924 0 7 0
Figura 17: Método de clasificación K-Nearest Neighbors 7 1 0 9 16 8 2 0 921 13 73
8 17 15 21 25 2 23 2 7 858 5
9 1 0 1 2 31 7 0 63 9 872

V. EXPERIMIENTACIÓN Tabla 4: Support Vector Machine con Representación Binaria


y Proyección Poligonal
Se utilizó los 10,000 datos de prueba con los clasificadores
anteriormente definidos, aplicando para cada uno de ellos los
Segunda experimentación:
diferentes tipos de extracción de características.
Para la segunda experimentación se utilizó el método de
clasificación k-Nearest Neighbors utilizando los métodos de
Primera experimentación:
extracción de características como: Proyección Poligonal para
Para la primera experimentación se utilizó el método de
la primera prueba, Wavelet Haar y Proyección Poligonal para
clasificación Support Vector Machine utilizando los métodos
la segunda prueba y Representación Binaria y Proyección
de extracción de características como: Proyección Poligonal
Poligonal para la tercera prueba. Para los tres casos utilizando
para la primera prueba, Wavelet Haar y Proyección Poligonal
el clasificador KNN se asignó el valor de K igual a 1 debido a
para la segunda prueba y Representación Binaria y Proyección
que al dar un mayor valor no realizaba correctamente la
Poligonal para la tercera prueba. Para los tres casos utilizando
clasificación de los dígitos y tardaba demasiado tiempo. Los
el clasificador SVM se asignó el valor del costo (C) igual a 1 y
resultados obtenidos se muestran a continuación.
gamma igual a 0.001. Los resultados obtenidos se muestran a
continuación.
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 945 0 20 9 9 11 14 1 88 9
0 952 0 6 0 3 5 9 0 36 5
1 1 1110 7 6 2 0 3 2 8 8
1 0 1108 0 1 0 0 3 4 2 7
2 5 3 889 24 8 1 4 7 12 3
2 3 8 984 8 8 0 6 8 9 1
3 2 3 45 866 1 55 2 9 8 11
3 2 0 12 962 0 25 1 6 8 12
4 3 1 1 1 865 3 2 19 9 14
4 4 0 1 0 939 3 1 11 3 11
5 1 0 1 18 2 728 6 0 16 4
5 1 2 0 7 0 833 2 1 11 4
6 5 7 14 3 9 18 919 0 13 0
6 5 4 2 0 4 6 933 0 7 0
7 2 1 8 20 11 5 0 845 15 48
7 1 0 9 12 6 1 0 939 11 25
8 15 8 42 49 9 59 8 15 788 21
8 11 11 16 18 1 12 3 5 886 6
9 1 2 5 14 66 12 0 130 17 891
9 1 2 2 2 21 7 0 54 1 938
Tabla 5: KNN con Proyección Poligonal
Tabla 2: Support Vector Machine con Proyección Poligonal

0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 938 1 13 8 10 12 15 1 77 6
0 945 0 9 3 2 7 14 0 48 9
1 1 1101 1 3 5 0 3 6 4 8
1 1 1108 0 3 0 1 4 6 3 7
2 3 4 898 18 7 3 4 5 7 4
2 3 5 974 11 4 1 0 7 9 0
3 6 4 48 865 1 62 2 15 19 13
3 1 1 15 941 0 35 1 7 13 17
4 1 2 3 0 877 3 3 20 4 15
4 3 0 3 0 931 1 4 17 4 24
5 2 0 4 32 1 725 8 0 12 4
5 1 0 0 8 0 806 9 0 10 2
6 9 7 11 2 9 16 917 0 9 0
6 7 6 0 1 4 9 924 0 7 0
7 1 2 9 15 10 7 0 871 4 53
7 1 0 9 16 8 2 0 921 13 73
8 18 14 41 48 12 56 6 15 823 14
8 17 15 21 25 2 23 2 7 858 5
9 1 0 4 19 50 8 0 95 15 892
9 1 0 1 2 31 7 0 63 9 872
Tabla 6: KNN con Wavelet Haar y Proyección Poligonal
Tabla 3: Support Vector Machine con Wavelet Haar y
Proyección Poligonal
0 1 2 3 4 5 6 7 8 9
0 938 1 13 8 10 12 15 1 77 6
1 1 1101 1 3 5 0 3 6 4 8
0 1 2 3 4 5 6 7 8 9
2 3 4 898 18 7 3 4 5 7 4
0 945 0 9 3 2 7 14 0 48 9
3 6 4 48 865 1 62 2 15 19 13
7

4 1 2 3 0 877 3 3 20 4 15 Tabla 10: Naive Bayes con Representación Binaria y


5 2 0 4 32 1 725 8 0 12 4 Proyección Poligonal
6 9 7 11 2 9 16 917 0 9 0
7 1 2 9 15 10 7 0 871 4 53 Finalmente, para los 10,000 datos de prueba, se ha puesto en
8 18 14 41 48 12 56 6 15 823 14 una tabla general los tiempos obtenidos digito por digito en sus
9 1 0 4 19 50 8 0 95 15 892 diferentes etapas de lectura, pre procesamiento y extracción de
características.
Tabla 7: KNN con Representación Binaria y Proyección
Poligonal Tiempo (segundos)

Tercera experimentación:

Proyección
Wavelet Representación

Elementos

procesado

Poligonal
Número

Lectura
Para la tercera experimentación se utilizó el método de Haar y Binaria y

Pre
clasificación Naive Bayes utilizando los métodos de extracción Proyección Proyección
de características como: Proyección Poligonal para la primera Poligonal Poligonal
prueba, Wavelet Haar y Proyección Poligonal para la segunda 0 980 0.297 0.031 0.281 0.203 1.938
prueba y Representación Binaria y Proyección Poligonal para 1 1135 0.093 0.020 0.313 0.282 2.109
la tercera prueba. Los resultados obtenidos se muestran a 2 1032 0.094 0.031 0.297 0.219 2.016
continuación. 3 1010 0.094 0.031 0.313 0.266 1.962
4 982 0.094 0.031 0.307 0.281 1.938
0 1 2 3 4 5 6 7 8 9 5 892 0.078 0.046 0.250 0.203 1.793
0 802 3 2 0 0 1 3 0 7 1 6 958 0.070 0.047 0.265 0.203 1.875
7 1028 0.078 0.031 0.297 0.234 1.949
1 0 1062 1 3 0 2 2 2 5 4
8 974 0.078 0.031 0.312 0.257 1.938
2 19 12 964 692 15 154 10 18 10 12
9 1009 0.092 0.062 0.344 0.219 1.969
3 0 0 0 0 0 0 0 0 0 0
4 9 9 4 8 811 90 5 5 6 8
Tabla 11: Tiempos obtenidos dígito por dígito
5 0 0 0 0 0 2 0 0 0 0
6 31 3 3 0 7 3 910 0 9 0
Tareas Dimensión Tiempo (segundos)
7 1 0 12 109 11 3 0 768 10 5
8 82 45 45 124 46 449 27 31 788 11 Lectura 784 0.793
9 36 1 1 74 92 188 1 204 139 968 Pre procesado 784 0.313
Proyección Poligonal 112 2.838
Wavelet Haar y Proyección Poligonal 56 2.219
Tabla 8: Naive Bayes con Proyección Poligonal Representación Binaria y Proyección
56 18.587
Poligonal
0 1 2 3 4 5 6 7 8 9 Total 24.750
0 921 4 39 3 6 16 258 0 100 2
1 4 1105 22 3 5 7 158 6 112 12 Tabla 12: Tiempos obtenidos para todos los dígitos
2 0 0 0 0 0 0 2 0 0 0
3 21 11 803 998 9 555 215 657 512 75
4 34 15 168 6 962 314 325 364 249 920 VI. RESULTADOS OBTENIDOS
5 0 0 0 0 0 0 0 1 0 0
6 0 0 0 0 0 0 0 0 0 0
A continuación, se muestra una tabla de los resultados
7 0 0 0 0 0 0 0 0 0 0
obtenidos por clasificador y extracción de características
8 0 0 0 0 0 0 0 0 1 0
aplicadas.
9 0 0 0 0 0 0 0 0 0 0
Support
Tabla 9: Naive Bayes con Wavelet Haar y Proyección k-Nearest Naive
Vector
Poligonal Neighbors Bayes
Machine
Predicción
0 1 2 3 4 5 6 7 8 9 Proyección 108.479 18.993 13.755
(segundos)
0 921 4 39 3 6 16 258 0 100 2 Poligonal
Accuracy (%) 94.740 88.460 70.750
1 4 1105 22 3 5 7 158 6 112 12 Wavelet Haar Predicción
2 0 0 0 0 0 0 2 0 0 0 40.876 10.135 0.547
y Proyección (segundos)
3 21 11 803 998 9 555 215 657 512 75 Poligonal Accuracy (%) 92.800 89.070 39.870
4 34 15 168 6 962 314 325 364 249 920 Representació Predicción
5 0 0 0 0 0 0 0 1 0 0 41.780 10.216 0.531
n Binaria y (segundos)
6 0 0 0 0 0 0 0 0 0 0 Proyección
7 0 0 0 0 0 0 0 0 0 0 Accuracy (%) 92.800 89.070 39.870
Poligonal
8 0 0 0 0 0 0 0 0 1 0
9 0 0 0 0 0 0 0 0 0 0 Tabla 1: Comparación de todos los resultados obtenidos.
8

VII. CONCLUSIONES [6] A. Jain “Fundamentals of Digital Image Processing”, Prentice-Hall, 1986,
p 387.
[7] D. Vernon “Machine Vision”, Prentice-Hall, 1991, pp 78 - 79.
 El lenguaje de programación Python por su facilidad de [8] Itseez (2016, mayo, 19) More Morphology Transformations [Online]
Accesible:
aprendizaje, variedad de librerías y portabilidad, es una http://docs.opencv.org/2.4/doc/tutorials/imgproc/opening_closing_hats/o
herramienta muy recurrente para la realización de este tipo pening_closing_hats.html
de trabajos. También se utilizaron las librerías Nympy que [9] Itseez (2016, Junio, 11) Introduction to Support Vector Machines [Online]
nos permite trabajar con arreglos de gran dimensionalidad Accesible:
http://docs.opencv.org/2.4/doc/tutorials/ml/introduction_to_svm/introdu
sin utilizar mucho tiempo y la la librería OpenCV que está
ction_to_svm.html#introductiontosvms
escrita en C++. [10] Itseez (2016, junio, 11) Support Vector Machines for Non-Linearly
 Al tratarse de dígitos escritos a mano se pudo notar que la Separable Data [Online] Accesible:
reducción por simple descarte de pixeles no iba a ser http://docs.opencv.org/2.4/doc/tutorials/ml/non_linear_svms/non_linear_
svms.html#nonlinearsvms
posible ya que, si dicho descarte funcionó para una [11] Itseez (2016, mayo, 19) Normal Bayes Classifier [Online] Accesible:
imagen, en otra podríamos estar perdiendo información. http://docs.opencv.org/2.4.13/modules/ml/doc/normal_bayes_classifier.h
 Las técnicas utilizadas en la etapa de pre procesamiento tml
nos permiten obtener imágenes de los dígitos con mayor [12] Itseez (2016, mayo, 19) K-Nearest Neighbors [Online] Accesible:
http://docs.opencv.org/2.4.13/modules/ml/doc/k_nearest_neighbors.html
nitidez y con valores por pixel que van de 0 a 255. [13] Itseez (2016, mayo, 19) Image Filtering [Online] Accesible:
 En la etapa de la obtención del vector de características, http://docs.opencv.org/2.4.13/modules/imgproc/doc/filtering.html
notamos que la técnica de representación binaria y la de [14] Robot Logs (2015, Julio, 26) ¿Cómo filtrar e ruido de una máscara con
OpenCV? [Online] Accesible:
Wavelets Haar, nos permiten reducir la imagen en la
http://robologs.net/2015/07/26/como-filtrar-el-ruido-de-una-mascara-
proporción, pero la técnica Wavelets Haar nos permite con-opencv/
obtener una imagen con mejor nitidez. [15] Ming Wu, Zhen Zhang (2014, septiembre, 05)
 El clasificador Naive Bayes fue uno de los métodos de https://www.researchgate.net/publication/228685853_Handwritten_Digi
t_Classification_using_the_MNIST_Data_Set [Online] Accesible:
clasificación más rápidos, pero fue el que obtuvo el más https://www.researchgate.net/publication/228685853_Handwritten_Digi
bajo porcentaje de exactitud de reconocimiento de dígitos, t_Classification_using_the_MNIST_Data_Set
demostrando que para este tipo de labores no es uno de los [16] Cheng-Lin Liu; Nakashima, K.; Sako, H.; Fujisawa, H., "Handwritten
clasificadores más adecuados. digit recognition using state-of-the-art techniques," Frontiers in
Handwriting Recognition, 2002. Proceedings. Eighth International
 El clasificado KNN a pesar de ejecutarse en buen tiempo Workshop on, vol., no., pp.320,325, 2002.
(10.135 segundos con Wavelet Haar y Proyección [17] C. Suen and J.Tan, “Analysis of errors of handwritten digits made by a
Poligonal) presenta un porcentaje menor al 90%, haciendo multitude of classifiers.” Pattern Recognition Letters, vol 40, pp,
que este clasificador no sea el más adecuado para para su 18161824,2007.
[18] Otsu, N. 1979. A threshold selection method from gray level histogram.
utilización en la práctica. IEEE Trans. Systems Man Cybern. 9 (1), 62–66.
 El mejor resultado fue de 94.740% con un tiempo de [19] Charles K. Chui, “An Introduction to Wavelets”, Academic Press, 1992,
108.479 segundos utilizando como clasificador Support San Diego, ISBN 0585470901
Vector Machine y método de extracción de características [20] Peter Harrington, “Machine Learning in Action”. 2012. Manning
Publications Co. Capítulo 2, pp 18-21
Proyección Poligonal, obtenido un vector de 112 [21] L. Breiman, “Random Forest”, Machine Learning, Kluwer Academic
dimensiones que representa el contorno del digito a Publishers, Vol 45, no 1, pp 5-32
reconocer, pero el principal problema de esta técnica es [22] L. Maria Seijas, “Reconocimiento de patrones utilizando técnicas
que los dígitos que contiene espacios vacíos (como él 8 y estadísticas y conexionistas aplicadas a la clasificación de dígitos
manuscritos. Universidad de Buenos Aires.
9) pueden llegarse a ser confundidos, ya que esta técnica
los considera como sólidos. Para poder solucionar este
problema se recomiendo incrementar los valores del
vector de características obtenido no sólo contando los
pixeles vacíos que existen desde un extremo al número,
sino considerando todos los pixeles vacíos (con 0) de
extremo a extremo.

REFERENCIAS

[1] Gustav. (2012, junio 18). MNIST to numpy [Online]. Accesible:


http://g.sweyla.com/blog/2012/mnist-numpy/
[2] Comunidad Scipy (2015, octubre 18) Numpy – Data types [Online].
Accesible:
http://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html
[3] Filip Wasilewski (31, agosto, 2012) PyWavelets - Discrete Wavelet
Transform in Python [Online] Accesible:
http://www.pybytes.com/pywavelets/
[4] R. Gonzales y R. Woods, “Digital Image Processing” Addison-Wesley
Publishing Company, 1192, pp. 524–552.
[5] R. Haralick and L. Shapiro “Computer and Robot Vision”, Vol. 1,
Addison-Wesley Publishing Company, 1992, pp 174 - 185.

Potrebbero piacerti anche