Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
Figura 6: Método de segmentación Flood Fill
Figura 4: Método de binarización Otsu Como resultado se obtiene la siguiente imagen:
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)
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.
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
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
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