1
Reconocimiento Reconocimiento de Dígitos Manuscritos utilizando la Base de Datos MNIST Alfaro Ponte – Carranza Carranza Olivera – Puelles Puelles Cáceres - Silva Obregón Pontificia Universidad Universidad Católica del Perú, Lima - Perú
Resumen — El trabajo elaborado presenta el reconocimiento de dígitos manuscrito utilizando la base de datos MNIST el cual está conformada por 60,000 imágenes de diez dígitos y un conjunto independiente de 10,000 dígitos para evaluar la performance del clasificador. Se utilizó para el pre-procesamiento técnicas como la binarización (Otsu), segmentación (flood fill) y la normalización (Morphology Closing). Posteriormente se obtuvo el vector de características donde se capturaba ciertas propiedades de los dígitos, utilizando métodos como Representación Binaria, Wavelet Haar y Proyección Poligonal. Finalmente se pudo realizar la clasificación de los datos utilizando los métodos como Support Vector Machine SVM, Naive Bayes y K-Nearest Neighbors. El mejor resultado de clasificación obtenido fue de 94.740% siendo este el menor porcentaje de tasa de error con 5.26% utilizando como método de clasificación Support Vector Machine y como extracción de características la técnica de Proyección Poligonal.
I ndex T erms----R rms---- R econoc conocii mi ento de dí gi tos, tos, M NI ST, ST , R epr esenta sentación ción Binaria, Support Vector Machine, Naive Bayes.
La segunda etapa consiste en la l a extracción de características, el cual nos llevó a obtener resultados aceptables, obteniendo un vector de características que captura ciertas propiedades de los dígitos. Los métodos que se utilizaron fueron el de Representación Binaria [20], [20], Wavelet Haar [3]y [3]y Proyección Poligonal[17]. Poligonal[17]. La tercera etapa consiste en la clasificación, el cual luego de haber entrenado la data, se pudo realizar la clasificación de una data de prueba utilizando los métodos de clasificación como Support Vector Machine SVM[9][10], SVM [9][10], K-Nearest Neighbor s[12] s[12] y Naive Bayes[11]. Baye s[11]. Finalmente se logra determinar que clasificador es el más óptimo obteniendo cual fue la menor tasa de error que mostró como resultado.
Adquisición de datos
Pre-procesamiento
I NTRODUCTION
E
l reconocimiento de dígitos manuscritos es un problema de reconocimiento de caracteres, donde a través de un pre procesamiento y extracción de características características se logra aprender aprender a distinguir patrones de interés a partir de la experiencia, y 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. clasificación. El reconocimiento de dígitos para este trabajo, comienza desde 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 0[2][16], el pre-procesamiento 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 representación de una imagen en otra más significativa logrando que sea fácil de analizar y finalmente 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 [3][4][6][8][13][14].
Extracción de características
Otsu, Flood Fill, Morphology Closing
Binaries, Projection Polygonal, Wavelet Haar
Reconocimiento de Caracteres
SVM
KNN
NAIVE BAYES
F igura 1: 1: Esquema de funcionamiento para el reconocimiento de dígitos manuscritos
I. ADQUISICIÓN Y LECTURA DE DATOS Selección del lenguaje de programación
Se experimentó los diversos lenguajes de programación posibles para poder implementar implementar el sistema para el
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
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 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 utilizado para este este trabajo fue Python. 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 (http://yann.lecun.com/exdb/mnist/) 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 pixeles.
lectura de datos F igura 3: Función para la lectura
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.
F igura 2: Dígitos aleatorios de MNIST
Lectura de los datos
Para la lectura de datos se utilizó el lenguaje de programación Python, las librerías numpy y struct; las cuales nos permite realizar la lectura de los dígitos encontrados en los archivos
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 dispersión dentro de cada segmento sea lo más pequeña posible, pero al mismo tiempo la la dispersión dispersión sea lo más alta posible entre segmentos diferentes. Para ello se calcula el cociente entre ambas variancias y se busca un valor umbral para el que este cociente sea máximo. El primer paso que se realizó fue la tarea de umbralización con
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
3 representa al fondo de la imagen y otro alrededor de 0 que representa el carácter que conforma el dígito.
(como pueden ser líneas cercanas de errores que distorsionaban al dígito).
Tras varias pruebas y observaciones encontradas, se decidió utilizar el método de Otsu el cual determinó de forma 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 implementado del método de segmentación Flood Fill.
A continuación, se muestra el código implementado implementado del método de binarización Otsu.
F igura 6: Método de segmentación segmentación Flood Fill F igura 4: 4: Método de binarización Otsu Otsu
Como resultado se obtiene la siguiente imagen:
Como resultado se obtiene la siguiente imagen:
método Flood Fill F igure 7: Imagen segmentada con el método método Otsu F igura 5: Imagen binarizada con el método
Método de Segmentación - Flood Fill
La segmentación de una imagen consiste en la división o partición de la imagen en varias zonas o regiones homogéneas y disjuntas a partir de su contorno, su conectividad, o en términos de un conjunto de características de los píxeles de la imagen que permitan discriminar unas regiones de otras. Los tonos de gris, la textura, los momentos, la magnitud del 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 utilizar para la segmentación. La operación de segmentación trata de distinguir si un píxel pertenece, o no, a un objeto de interés y, por lo tanto, produce produce una imagen binaria. 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 inicial y se va extendiendo, como si de un líquido derramado se tratara, por los vecinos, siempre
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 datos. En el conjunto de imágenes existían una gran cantidad de pixeles blancos que alrededor o dentro de sus caracteres representativos el cual hacia que el digito no este conformado completamente completamente por sus pixeles. Para esto se utilizó la técnica de normalizado Morphology Closing cuyo principal objetivo era autocompletar los pixeles faltantes logrando así un digito más representativo, sin provocar en ella alguna distorsión de importancia A continuación, se muestra el código implementado del método de normalización Morphology Closing.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
4
proyección poligonal utilizando un cuadrado F igura 12: 12: Método de proyección como polígono de referencia
Wavelet Haar método Morphology Closing F igure 9: Imagen normalizada con el método
III. EXTRACIÓN DE CARACTERÍSTICAS Las características tienen que ser robustas en el sentido que su extracción debe ser insensible al ruido de captura e iluminación, asimismo las características deben servir para distinguir objetos de clases distintas. Para este proceso se ha seleccionado 3 métodos de extracción, representación binaria, proyección poligonal y Wavelet Haar.
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 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 suavizada y con menor dimensionalidad de los dígitos. Luego con las transformadas se construye el vector de características que contiene propiedades de los dígitos como su orientación, el gradiente y la curvatura, los cuales son obtenidos con la entropía y energía de la transformada.
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)
F igura 10: 10: Obtención de arreglo de 2x2 para la visualización y posterior conversión a decimal decimal
Al final del proceso se obtiene la representación que se muestra en la figura Y:
transformada wavelet discreta discreta en dos F igura 13: 13: Ejemplo de la transformada dimensiones utilizando la función Haar. (a) Imagen original de un dígito 5, (b) 1 paso de la transformada y (c) 2 pasos de la transformada
Los resultados obtenidos para el entrenamiento de los 60,000 datos utilizando las fases anteriormente vistas como el pre procesamiento procesamiento y extracción de características características con sus respectivas técnicas se muestran a continuación. Tareas Lectura Pre procesado Proyección Poligonal
Dimensión 784 784 112
Tiempo (segundos) 5.594 1.953 18.432
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
5 IV. CLASIFICACIÓN Support Vector Machine
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 machine.
El método de clasificación 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 clase de la de otra. otra. Existe diferentes tipos de SVMs con la finalidad mejorar las técnicas de clasificación MNIST dataset. Los algoritmos de clasificación con los siguientes 4 tipos de Kernel: SVM con kernel Lineal, SVM Lineal, SVM con Kernel RBF y SVM con Kernel Polinomial. En las versiones de SVM con Kernel lineal y los SVM Lineal tal y como su nombre lo indican, son métodos lineales. Sin embargo, con las SVM con kernel RBF y el Kernel Polinomial, son complejas decisiones no lineales, aprendidas durante el entrenamiento. De esta manera podemos utilizar el RBF y Polinomial para modelar límites de decisión compleja y no lineal. En SVM, existen dos importantes hiperparametros 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 entonces el ancho del margen para la clasificación es menor y cuando C está más cerca de 0 entonces el margen de clasificación es el máximo. El segundo parámetro es el Gamma (g), que es el grado de tensión que queremos que tenga el RBF (g es inversamente proporcional a la desviación estándar estándar de los Gaussians). Gaussians).
clasificación Support Vector Machine Machine F igura 15: 15: Método de clasificación Naive Bayes
Es un método basado en la teoría de la probabilidad, es uno de los algoritmos de aprendizaje práctico más utilizados por su sencillez debido a su implementación. Es una técnica de clasificación y predicción supervisada ya que necesita de ejemplos previos a través de un entrenamiento que nos ayuden a clasificar los datos a evaluar, Naive Bayes nos permite construir modelos que predicen la probabilidad de resultados, tomando en cuenta las características que determinan a que clase pertenece A continuación, se muestra el código implementado del método de clasificación Naive Bayes.
F igura 16: 16: Método de clasificación clasificación Naive Bayes K-Nearest Neighbors (KNN)
El método KNN (Vecinos Cercanos) consiste en extraer información de un conjunto de datos conocidos para clasificar nuevos datos o agrupar existentes. Este método supone que los vecinos más cercanos nos dan la mejor clasificación y esto se hace h ace 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 entrenamiento y el de prueba.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
6
clasificación K-Nearest Neighbors Neighbors F igura 17: 17: Método de clasificación
V. EXPERIMIENTACIÓN Se utilizó los 10,000 datos de prueba con los clasificadores anteriormente definidos, aplicando para cada uno de ellos los diferentes tipos de extracción de características. características. Primera experimentación:
Para la primera experimentación se utilizó el método de clasificación Support Vector Machine utilizando los métodos de extracción de características como: Proyección Poligonal para la primera prueba, Wavelet Haar y Proyección Poligonal para la segunda prueba y Representación Representación Binaria y Proyección Poligonal para la tercera prueba. Para los tres casos utilizando el clasificador SVM se asignó el valor del costo (C) igual a 1 y gamma igual a 0.001. Los resultados obtenidos se muestran a continuación. 0 952 0 3 2 4 1 5 1 11 1
0 1 2 3 4 5 6 7 8 9
1 0 1108 8 0 0 2 4 0 11 2
2 6 0 984 12 1 0 2 9 16 2
3 0 1 8 962 0 7 0 12 18 2
4 3 0 8 0 939 0 4 6 1 21
5 5 0 0 25 3 833 6 1 12 7
6 9 3 6 1 1 2 933 0 3 0
7 0 4 8 6 11 1 0 939 5 54
8 36 2 9 8 3 11 7 11 886 1
9 5 7 1 12 11 4 0 25 6 938
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 945 0 9 3 2 7 14 0 48 9 1 1108 0 3 0 1 4 6 3 7 3 5 974 11 4 1 0 7 9 0 1 1 15 941 0 35 1 7 13 17 3 0 3 0 931 1 4 17 4 24 1 0 0 8 0 806 9 0 10 2 7 6 0 1 4 9 924 0 7 0 1 0 9 16 8 2 0 921 13 73 17 15 21 25 2 23 2 7 858 5 0 1 2 31 7 0 63 9 872
1 2 3 4 5 6 7 8 9
1 3 1 3 1 7 1 17 1
1108 5 1 0 0 6 0 15 0
0 974 15 3 0 0 9 21 1
3 11 941 0 8 1 16 25 2
0 4 0 931 0 4 8 2 31
1 1 35 1 806 9 2 23 7
4 0 1 4 9 924 0 2 0
6 7 7 17 0 0 921 7 63
3 9 13 4 10 7 13 858 9
7 0 17 24 2 0 73 5 872
Tabla 4: Support Vector Machine con Representación Binaria y Proyección Poligonal Segunda experimentación:
Para la segunda experimentación se utilizó el método de clasificación k-Nearest Neighbors utilizando los métodos de extracción de características como: Proyección Poligonal para la primera prueba, Wavelet Haar y Proyección Poligonal para la segunda prueba y Representación Binaria y Proyección Poligonal para la tercera prueba. Para los tres casos utilizando el clasificador KNN se asignó el valor de K igual a 1 debido a que al dar un mayor valor no realizaba correctamente la clasificación de los dígitos y tardaba demasiado tiempo. Los resultados obtenidos se muestran a continuación.
0 1 2 3 4 5 6 7 8 9
0 945 1 5 2 3 1 5 2 15 1
1 0 1110 3 3 1 0 7 1 8 2
2 20 7 889 45 1 1 14 8 42 5
3 9 6 24 866 1 18 3 20 49 14
4 9 2 8 1 865 2 9 11 9 66
5 11 0 1 55 3 728 18 5 59 12
6 14 3 4 2 2 6 919 0 8 0
7 1 2 7 9 19 0 0 845 15 130
8 88 8 12 8 9 16 13 15 788 17
9 9 8 3 11 14 4 0 48 21 891
Tabla 5: KNN con 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 2 3 4 898 18 7 3 4 5 7 4 3 6 4 48 865 1 62 2 15 19 13 4 1 2 3 0 877 3 3 20 4 15 5 2 0 4 32 1 725 8 0 12 4 6 9 7 11 2 9 16 917 0 9 0 7 1 2 9 15 10 7 0 871 4 53 8 18 14 41 48 12 56 6 15 823 14 9 1 0 4 19 50 8 0 95 15 892
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
7 4 5 6 7 8 9
1 2 9 1 18 1
2 0 7 2 14 0
3 4 11 9 41 4
0 877 3 3 20 4 15 32 1 725 8 0 12 4 2 9 16 917 0 9 0 15 10 7 0 871 4 53 48 12 56 56 6 15 823 14 19 50 8 0 95 15 892
Tabla 10: Naive Bayes con Representación Binaria y Proyección Poligonal
Finalmente, para los 10,000 datos de prueba, se ha puesto en una tabla general los tiempos obtenidos digito por digito en sus 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) E
Tercera experimentación:
Para la tercera experimentación se utilizó el método de clasificación Naive Bayes utilizando los métodos de extracción de características como: Proyección Poligonal para la primera prueba, Wavelet Haar y Proyección Poligonal para la segunda prueba y Representación Binaria y Proyección Poligonal para la tercera prueba. 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 802 3 2 0 0 1 3 0 7 1 0 1062 1 3 0 2 2 2 5 4 19 12 964 692 15 154 10 18 10 12 0 0 0 0 0 0 0 0 0 0 9 9 4 8 811 90 5 5 6 8 0 0 0 0 0 2 0 0 0 0 31 3 3 0 7 3 910 0 9 0 1 0 12 109 11 3 0 768 10 5 82 45 45 124 46 449 27 31 788 11 36 1 1 74 92 188 1 204 139 968
Tabla 8: Naive Bayes con Proyección Poligonal
0 1 2 3 4 5 6
0 921 4 0 21 34 0 0
1 4 1105 0 11 15 0 0
2 39 22 0 803 168 0 0
3 3 3 0 998 6 0 0
4 5 6 16 5 7 0 0 9 555 962 314 0 0 0 0
6 258 158 2 215 325 0 0
7 0 6 0 657 364 1 0
8 100 112 0 512 249 0 0
9 2 12 0 75 920 0 0
N
L n ra
p
le
ro e
ú m e to s
0 1 2 3 4 5 6 7 8 9
980 1135 1032 1010 982 892 958 1028 974 1009
0.297 0.093 0.094 0.094 0.094 0.078 0.070 0.078 0.078 0.092
P g
e
ro o li
y
P e
tu
e ro
c c
m
P
s a d o
re
0.031 0.020 0.031 0.031 0.031 0.046 0.047 0.031 0.031 0.062
o c n a l
c ió n
Wavelet Haar y Proyección Poligonal
0.281 0.313 0.297 0.313 0.307 0.250 0.265 0.297 0.312 0.344
Representación Binaria y Proyección Poligonal
0.203 0.282 0.219 0.266 0.281 0.203 0.203 0.234 0.257 0.219
1.938 2.109 2.016 1.962 1.938 1.793 1.875 1.949 1.938 1.969
Tabla 11: Tiempos obtenidos dígito por dígito Tareas
Dimensión Tiempo (segundos)
Lectura Pre procesado Proyección Poligonal Wavelet Haar y Proyección Poligonal Representación Binaria y Proyección Poligonal
784 784 112 56
0.793 0.313 2.838 2.219
56
18.587
Total
Tabla 12: Tiempos obtenidos para todos los dígitos
VI. RESULTADOS OBTENIDOS A continuación, se muestra una tabla de los resultados
24.750
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
8 VII. CONCLUSIONES
El lenguaje de programación Python por su facilidad de aprendizaje, variedad de librerías y portabilidad, es una herramienta muy recurrente para la realización de este tipo de trabajos. También se utilizaron las librerías Nympy que nos permite trabajar con arreglos de gran dimensionalidad sin utilizar mucho tiempo y la la librería OpenCV que está escrita en C++. Al tratarse de dígitos escritos a mano se pudo notar que la reducción por simple descarte de pixeles no iba a ser posible ya que, si dicho descarte funcionó para una imagen, en otra podríamos estar perdiendo información. Las técnicas utilizadas en la etapa de pre procesamiento nos permiten obtener imágenes de los dígitos con mayor nitidez y con valores por pixel que van de 0 a 255. En la etapa de la obtención del vector de características, notamos que la técnica de representación binaria y la de Wavelets Haar, nos permiten reducir la imagen en la proporción, pero la técnica Wavelets Haar nos permite obtener una imagen con mejor nitidez. El clasificador Naive Bayes fue uno de los métodos de clasificación más rápidos, pero fue el que obtuvo el más bajo porcentaje porcentaje de exactitud de reconocimiento reconocimiento de dígitos, dígitos, demostrando que para este tipo de labores no es uno de los clasificadores más adecuados. El clasificado KNN a pesar de ejecutarse en buen tiempo (10.135 segundos con Wavelet Haar y Proyección Poligonal) presenta un porcentaje menor al 90%, haciendo que este clasificador no sea el más adecuado para para su utilización en la práctica. El mejor resultado fue de 94.740% con un tiempo de 108.479 segundos utilizando como clasificador Support Vector Machine y método de extracción de características características Proyección Poligonal, obtenido un vector de 112 dimensiones que representa el contorno del digito a reconocer, pero el principal problema de esta técnica es que los dígitos que contiene espacios vacíos (como él 8 y 9) pueden llegarse a ser confundidos, ya que esta técnica los considera como sólidos. Para poder solucionar este
[6] A. Jain “Fundamentals of Digital Image Processing”, Prentice -Hall, 1986, p 387. [7] D. Vernon “Machine Vision”, Prentice -Hall, 1991, pp 78 - 79. [8] Itseez (2016, mayo, 19) More Morphology Transformations [Online] Accesible: http://docs.opencv.org/2.4/do http://docs.o pencv.org/2.4/doc/tutorial c/tutorials/imgproc/opening s/imgproc/opening_closing_hats/o _closing_hats/o pening_closing_hats.html pening_closing _hats.html [9] Itseez (2016, Junio, 11) Introduction Introduction to Support Vector Machines [Online] Accesible: http://docs.opencv.org/2.4/ http://docs.o pencv.org/2.4/doc/tutorial doc/tutorials/ml/introduct s/ml/introduction_to_svm/i ion_to_svm/introdu ntrodu ction_to_svm.html#introduct ction_to_svm.ht ml#introductiontosvms iontosvms [10] Itseez (2016, junio, 11) Support Vector Machines for Non-Linearly Separable Data [Online] Accesible: http://docs.opencv.org/2.4/ http://docs.o pencv.org/2.4/doc/tutorial doc/tutorials/ml/non_linear s/ml/non_linear_svms/non_linear _svms/non_linear_ _ svms.html#nonlinearsvms [11] Itseez (2016, mayo, 19) Normal Bayes Classifier [Online] Accesible: http://docs.opencv.org/2.4. http://docs.o pencv.org/2.4.13/modules/ml/do 13/modules/ml/doc/normal_baye c/normal_bayes_classifier.h s_classifier.h tml [12] Itseez (2016, mayo, 19) K-Nearest Neighbors [Online] Accesible: http://docs.opencv.org/2.4. http://docs.o pencv.org/2.4.13/modules/ml/do 13/modules/ml/doc/k_nearest_neig c/k_nearest_neighbors.html hbors.html [13] Itseez (2016, mayo, 19) Image Filtering [Online] Accesible: http://docs.opencv.org/2.4. http://docs.o pencv.org/2.4.13/modules/imgpr 13/modules/imgproc/doc/filteri oc/doc/filtering.html ng.html [14] Robot Logs (2015, Julio, 26) ¿Cómo filtrar e ruido de una máscara con OpenCV? [Online] Accesible: http://robologs.net/2015 http://robo logs.net/2015/07/26/como-f /07/26/como-filtrar-el-ruido iltrar-el-ruido-de-una-mascara-de-una-mascaracon-opencv/ [15] Ming Wu, Zhen Zhang (2014, septiembre, 05) https://www.researchgate.net/public https://www.researchgate.net/publication/2286858 ation/228685853_Handwritte 53_Handwritten_Digi n_Digi t_Classification_using_the_MNI t_Classification_using_the_MNIST_Data_Set ST_Data_Set [Online] Accesible: https://www.researchgate.net/public https://www .researchgate.net/publication/2286858 ation/228685853_Handwritte 53_Handwritten_Digi n_Digi t_Classification_using_the_MNIST_Data_Set [16] Cheng-Lin Liu; Nakashima, K.; Sako, H.; Fujisawa, H., "Handwritten digit recognition using state-of-the-art techniques," Frontiers in Handwriting Recognition, 2002. Proceedings. Eighth International Workshop on, vol., no., pp.320,325, 2002. [17] C. Suen and J.Tan, “Analysis of errors of handwritten digits made by a multitude of classifiers.” Pattern Recognition Letters, vol 40, pp,
18161824,2007. [18] Otsu, N. 1979. A threshold selection method from gray level histogram. IEEE Trans. Systems Man Cybern. 9 (1), 62 – 66. 66. [19] Charles K. Chui, “An Introduction to Wavelets”, Academic Press, 1992, San Diego, ISBN 0585470901 [20] Peter Harrington, “Machine Learning in Action”. 2012. Manning Publications Co. Capítulo 2, pp 18-21 [21] L. Breiman, “Random Forest”, Machin e Learning, Kluwer Academic Publishers, Vol 45, no 1, pp 5-32 [22] L. Maria Seijas, “Reconocimiento de patrones utilizando técnicas estadísticas y conexionistas aplicadas a la clasificación de dígitos manuscritos. Universidad de Buenos Aires.