Clasificaci On de Formularios de Dise No de Prototipos Usando Un Algoritmo de M Axima Expectaci On
Clasificaci On de Formularios de Dise No de Prototipos Usando Un Algoritmo de M Axima Expectaci On
Clasificaci On de Formularios de Dise No de Prototipos Usando Un Algoritmo de M Axima Expectaci On
Director de Tesis:
Dr. José Crispı́n Hernández Hernández
Co-Director de Tesis:
Dr. Edmundo Bonilla Huerta
GRACIAS... TOTALES.
I
Abstract
This proyect presents the visual classification of objects and the development of
a system that, given several images, can be classified into several categories based on
the shared visual characteristics, This is a very important area in computer vision
and there is a wide variety of research on this subject, since it has too many important
applications at the forefront of computing, specifically in robotics, automated systems
and mobile devices.
The key aspects of the research will be highlighted, which cover the antecedents
of artificial vision, specifically the classification of images, up to the current research.
A method known as Bag of Visual Words will be implemented and compared with
the current state of the art. This model will be tested with images other than pho-
tographs.
The objective of this project is the classification of images from a database ba-
sed on the content obtained by users making hand-drawn lines of geometric figures
or symbols. These images will contain objects that the classifier must categorize co-
rrectly, in order to improve the classification success rate, new methods will be tested
and existing ones will be adjusted.
II
Resumen
III
Índice general
Agradecimientos I
Abstract II
Resumen III
Índice de figuras VI
1. Introducción 1
1.1. Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Pregunta de investigación . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2. Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. Organización de Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
IV
Índice general V
3. Metodologı́a 21
3.1. Algoritmo EM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.1. Procedimiento general . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2. Desarrollo del algoritmo EM . . . . . . . . . . . . . . . . . . . 24
3.1.3. Combinar resultados para comparar E* y LL . . . . . . . . . . 26
3.1.4. Convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.5. Errores estándar . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2. Modelo bolsa de palabras visuales . . . . . . . . . . . . . . . . . . . . 29
3.2.1. Conjunto de datos . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.2. Detección y descripción de imagen . . . . . . . . . . . . . . . 30
3.2.3. Construcción de vocabulario . . . . . . . . . . . . . . . . . . . 35
3.2.4. Representación de la imagen . . . . . . . . . . . . . . . . . . . 38
3.2.5. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.6. Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3. Lenguaje Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3.2. Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3.3. Tendencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4. Librerı́a OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.2. Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.3. OpenCV-Python . . . . . . . . . . . . . . . . . . . . . . . . . 55
4. Propuesta 57
4.1. Modelo BOVW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2. Conjunto de imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.1. Caltech 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.2. Creación de conjunto de imágenes a mano alzada . . . . . . . 59
4.2.3. Detección y descripción de la imagen . . . . . . . . . . . . . . 61
Índice general VI
5. Resultados 65
5.1. Caltech 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2. Figuras geométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3. Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4. Sı́mbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6. Conclusiones 72
Bibliografı́a 73
A. Publicaciones 77
B. Estancias 80
Índice de figuras
VII
Índice de figuras VIII
IX
Capı́tulo 1
Introducción
1
Capı́tulo 1. Introducción 2
1.3. Justificación
En el modelo bag of visual words, el algoritmo de agrupamiento que utiliza por
defecto es K-means, EM y K-means son similares en el sentido de que permiten la
refinación de un modelo en un proceso iterativo para encontrar la mejor congestión
o agrupamiento de datos. Sin embargo, el algoritmo K-means difiere en el método
utilizado para calcular la distancia euclidiana al calcular la distancia entre cada
uno de los dos elementos de datos, por otro lado, EM usa métodos estadı́sticos.
El algoritmo EM se usa a menudo para proporcionar las funciones de manera más
efectiva.
Capı́tulo 1. Introducción 4
1.4. Objetivos
El objetivo de este proyecto consiste en la aplicación del modelo bag of words
(BoW, bolsa de palabras) al reconocimiento de escritura a mano. Este modelo, pro-
cede del análisis y clasificación de contenidos textuales, requiere de una adaptación al
procesamiento visual y la clasificación de imágenes. El modelo BoW define una me-
todologı́a de trabajo para clasificar imágenes, si bien numerosos aspectos concretos
de su aplicación quedan pendientes del diseño del desarrollador, dichos parámetros
sobre el modelo, tales como el tamaño y estructura de los vocabularios, o el empleo
de clasificadores de distinta ı́ndole, serán estudiados a lo largo del proyecto. Se im-
plementarán diversas alternativas para la clasificación, lo que requerirá métodos de
evaluación y la comparativa de todos los resultados.
6
Capı́tulo 2. Estado del Arte 7
muchas aplicaciones importantes en el mundo real que van desde organizar datos
hasta procesamiento de imágenes médicas. La Visión por Computadora cubre una
amplia gama de temas y técnicas que veremos ahora.
Se esbozarán algunos de los más importantes. Un área de la visión por compu-
tadora que se usa mucho en la investigación es análisis de movimiento, donde a una
computadora se le da una secuencia de imágenes (generalmente como un video) para
hacer un seguimiento de elementos y calcular información como su posición en una
escena 3D o su velocidad en la imagen actual. A menudo se usa para analizar múlti-
ples objetivos, como personas que se mueven en una multitud (Zhao and Nevatia,
2004).
La visión por computadora también aborda problemas como la creación de un
modelo 3D de una entrada del mundo real, por ejemplo. reconstrucción de la escena.
Esta es la idea de tomar imágenes de una escena especı́fica y/o construir una repre-
sentación 3D de la misma en la computadora. Esto puede ser útil para identificar
o clasificar entornos. (Yang and Ngo, 2007). La robótica es una de sus principales
aplicaciones.
La restauración de imágenes ahora se usa ampliamente para limpiar imágenes,
generalmente de fuentes de baja calidad. Esta abarca desde simples filtros de elimi-
nación de ruido hasta enfoques mucho más complejos que comprende la estructura
lógica de la imagen. Esto permite mejorar las imágenes, a menudo con suciedad,
ruido o incluso objetos no deseados son eliminados. También puede restaurar los de-
talles perdidos. Es una técnica útil cuando se trata de imágenes antiguas, o pelı́cula
de baja calidad como imágenes de CCTV.
Probablemente el área más compleja y más investigada de La visión por compu-
tadora es el reconocimiento. Aquı́ es donde una computadora identifica algo de una
fuente visual y puede traducir la señal visual en datos comprensibles de la máquina.
El reconocimiento puede ser utilizado para Detectar una afección especı́fica, que es
especialmente útil en imágenes médicas para detectar huesos rotos o daño tisular, ya
que las computadoras pueden ver detalles mucho más finos que el ojo humano (Koh
et al., 2018). Basado en el contenido de la Imagen, la recuperación es una forma de
buscar un conjunto de imágenes usando palabras clave o incluso una imagen simi-
lar. Esto se implementó a gran escala con las nuevas capacidades de búsqueda de
Capı́tulo 2. Estado del Arte 8
únicamente teórico.
A un nivel muy básico, se puede decir decir que una de las tareas del AA es
intentar extraer conocimiento sobre algunas propiedades no observadas de un objeto
basándose en las propiedades que sı́ han sido observadas de ese mismo objeto (o
incluso de propiedades observadas en otros objetos similares), predecir comporta-
miento futuro a partir de lo que ha ocurrido en el pasado. Un ejemplo de actualidad
serı́a, el de predecir si un determinado producto le va a gustar a un cliente basándo-
se en las valoraciones que ese mismo cliente ha hecho de otros productos que sı́ ha
probado.
En cualquier caso, como el tema del que se está abordando está relacionado con
el aprendizaje,¿Qué se entiende por aprender? y, ya que se quiere dar metodologı́as
generales para producir un aprendizaje de forma automática, una vez que se fije
este concepto se habrá de dar métodos para medir el grado de éxito o fracaso de un
aprendizaje. En cualquier caso, se está trasladando un concepto intuitivo y que se usa
normalmente en la vida diaria a un contexto computacional, ha de tenerse en cuenta
que todas las definiciones de aprendizaje desde un punto de vista computacional, ası́
como las diversas formas de medirlo, estarán ı́ntimamente relacionadas con contextos
muy concretos y posiblemente lejos de lo que intuitivamente, y de forma general, se
entiende por aprendizaje.
Una definición relativamente general de aprendizaje dentro del contexto humano
podrı́a ser la siguiente: proceso a través del cual se adquieren o modifican habili-
dades, destrezas, conocimientos, conductas o valores como resultado del estudio, la
experiencia, la instrucción, el razonamiento y la observación. De esta definición es
importante hacer notar que el aprendizaje debe producirse a partir de la experiencia
con el entorno, no se considera aprendizaje toda aquella habilidad o conocimiento
que sean innatos en el individuo o que se adquieran como resultado del crecimiento
natural de éste. Siguiendo un esquema similar, en el AA se considera aprendizaje a
aquello que la máquina pueda aprender a partir de la experiencia, no a partir del
reconocimiento de patrones programados a priori. Por tanto, una tarea central de
cómo aplicar esta definición al contexto de la computación va a consistir en alimentar
la experiencia de la máquina por medio de objetos con los que entrenarse (ejemplos)
para, posteriormente, aplicar los patrones que haya reconocido sobre otros objetos
Capı́tulo 2. Estado del Arte 10
distintos.
Hay un gran número de problemas que caen dentro de lo que se le llama apren-
dizaje inductivo. La principal diferencia entre ellos estriba en el tipo de objetos que
intentan predecir. Algunas clases habituales son:
Regresión
Intentan predecir un valor real. Por ejemplo, predecir el valor de la bolsa mañana
a partir del comportamiento de la bolsa que está almacenado (pasado). O predecir
la nota de un alumno en el examen final basándose en las notas obtenidas en las
diversas tareas realizadas durante el curso.
Ranking
Aprendizaje supervisado
Se genera una función que establece una correspondencia entre las entradas y
las salidas deseadas del sistema, donde la base de conocimientos del sistema está
formada por ejemplos etiquetados a priori (es decir, ejemplos de los que se sabe
su clasificación correcta). Un ejemplo de este tipo de algoritmo es el problema de
clasificación al que se ha hecho mención anteriormente.
Aprendizaje no supervisado
Aprendizaje semi-supervisado
Transducción
Aprendizaje multi-tarea
conjuntos de vectores propios y cuando dos coinciden pueden asumir que las caras
son las mismas.
También hay muchos otros métodos que utilizan caracterı́sticas visuales, en las
primeras etapas de la clasificación de objetos, la mayorı́a de los esfuerzos se centró
en la detección y descripción de caracterı́sticas. Esto se puede ver en investigación
de (Harris and Stephens, 1988). Recientemente la investigación en clasificación de
imágenes parece ser más en torno al área de probabilidad y encontrar formas más
eficientes de comparar imágenes (Grauman and Darrell, ). También hay bastante
investigación para aplicaciones especı́ficas, como la clasificación de escenas, que tiene
usos en robótica (Lazebnik et al., ) e incluso trabajar con vı́deos y categorizar acciones
humanas (Niebles et al., 2006).
Un método ahora común de clasificación que usa caracterı́sticas es el enfoque
Bolsa de palabras. Sigue Algunos de los principios similares a los otros métodos con
una diferencia importante, los datos de posición en relación con las caracterı́sticas se
ignora. Esta es una idea que fue usada por primera vez por (Leibe and Schiele, 2003)
donde intentan resolver el problema del reconocimiento con un enfoque a partir de
caracterı́sticas visuales y no desde segmentación. Un problema que surge a menu-
do en la clasificación de objetos es clasificar un área no segmentada, pero también
existe el problema de segmentar una imagen no clasificada. Leibe y Schiele intentan
abordar la primera parte de este problema utilizando detectores de caracterı́sticas y
probabilidad con un método basado en el método de bolsa de palabras utilizado para
clasificar la literatura. El método para identificar las caracterı́sticas varı́an según la
implementación, al igual que el modelo de probabilidad, sin embargo, el principio
sigue siendo similar.
2.4.1. Descriptores
Los descriptores de caracterı́sticas se utilizan para detectar y describir carac-
terı́sticas locales de las imágenes. El objetivo de un descriptor es encontrar una
caracterı́stica de la imagen y describirla de una manera que no se vea afectada por la
perspectiva, la escala, la oclusión o la iluminación. Uno de los métodos más comunes
es la transformación de caracterı́sticas invariantes de escala (SIFT), desarrollado por
(Lowe, 1999), se considera una de los descriptores más sólidos. Más tarde se hizo
una modificación a ese descriptor, descriptor de caracterı́sticas robustas aceleradas
Capı́tulo 2. Estado del Arte 17
(SURF) desarrollado por (Bay and Van Gool, 2006) es un método inspirado en SIFT
y que vive hasta su nombre, ya que se considera igual, si no más robusto que SIFT
y es notablemente más eficiente (Mikolajczyk and Schmid, ). Sin embargo, como
SIFT es un método más probado y comprobado, y el código está disponible de forma
gratuita, se utilizará como detector de caracterı́sticas. Hay detectores más moder-
nos. como PCA-SIFT (Ke and Sukthankar, 2004) que se basa en SIFT que tiene
como objetivo mejorar su rendimiento, sin embargo, se dejarán pruebas de diferentes
descriptores para trabajos futuros.
Metodologı́a
3.1. Algoritmo EM
Los algoritmos de Expectativa-Maximización (EM) son procedimientos para imi-
tando una función LL (log-likelihood) cuando los procedimientos estándar son numéri-
camente difı́ciles o inviables. El procedimiento fue introducido por (Dempster et al.,
1977) como una forma de manejar los datos faltantes. Sin embargo, es aplicable de
manera mucho más general y se ha utilizado con éxito en muchos campos de es-
tadı́stica. McLachlan y Krishnan (Mclachlan and Krishnan, 2008) proporcionan una
revisión de aplicaciones en el campo del modelado de elección discreta, algoritmos
EM han sido utilizados por Bhat (Bhat, 1997) y Train (Train, 2008).
El procedimiento consiste en definir una expectativa particular y entonces ma-
ximizárla (de ahı́ el nombre). Esta expectativa está relacionada con La función LL
(log-likehood) de una manera que se describirá más adelante, pero difiere de una
manera que facilita la maximización. El procedimiento es iterativo, comenzando en
algún valor inicial para los parámetros y actualizando los valores en cada iteración.
Los parámetros actualizados en cada iteración son los valores a maximizar la expec-
tativa en esa iteración particular. Como se mostrará, La maximización repetida de
esta función converge al máximo de la función LL.
En este capı́tulo, se describe el algoritmo EM en general, se puede utilizar para
estimar distribuciones muy flexibles, incluyendo especificidades no paramétricas. que
pueden aproximarse asintóticamente a cualquier distribución.
21
Capı́tulo 3. Metodologı́a 22
La densidad de los datos faltantes, f (z|), se utiliza para predecir las opciones obser-
vadas y por lo tanto no depende de y . Sin embargo, se puede obtener información
sobre los datos faltantes mediante la observación de las opciones que fueron hechas.
Por ejemplo, en la elección de un vehı́culo, si falta el ingreso de una persona pero
se observa que la persona compró un Mercedes, se infiere que es probable que los
ingresos de esta persona estén por encima del promedio. se define g(z|y, θ) como la
Capı́tulo 3. Metodologı́a 23
En cada iteración, los valores actuales de los parámetros θt , se utilizan para calcular
los pesos h , y luego la probabilidad de registro conjunta ponderada es maximizada.
El nombre EM deriva del hecho de que el procedimiento Utiliza una expectativa que
se maximiza. Es importante reconocer el doble papel de los parámetros en E. Primero,
los parámetros ingresan a la probabilidad conjunta de las elecciones observadas. y los
datos faltantes, P (y|z, )f (z|θ). En segundo lugar, los parámetros entran, la densidad
condicional de los datos faltantes, h(z|y, ). La función E se maximiza con respecto
a lo anterior manteniendo la constante posterior. Es decir, E se maximiza sobre θ
ingresando P (y|z, θ)f (z|θ), manteniendo presionado θ que ingresa los pesos h(z|y, θ)
en sus valores actuales θt . Para denotar este doble papel, (θ|θt ) se expresa en función
de θ, su argumento sobre el que se realiza la maximización, dado θ, el valor se utiliza
en los pesos que se mantienen fijos durante la maximización. En condiciones muy
generales, las iteraciones definidas por la ecuación convergen al máximo de LL .
Bolyes (Boyles, 1983) y Wu (Wu, 1983) proporcionan mayores pruebas.
Primer paso
Ajustar igual a LL en θt
Capı́tulo 3. Metodologı́a 25
Segundo paso
d∗(θ|θt ) t)
dθ
= d(θ|θ
dθ
h(z|y, θt ) dlogP (y|z,θ)f (z|θ)
R
= dθ
dz
t 1,dP (y|z,θ)f (z|θ)
R
= h(z|y, θ ) P (y|z,θ),f (z|θ)dθ dz.
d ∗ (θ|θt )dθ|θt
=h(z|y, θt ) P (y|z,θ1t f (z|θt ) dP (y|z,θ)f
dθ
(z|θ) t
θ dz
R P (y|z,θt )f (z|θt ) 1 dP (y|z,θ)f (z|θ) t
= P (y|θt ) P (y|z,θt )f (z|θt ) dθ
θ dz
R 1 dP (y|z,θ)f (z|θ) t
= P (y|θt ) dθ
θ dz
1 R dP (y|z,θ)f (z|θ) t
= P (y|θ t) dθ
θ dz
dlogP (y|θ)
= dθ dθ
= dLL(θ)
dθ
θt
Tercer paso
LL(θ)
=logP (y|θ) (14.2)
R
= log P (y|z, θ)f (z|θ)dz
R P (y|z,θ)f (z|θ)
= log h(y|z,θt )
h(y|z, θt )dz
≥ h(y|z, θt )log P (y|z,θ)f (z|θ)
R
h(y|z,θt )
dz (14.3)
= h(y|z, θt )logP (y|z, θ)f (z|θ)dz − h(y|z, θ )logh(y|z, θ)dz
t
R R
3.1.4. Convergencia
Hay tres formas en que se pueden calcular los errores estándar. Primero, una vez
que se ha encontrado el máximo de LL (θ) con el algoritmo EM, los errores estándar
se pueden calcular a partir de LL de la misma manera que si la función log-likelihood
se hubiera maximizado directamente. Los procedimientos son aplicables: Los errores
estándar asintóticos pueden calcularse a partir de la arpillera o de la varianza de los
gradientes especı́ficos de observación (es decir, las puntuaciones), calculados a partir
de LL (θ) evaluados a θ.
Una segunda opción surge del resultado que se obtuvo en el paso 2 anterior. Se
demuestra que y LL tienen los mismos gradientes en θ = θt . En la convergencia,
el valor de θ no cambia de una interacción a la siguiente, de manera que θ = θt +
1 = θt . Por lo tanto, en, las derivadas de estas dos funciones son las mismas. Este
hecho implica que las puntuaciones se pueden calcular a partir de E en lugar de LL.
Si toma una forma más conveniente que LL, como suele ser el caso al aplicar un
algoritmo EM, este El cálculo alternativo puede ser atractivo.
Una tercera opción es bootstrap, Bajo esta opción, el algoritmo EM se aplica
varias veces, utilizando una muestra diferente de las observaciones cada vez. En mu-
chos contextos en los que se aplican algoritmos EM, los errores estándar de arranque
son más factibles y útiles que las fórmulas asintóticas.
Capı́tulo 3. Metodologı́a 29
El modelo bolsa de palabras (del inglés, Bag of Words) es un método que se uti-
liza en el procesado del lenguaje para representar documentos ignorando el orden de
las palabras. En este modelo, cada documento parece una bolsa que contiene algunas
palabras. Por lo tanto, este método permite un modelado de las palabras basado en
diccionarios, donde cada bolsa contiene unas cuantas palabras del diccionario. En el
campo de reconocimiento de objetos, se utiliza una idea similar para las representa-
ciones de imágenes, es decir, una imagen puede ser tratada como un documento y las
caracterı́sticas extraı́das de ciertos puntos de la imagen son consideradas palabras
visuales. Las principales ventajas de utilizar este modelo es su facilidad de uso y su
eficiencia computacional.
Es necesario tener un conjunto de datos para entrenar el modelo, los más uti-
lizados en visión computacional y procesamiento de imágenes son: 15 Escenas de
(Lazebnik et al., ), Caltech 101 utilizado en un proyecto de (Niebles et al., 2006),
Caltech 256 por (lah, ), PASCAL VOC utilizado en diferentes aspectos de la visión
por computadora como lo muestra (Everingham et al., 2009). Estos conjuntos de
datos se dividen en dos partes, generalmente 80 % para entrenamiento y 20 % para
prueba de clasificación.
En el primer paso el algoritmo busca regiones de interés sobre todas las localiza-
ciones de las imágenes a diferentes escalas. Es implementado eficientemente usando
una función de diferencia de Gaussianas para identificar puntos de interés potencia-
les que son invariantes a la escala y a la orientación. En la Figura 3.5, se muestra
cómo para cada octava del espacio escala, la imagen inicial es repetidamente con-
volucionada con Gaussianas para producir el conjunto de imágenes espacio escala
mostrado en la izquierda. Las imágenes Gaussianas adyacentes son substraı́das para
producir las imágenes diferencia de Gaussiana (DoG) de la derecha. Después de cada
octava, la imagen Gaussiana es submuestreada por un factor de 2, y el proceso es
repetido. El objetivo de la detección es encontrar extremos en el espacio DoG, que
se corresponderán con puntos de interés (keypoints).
Figura 3.5: Representación del proceso que sigue cada octava del espacio escala
puntos clave finales que quedan siguiendo un umbral adicional en proporción a las
principales curvaturas.
Asignación de la orientación
tiene en cuenta significativos niveles de distorsión de forma local ası́ como cambios
en la iluminación. En la Figura 3.8 se puede ver cómo un descriptor de puntos
clave es creado calculando la transformada SIFT. Inicialmente, como se ve en la
imagen de la izquierda, se calcula la magnitud del gradiente y la orientación de
cada punto en una región alrededor de la localización del punto clave. A estos se
les asigna un peso con una ventana Gaussiana, indicado por un cı́rculo superpuesto
(según el peso asignado, el cı́rculo tendrá un radio mayor o menor). Estas muestras
son después acumuladas en histogramas de orientaciones, resumiendo los contenidos
sobre subregiones resultantes de una división de la región en un grid 4x4, como se
muestra en la imagen derecha. La longitud de cada flecha corresponde a la suma
de las magnitudes de gradiente en dicha dirección dentro de la región. Esta figura
muestra un array de descriptores 2x2 calculado en la subregión correspondiente.
Esta aproximación ha sido llamada la transformación de caracterı́sticas invariante
a la escala (SIFT), y transforma los datos de la imagen en coordenadas invariantes
a la escala relativas a las caracterı́sticas locales.
Un aspecto importante de esta aproximación es que genera un gran número de
caracterı́sticas que cubre densamente la imagen sobre el rango completo de escalas
y localizaciones. Una imagen tı́pica de 500x500 pı́xeles de tamaño ocasionará unas
Capı́tulo 3. Metodologı́a 34
2000 caracterı́sticas estables (aunque ese número depende tanto del contenido de la
imagen como de las elecciones de varios parámetros). La cantidad de parámetros es
particularmente importante para el reconocimiento de objetos, donde la habilidad
para detectar objetos pequeños en fondos abarrotados requiere que al menos 3 carac-
terı́sticas sean correctamente correspondidas para cada objeto para una identificación
fiable.
Para correspondencia y reconocimiento de imágenes, las caracterı́sticas SIFT son
primero extraı́das de un conjunto de imágenes de referencia y almacenadas en una
base de datos. Una nueva imagen es correspondida individualmente comparando
cada caracterı́stica suya con esa base de datos previa y encontrando un candida-
to igualando las caracterı́sticas basadas en la distancia euclı́dea de sus vectores de
caracterı́sticas.
Descripción
mt+1
X
1
i = |Sit |
Xj
XjSit
[01] [02]
[03] [04]
Figura 3.9: Procedimiento Kmeans
01: k centroides iniciales (en este caso k=3) son generados aleatoriamente dentro
de un conjunto de datos (mostrados en color). 02: k grupos son generados asociándole
el punto con la media más cercana. La partición aquı́ representa el diagrama de
Voronoi generado por los centroides. 03: EL centroide de cada uno de los k grupos
se recalcula. 04: Pasos 2 y 3 se repiten hasta que se logre la convergencia.
Como se trata de un algoritmo heurı́stico, no hay ninguna garantı́a de que con-
vergen al óptimo global, y el resultado puede depender de los grupos iniciales. Como
el algoritmo suele ser muy rápido, es común para ejecutar varias veces con diferentes
condiciones de partida. Sin embargo, en el peor de los casos, k-medias puede ser
muy lento para converger: en particular, se ha demostrado que existen conjuntos
de determinados puntos, incluso en 2 dimensiones, en la que k-medias toma tiempo
exponencial, es decir 2O(n), para converger. Estos conjuntos de puntos no parecen
surgir en la práctica: esto se ve corroborado por el hecho de que en la mayorı́a de los
casos el tiempo de ejecución de k-medias es polinomial.
Capı́tulo 3. Metodologı́a 38
3.2.5. Clasificación
El aprendizaje máquina trata el diseño y desarrollo de algoritmos que permite a
los ordenadores mejorar su rendimiento a la hora de analizar datos procedentes de
diversas fuentes, como los de un sensor o los de una base de datos. Un mayor enfoque
en la investigación del aprendizaje máquina produce modelos, reglas y patrones de
los datos. Como los conjuntos de entrenamiento son finitos, la teorı́a de aprendizaje
normalmente no da garantı́as absolutas en el rendimiento de los algoritmos En es-
te proyecto se van a utilizar 7 tipos de algoritmos de aprendizaje máquina: SVM,
Gaussian NB, KNN, Decision Tree, Random Forest, Neural Network y AdaBoost
Capı́tulo 3. Metodologı́a 39
SVM
Bayes ingenuo
Una ventaja del clasificador de Bayes ingenuo es que solo se requiere una pequeña
cantidad de datos de entrenamiento para estimar los parámetros (las medias y las
varianzas de las variables) necesarias para la clasificación. Como las variables inde-
pendientes se asumen, solo es necesario determinar las varianzas de las variables de
cada clase y no toda la matriz de covarianza.
KNN
El método de los k vecinos más cercanos (en inglés, k-nearest neighbors, abreviado
k-nn es un método de clasificación supervisada (Aprendizaje, estimación basada en
un conjunto de entrenamiento y prototipos) que sirve para estimar la función de
densidad F (x/Cj) de las predictoras x por cada clase Cj .
Árbol de decisión
Las flechas son las uniones entre un nodo y otro y representan cada acción
distinta.
Capı́tulo 3. Metodologı́a 43
Las etiquetas se encuentran en cada nodo y cada flecha y dan nombre a cada
acción.
El resto de nodos del juego son apuntados por una única flecha.
De esto se deduce que hay un único camino para llegar del nodo inicial a cada
uno de los nodos del juego. No hay varias formas de llegar a la misma solución
final, las decisiones son excluyentes.
En los árboles de decisiones las decisiones que se eligen son lineales, a medida
que vas seleccionando entre varias opciones se van cerrando otras, lo que implica
normalmente que no hay marcha atrás. En general se podrı́a decir que las normas
siguen una forma condicional: Opción 1-opción 2-opción 3-Resultado Final X Estas
reglas suelen ir implı́citas en el conjunto de datos a raı́z del cual se construye el árbol
de decisión.
Random forest
Elegir un conjunto de entrenamiento para este árbol y usar el resto de los casos
de prueba para estimar el error.
Para cada nodo del árbol, elegir aleatoriamente m variables en las cuales basar
la decisión. Calcular la mejor partición del conjunto de entrenamiento a partir
de las m variables.
Para la predicción un nuevo caso es empujado hacia abajo por el árbol. Luego se
le asigna la etiqueta del nodo terminal donde termina. Este proceso es iterado por
todos los árboles en el ensamblado, y la etiqueta que obtenga la mayor cantidad de
incidencias es reportada como la predicción.
Capı́tulo 3. Metodologı́a 45
Red neuronal
AdaBoost
3.2.6. Evaluación
Es indispensable evaluar el rendimiento de los diferentes algoritmos estudiados
en el proyecto, para ası́ poder compararlos y utilizar el óptimo en cada caso. Para
este proyecto es necesario introducir los conceptos de precision-recall y la medida F
ası́ como la matriz de confusión.
Precisión
TP
P recision = T P +F P
Recall
TP
Recall = T P +F N
Capı́tulo 3. Metodologı́a 49
F1 score
Matriz de confusión
Predicción
Positivos Negativos
Verdaderos Falsos
Positivos
Observaciones positivos (VP) negativos (FN)
Falsos Verdaderos
Negativos
positivos (FP) negativos (VN)
Validación cruzada
Figura 3.17: Esquema k-fold cross validation, con k=4 y un solo clasificador.
3.3.1. Historia
Python fue creado a finales de los ochenta por Guido van Rossum en el Centro
para las Matemáticas y la Informática (CWI, Centrum Wiskunde Informatica), en
los Paı́ses Bajos, como un sucesor del lenguaje de programación ABC, capaz de
manejar excepciones e interactuar con el sistema operativo Amoeba.
El nombre del lenguaje proviene de la afición de su creador por los humoristas
Capı́tulo 3. Metodologı́a 51
3.3.2. Caracterı́sticas
Python es un lenguaje multiparadigma, esto significa que combina propiedades
de diferentes paradigmas de programación. Principalmente es un lenguaje orientado
a objetos, todo en Python es un objeto, pero también incorpora aspectos de la
programación imperativa, funcional, procedural y reflexiva.
Una de las caracterı́sticas más reseñables de Python es que es un lenguaje inter-
pretado, esto significa que no se compila a diferencia de otros lenguajes como Java
o C/C++, sino que es interpretado en tiempo de ejecución. Además, es de tipado
dinámico, aunque opcionalmente desde la versión 3.5 podemos hacer uso de tipado
estático.
Python es cross plataforma, es decir, se puede ejecutar en diferentes sistemas
operativos como Windows o Linux simplemente usando el intérprete correspondiente.
Se ha demostrado que es más lento en tiempo de ejecución que otros lenguajes
compilados como Java o C/C++. Y es cierto, al tratarse de un lenguaje interpretado,
sin embargo, las diferencias en velocidad son pequeñas y hoy en dı́a el cuello de botella
en los proyectos de desarrollo de software no está en la CPU. Gracias a avances como
la computación en la nube se dispone de gran capacidad de cómputo a un coste
muy asequible. El desafı́o está en acortar los tiempos de desarrollo, mejorando la
mantenibilidad y calidad del código.
Scripting
limitados o herramientas como AWK o sed. Por ello, Python ha sido adoptado por
administradores de sistemas y equipos de operaciones.
Hoy en dı́a, muchas de las herramientas punteras para gestión de despliegues e
infraestructura usan o se basan en Python. Algunas de las más destacadas son Ansi-
ble, Salt o Fabric. Otra área en la que Python es pionero es en el mundo del scraping
y el crawling, donde se extrae información de páginas web gracias a técnicas de
“scraping”, herramientas de Python como Scrapy son muy usadas en este contexto.
Desarrollo web
Otro de los campos en los que Python ha brillado en los últimos años es en el
desarrollo de aplicaciones web, principalmente gracias a frameworks de desarrollo web
muy potentes como Django, un framework completo o Flask, un microframework.
Sin embargo, en el ecosistema de desarrollo web existen muchas alternativas y
frameworks muy maduros y asentados como Symfony para PHP, Spring para Java,
Grails para Groovy o Rails para Ruby. Todos estos frameworks están continuamen-
te tomando ideas entre ellos, inmersos en ofrecer las mejores alternativas para los
desarrolladores. En este caso la ventaja que aporta Django, el principal framework
para desarrollo web en Python, es la de ofrecer un marco de trabajo completo y de
calidad para desarrollar aplicaciones web muy rápido. Como su leitmotiv dice es: “el
framework para perfeccionistas con fechas de entrega”.
Sin embargo, al margen de todas las bondades que hemos comentado del lenguaje,
en los últimos años ha ocurrido algo que ha revolucionado y extendido radicalmen-
te el uso de Python. La generalización del Big Data en los últimos años, seguida
de la explosión de la Inteligencia Artificial, Machine Learning, Deep Learning y el
surgimiento de la ciencia de datos o data science como un nuevo área de trabajo
con especialistas propios, ha revolucionado el panorama. Las nuevas herramientas
que han surgido, y que son explotadas por ingenieros de datos y los cientı́ficos de
datos, han sido desarrolladas en Python u ofrecen Python como la forma predilecta
de interactuar con ellas.
Capı́tulo 3. Metodologı́a 53
Existe tecnologı́a para Big Data como PySpark, de herramientas para Data Scien-
ce como Pandas, NumPy, Matplotlib o Jupyter. De herramientas del procesamiento
del lenguaje natural como NLTK, y por último el área de machine learning que tanto
interés está despertando con herramientas como Tensorflow, MXNet o scikit-learn.
3.3.3. Tendencia
El crecimiento en el uso del lenguaje está siendo espectacular debido a las nuevas
tecnologı́as de Data Science y Machine Learning, donde junto con el lenguaje R son
pioneros. Sin embargo, R es un lenguaje más de nicho que proviene del mundo de la
estadı́stica. Python, por otro lado, es un lenguaje de propósito general y su uso está
mucho más extendido.
En la siguiente gráfica 3.18 se muestra una proyección para los próximos años
de Stackoverflow sobre el número de visitas que espera recibir en función de los
principales lenguajes de programación.
Figura 3.18: Proyección a futuro de los leguajes de programación con más tráfico.
Capı́tulo 3. Metodologı́a 54
3.4.1. Historia
OpenCV se inició en Intel en 1999 por Gary Bradsky y el primer lanzamiento
salió en 2000. Vadim Pisarevsky se unió a Gary Bradsky para administrar el equipo
OpenCV del software ruso de Intel. En 2005, OpenCV se utilizó en Stanley, el vehı́cu-
lo que ganó el Gran Desafı́o DARPA 2005. Más tarde, su desarrollo activo continuó
bajo el apoyo de Willow Garage, con Gary Bradsky y Vadim Pisarevsky liderando
el proyecto. En este momento, OpenCV admite muchos algoritmos relacionados con
la Visión por Computador y el Aprendizaje Automático y se está expandiendo dı́a
a dı́a.
Actualmente, OpenCV admite una amplia variedad de lenguajes de programación
como C ++, Python, Java, etc. y está disponible en diferentes plataformas, inclu-
yendo Windows, Linux, OS X, Android, iOS, etc. Además, las interfaces basadas
en CUDA y OpenCL también están en desarrollo activo para alta velocidad de las
operaciones de GPU. OpenCV-Python es la API de Python de OpenCV. Combina
las mejores cualidades de OpenCV C ++ API y el lenguaje Python.
3.4.2. Caracterı́sticas
La biblioteca cuenta con más de 2500 algoritmos optimizados, que incluye un
conjunto completo de algoritmos de aprendizaje por ordenador y de visión artificial
tanto clásicos como de vanguardia. Estos algoritmos se pueden usar para detectar
y reconocer rostros, identificar objetos, clasificar acciones humanas en vı́deos, ras-
trear movimientos de cámara, rastrear objetos en movimiento, extraer modelos 3D
Capı́tulo 3. Metodologı́a 55
de objetos, producir nubes de puntos 3D desde cámaras estéreo, unir imágenes para
producir una alta resolución imagen de una escena completa, encuentre imágenes
similares de una base de datos de imágenes, elimine los ojos rojos de las imágenes
tomadas con flash, siga los movimientos de los ojos, reconozca paisajes y establez-
ca marcadores para superponerlos con realidad aumentada, etc. OpenCV tiene más
de 47 mil personas de usuarios Comunidad y número estimado de descargas que
superan los 14 millones. La biblioteca se utiliza ampliamente en grupos de inves-
tigación, organismos gubernamentales junto con empresas bien establecidas como
Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota que emplean la biblio-
teca, hay muchas empresas nuevas como Applied Minds, VideoSurf y Zeitera, que
hacen un uso extensivo de OpenCV.
Tiene interfaces C ++, Python, Java y MATLAB y es compatible con Windows,
Linux, Android y Mac OS. OpenCV se inclina principalmente hacia aplicaciones
de visión en tiempo real y aprovecha las instrucciones MMX y SSE cuando están
disponibles. Actualmente se están desarrollando activamente las interfaces CUDA y
OpenCL. Hay más de 500 algoritmos y aproximadamente 10 veces más funciones
que componen o admiten esos algoritmos. OpenCV está escrito de forma nativa en C
++ y tiene una interfaz de plantilla que funciona perfectamente con los contenedores
STL.
3.4.3. OpenCV-Python
Python es un lenguaje de programación de propósito general iniciado por Guido
van Rossum, que se hizo muy popular en poco tiempo principalmente debido a su
simplicidad y legibilidad de código. Permite al programador expresar sus ideas en
menos lı́neas de código sin reducir la legibilidad.
En comparación con otros lenguajes como C / C ++, Python es más lento. Pero
otra caracterı́stica importante de Python es que se puede extender fácilmente con C
/ C ++. Esta caracterı́stica ayuda a escribir códigos de computación intensiva en C
/ C ++ y crear un contenedor de Python para que se pueda utilizar envoltorios como
módulos de Python. Esto brinda dos ventajas: primero, el código es tan rápido como
el código original de C / C ++ (ya que es el código real de C ++ que funciona en
segundo plano) y, segundo, es muy fácil de codificar en Python. Ası́ es como funciona
Capı́tulo 3. Metodologı́a 56
Propuesta
Detección y
Conjunto de Algoritmo de
Descripción de Clasificador
imágenes agrupamiento
imágenes
Caltech 101 SVM, KNN
EM
Figuras ANN, RF
SIFT Kmeans
Números RT, Adaboost
Kmeans+EM
Sı́mbolos NBayes
Bibliotecas Numpy OpenCV Sklearn
Sklearn
empleadas cPickle CV2 Scipy
57
Capı́tulo 4. Propuesta 58
El conjunto de datos de las figuras se construyó desde cero, cada categorı́a con-
tiene 100 elementos, 80 para entrenamiento y 20 para evaluación.
import numpy as np
import cv2 as cv
K= [ ] , D= [ ]
d e s c r i p t o r = cv . ORB create ( )
img = cv . imread ( ’ t e s t . jpg ’ )
gray= cv . c v t C o l o r ( img , cv .COLOR BGR2GRAY)
s i f t = cv . ORB create ( )
kp = s i f t . d e t e c t ( gray , None )
img=cv . drawKeypoints ( gray , kp , img )
cv . i m w r i t e ( ’ s i f t k e y p o i n t s . jpg ’ , img )
k p t s=d e t e c t o r . d e t e c t ( gray )
kpts , des=d e s c r i p t o r . compute ( gray , k p t s )
K. append ( k p t s )
D. append ( des )
K-Means Clustering
Tiempo de ejecución.
Desventajas de K-means
Asume que los grupos son esféricos, por lo que no funciona de manera eficiente
con datos con formas geométricas complejas (en su mayorı́a no lineales).
EM clustering
No asume que los clusters sean de ninguna geometrı́a. Funciona bien con dis-
tribuciones geométricas no lineales también.
No modifica los tamaños del clúster para que tengan estructuras especı́ficas
como lo hace K-Means (Circular).
Desventajas
Utiliza todos los componentes a los que tiene acceso, por lo que la inicialización
de los clústeres será difı́cil cuando la dimensionalidad de los datos sea alta.
Difı́cil de interpretar.
4.4. Clasificadores
Se hizo uso de 7 clasificadores con el objetivo de hacer un sistema robusto, dado a
que no siempre un clasificador puede tener la misma precisión con diferentes grupos
de datos como se puede apreciar en la figura
Capı́tulo 4. Propuesta 64
(a)
(b)
Resultados
65
Capı́tulo 5. Resultados 66
Confusion F1 Cross
k Clustering classifier Presicion Recall
Matrix Score Validation
11 0 1 3
1 11 1 2
100 EM SVM 66 65 65 70
1 0 10 4
2 2 4 7
7 0 4 4
2 9 0 4
200 EM SVM 70 66 66 68
1 0 13 1
0 0 3 12
6 1 4 4
0 11 0 4
300 EM SVM 74 69 69 68
1 0 13 1
0 0 3 12
7 2 5 1
1 11 1 2
400 EM KNN 71 69 69 68
1 0 12 2
0 1 2 12
9 3 3 0
2 12 0 1
500 K means KNN 72 71 71 73
3 0 11 1
1 1 2 11
Confusion F1 Cross
k Clustering classifier Presicion Recall
Matrix Score Validation
18 2 0
100 K means ANN 0 18 2 90 90 90 93
0 0 20
20 0 0
K means
200 AdaBoost 0 18 2 96 96 96 91
EM
0 0 20
20 0 0
K means
300 ANN 0 17 3 93 93 93 93
EM
0 1 19
18 2 0
K means
400 ANN 0 17 3 92 91 91 93
EM
0 1 19
20 0 0
500 K means SVM 0 18 2 93 93 93 95
0 2 18
5.3. Números
En la tabla 5.3 contiene los mejores resultados para cada tamaño en k (diccio-
nario), el clasificador más adecuado y el método de agrupamiento en el conjunto de
datos de Números. Para este conjunto de datos, k = 100, Kmeans + EM clustering
y RF son los métodos más precisos.
Confusion F1 Cross
k Clustering classifier Presicion Recall
Matrix Score Validation
19 0 1
K means
100 RF 0 15 5 87 86 86 83
EM
0 2 18
7 12 1
200 EM NB 0 20 0 83 71 69 76
0 4 16
15 1 4
300 K means ANN 0 10 10 80 73 73 88
0 1 19
14 6 0
400 K means ANN 0 19 1 86 81 82 88
0 4 16
14 0 6
500 K means ANN 0 12 8 83 75 75 88
1 0 19
5.4. Sı́mbolos
En la tabla 5.4 contiene los mejores resultados para cada tamaño en k (diccio-
nario), el clasificador más adecuado y el método de agrupamiento en el conjunto de
datos de Sı́mbolos. Para este conjunto de datos, k = 100, el algoritmo de agrupa-
miento EM y el clasificador SVM son los métodos más precisos. Aunque la precisión,
sensibilidad y f1 de GNB obtienen un puntaje perfecto de 100, la validación cruzada
es la decisión crı́tica.
Confusion F1 Cross
k Clustering classifier Presicion Recall
Matrix Score Validation
7 0 0
100 EM SVM 0 16 0 100 100 100 96
0 0 9
7 0 0
200 K means NB 0 16 0 100 100 100 87
0 0 9
6 0 1
300 EM SVM 0 16 0 97 96 96 96
0 0 9
6 0 1
400 EM SVM 0 16 0 97 96 96 96
0 0 9
7 0 0
K means
500 ANN 1 15 0 97 96 96 100
EM
0 0 9
5.5. Resumen
Confusion F1 Cross
k Clustering Clasifier Dataset Presicion Recall
Matrix Score Validation
9 3 3 0
2 12 0 1
500 K means KNN Caltech 101 72 71 71 73
3 0 11 1
1 1 2 11
20 0 0
K means Figuras
200 AdaBoost 0 18 2 96 96 96 91
EM Geométricas
0 0 20
19 0 1
K means
100 RF Números 0 15 5 87 86 86 83
EM
0 2 18
7 0 0
100 EM SVM Sı́mbolos 0 16 0 100 100 100 96
0 0 9
Conclusiones
72
Bibliografı́a
Bay, H., T. T. and Van Gool, L. (2006). Surf: Speeded up robust features.
Dempster, A. P., Laird, N. M., and Rubin, D. B. (1977). Maximum likelihood from
incomplete data via the em algorithm. Journal of the Royal Statistical Society:
Series B (Methodological), 39(1):1–22.
Everingham, M., Gool, L. V., Williams, C. K. I., Winn, J., and Zisserman, A. (2009).
The pascal visual object classes (voc) challenge. International Journal of Com-
puter Vision, 88(2):303–338.
73
Bibliografı́a 74
Grauman, K. and Darrell, T. Efficient image matching with distributions of local in-
variant features. 2005 IEEE Computer Society Conference on Computer Vision
and Pattern Recognition (CVPR05).
Harris, C. and Stephens, M. (1988). A combined corner and edge detector. Procedings
of the Alvey Vision Conference 1988.
Ke, Y. and Sukthankar, R. (2004). Pca-sift: a more distinctive representation for local
image descriptors. Proceedings of the 2004 IEEE Computer Society Conference
on Computer Vision and Pattern Recognition, 2004. CVPR 2004.
Koh, J. E., Ng, E. Y., Bhandary, S. V., Hagiwara, Y., Laude, A., and Acharya,
U. R. (2018). Automated retinal health diagnosis using pyramid histogram of
visual words and fisher vector techniques. Computers in Biology and Medicine,
92:204–209.
Lazebnik, S., Schmid, C., and Ponce, J. Beyond bags of features: Spatial pyramid
matching for recognizing natural scene categories. 2006 IEEE Computer Society
Conference on Computer Vision and Pattern Recognition - Volume 2 (CVPR06).
Niebles, J. C., Wang, H., Wang, H., and Fei-Fei, L. (2006). Unsupervised learning of
human action categories using spatial-temporal words. Procedings of the British
Machine Vision Conference 2006.
Sivic and Zisserman (2003). Video google: a text retrieval approach to object mat-
ching in videos. Proceedings Ninth IEEE International Conference on Computer
Vision.
Sivic, J., Russell, B. C., Efros, A. A., Zisserman, A., and Freeman, W. T. (2005).
Discovering objects and their location in images. In Computer Vision, 2005.
ICCV 2005. Tenth IEEE International Conference on, volume 1, pages 370–
377. IEEE.
Swain, M. and Ballard, D. (1990). Indexing via color histograms. [1990] Proceedings
Third International Conference on Computer Vision.
Von Ahn, L. and Dabbish, L. (2004). Labeling images with a computer game. In
Proceedings of the SIGCHI conference on Human factors in computing systems,
pages 319–326. ACM.
Weeks, D. E. and Lange, K. (1989). Trials, tribulations, and triumphs of the em al-
gorithm in pedigree analysis. Mathematical Medicine and Biology, 6(4):209–232.
Bibliografı́a 76
Wong, K., Casey, R., and Wahl, F. (1982). Document Analysis System. Research
reports // IBM. IBM Thomas J. Watson Research Division.
Publicaciones
77
Apéndice A. Publicaciones 78
Certificate of Publication
To:
Baldemar Zurita
Master in Computer Systems
Apizaco Technological Institute
Apizaco, Mexico
Authors are hereby granted the copyright of the paper under CC License 4.0 with
regards to CCS open-access and copyright policy. The article will be freely
available for public access worldwide.
Thanking you,
Regards,
Editorial Office,
Circulation in Computer Science
editor@ccsarchive.org
Certificate of Publication
This certificate is awarded to Baldemar Zurita as an appreciation for
publishing a paper entitled “BOVW FOR CLASSIFICATION OF
GEOMETRIC SHAPES” in Journal of Computer - JoC
www.journal.computer Issue: 6
Estancias
80
Apéndice B. Estancias 81