Sesiones Notebooks
Sesión 3 Feature Extractor
Sesión 4 Random System
Sesión 5 Search Engine
Sesión 6 Classification
Sesión 7 Features   Search Engine   Classification
Examen Final Search Engine   Final Classification

¿Quiénes somos?

Somos un grupo de estudiantes de la Universidad Politécnica de Catalunya, que cursamos el grado de Ingenieria de Sistemas Audiovisuales.

Este grupo está formado por los alumnos:

Alumnos LinkedIn
Mi Steinbach
Sarai Vizuet
Felipe Christian Cuzcano
Albert Bruna Enlace
Joshua Molina Enlace

¿Qué es Search-Around?

Search-Around es un proyecto que está en fase de desarrollo. Este está diseñado en el lenguaje de python. Este proyecto se basa en dos ideas:

1. Buscador visual

2. Clasificador de imágenes


Para hacer estas dos ideas, este proyecto se basará en los siguientes pasos:

Buscador Visual

La idea de este apartado es que el programa debe comparar la imagen de referencia con toda la base de datos y, después, debe dar una secuencia de imágenes, cuyas tengan la máxima simlitud a la imagen de referencia.

Para hacer una búsqueda visual a través de una imagen que cogemos como referencia, el programa empieza buscando los puntos de interés de dicha imagen y sus respectivos descriptores.

En este proceso hay cuatro fases/funciones, tal y como está explicado en el notebook de la sesión 5, que son los siguientes:

- Get Local Features - Train Codebook - Get Assignments - Build Bow

Una vez hecho estas cuatro fases, hay una función principal que reune todas las funciones anteriores llamada Extract Features, que a partir de esta obtenemos los resultados mostrados más adelante.

Puntos de interés

Para obtener los puntos de interés de una imagen hemos utilizado el descriptor 'ROOTSIFT'. A continuación podemos ver una foto del ayuntamiento de Terrassa después de obtener diferentes puntos de interés.


Nuestra base de datos está formada por 900 fotos, de las cuáles 600 fotos son de varios edificios de Terrassa, y las otras 300 son sobre cualquier otro edifcio.

Los distintos edificios de Terrassa que se pueden encontrar en esta base de datos son:

MNACTEC                                                 Mercat de la Independència             Ajuntament de Terrassa

Societat General d'Electricitat                                       Estació del Nord                     Monument de la Dona

Escola d'Engenyeria de Terrassa                 Catedral de Terrassa                             Farmàcia de Albinyana

Masia Freixa                                                       Castell Cartoixa                                           Teatre Principal


Extracción de características con Bag of Words

Para hacer esto, primero generamos un descriptor para cada imagen de entrenamiento y de validación. Utilizamos la técnica de Bag of Words, que consiste en la formación de un codebook de palabras visuales y la construcción de un descriptor de imagen, codificando el número de veces que cada palabra en el codebook aparece en la imagen.

Ranking

Una vez extraído y almacenado los BoW descriptors, calculamos las distancias de cada descriptor de imagen en el conjunto de validación para todos los descriptores de imagen en el conjunto de entrenamiento. Una vez que tenemos estas distancias, podemos utilizarlas para clasificar las imágenes en el conjunto de entrenamiento de menor a mayor.

Evaluación del Ranking

Mean Average Precision 0.282442731466

- Average Precision de cada una de las imágenes:

· mercat_independecia 0.273181304933     · societat_general 0.32054599591

· farmacia_albinyana 0.260130410298         · ajuntament 0.779229430976

· mnactec 0.230665367417                             · escola_enginyeria 0.371677589082

· masia_freixa 0.187387928289                     · castell_cartoixa 0.263374591941

· dona_treballodora 0.087948673167         · catedral 0.17692925318

· teatre_principal 0.253857229101               · estacio_nord 0.184385003301


Ahora veremos un ejemplo para dos imágenes:

En esta última imagen da mejor resultado que la primera, ya que la clase 'ajuntament' tiene una precisión alta (0.779). En cambio la clase 'masia_freixa' tiene una precisión 6 veces menor (0.187).


Clasificador de imágenes

Este apartado está dividido en dos fases/funciones, que son el Train Classfier y el Classifier.

Para poder entrenar el clasificador utilizamos el diccionario de entrenamiento creado a partir de la función Extract Features hecha con anterioridad, y la lista de anotación.

Una vez entrenado el clasificador, lo cargamos en la función Classifier, junto al diccionario del conjunto de validación (para obtener sus BoW) y la anotación (dónde se podrá comparar las clases reales).

Creamos una lista de identificadores y otra con los BoW (Bag of Words). Y por último hacemos la predicción de los BoW del conjunto de validación respecto al modelo de entrenamiento.

Una vez hecho estas dos funciones utilizamos un evaluador para poder obtener los siguientes resultados:


Measures Results
F1 : 0.802964535743
Precision : 0.823157560094
Recall : 0.805128205128
Accuracy : 0.794444444444

- Dónde F1 es la medida de precisión que tiene el test, que combina los valores de la precisión y del recall.

- La precisión es la fracción de los documentos recuperados que son relevantes para la consulta.

- Recall es la fracción de los documentos que son relevantes para la consulta que se recupera satisfactoriamente.

- Accuracy es la exactitud de los resultados.


Matriz de Confusión


Comparación de puntos de interés

En la siguiente imagen observamos una líneas de color azul que unen las dos imagenes que son de la misma clase 'ajuntament'.

Lo que está haciendo es comparar los puntos de interés de dichas imágenes.