¿Existe en una obra una huella digital que permita identificar el artista que la creó? Nuestro equipo busca responder a esta pregunta usando herramientas y tecnicas de mineria de datos. Para esto entrenamos un clasificador que pueda reconocer el autor o la técnica usada para realizar una obra usando información acerca de sus colores. En el siguiente informe se explican los métodos y datos usados.
Una imagen en sí es un dataset donde cada pixel es una observación. Los atributos de cada pixel son: Posición, grado de rojo, grado de azul y grado de verde. Nuestro trabajo busca sacar información de las fotos. Sin embargo, una foto no es comparable con otra. Pues sus dimensiones o cantidad de colores pueden ser distintas. Por esto, para poder realizar comparaciones razonables, se deben normalizar estos conjuntos de datos entre sí. Para realizar esta normalización se utiliza la herramienta K-means. Con la cual se busca extraer una muestra uniforme de la cantidad de colores en la imagen. Este procedimiento ignora completamente la información sobre la posición de los píxeles. Esto puede ser considerado una falla en el procedimiento y quizás sea necesario emplear otras herramientas en el futuro.
K-Means es un método de clustering no supervisado. El objetivo de este método de clustering es minimizar la distancia entre los elementos de un cluster y los centroides de cada cluster moviendo los centroides, recalculando los clusters e iterando hasta que se encuentre una convergencia. Este método siempre encuentra clusters, aún si no existen, pues se inicializa asumiendo la existencia de los clusters. Sin embargo, no siempre converge, al ser un método iterativo. Si no converge se le puede poner un límite a la cantidad de iteraciones y considerar ese resultado “suficientemente bueno”.
En este proyecto se realizó un k-Means con distinta cantidad de cluster buscando comprimir y normalizar la información contenida en una imagen. El algoritmo considera los valores de los colores (RGB) de cada pixel como indicador de posición en un espacio tridimensional, y mueve el centroide dentro de este espacio hasta encontrar un buen clustering, dentro del límite de iteraciones pedido.
La DataBase se obtuvo del link http://www.wga.hu/database/download/data_txt.zip. Este consiste de 41162 registros de fino arte Europeo del siglo 8° al 19°. Cada registro o fila consiste en 11 atributos dictados a continuación:
-Autor -Fecha Nacimiento-Muerte -Título de la obra -Fecha -Técnica -Ubicación -URL que lleva a una imagen de la obra. -Tipo de arte, esto es pintura, cerámica, escultura, etc. -Género, por ejemplo: mitológico, retrato, paisaje, etc. -Escuela -Línea de tiempo, lo que sería el periodo activo de la obra.
Como se dijo anteriormente, el dataset cuenta con 41162 entradas. El análisis de los datos permitió descubrir un número de problemas que debieron ser solucionados. Afortunadamente, la página web del dataset ya contenía gráficos estadísticos sobre el mismo. Estos consisten en el número de autores, número de obras por técnica, etc.
Gracias a los gráficos anteriores y nuevos histogramas generados por nosotros, obtuvimos información valiosa sobre el dataset: La mayoría de las obras eran pinturas y habían autores con muy pocas pinturas. Por eso se tomó la decisión de reducir el dataset original a uno que solo considera pinturas y artistas con más de 15 de ellas. Esto se hizo para que el clasificador tuviera varias muestras para entrenarse por artista.
Sumado a lo anterior tuvimos que eliminar los siguientes tipos de registros: Aquellos que tuviesen una celda incompleta y los imágenes que eran acercamientos o zoom de la original. Luego de hacer estos cambios el dataset se redujo a un cuarto de su tamaño original.
Con los datos ya limpios, el siguiente paso consiste en ocupar la url de cada imagen del dataset para descargar dicha imagen. Esto se hace para luego realizar el algoritmo KNN sobre las imágenes para obtener información respecto a los colores de esta.
Para lograr lo anterior se escribió un sencillo script en Python.
Para realizar el análisis KNN sobre algún tipo de dato, es necesario dar como parametro el numero de clusters a encontrar. En nuestro caso primeramente se probó con 32 clusters. Desafortunadamente el tiempo que toma procesar 11000 imágenes era mucho mayor al esperado, por lo cual se tuvo que entrar en una segunda limpieza de datos.
Se tuvo que reducir nuevamente el dataset debido al largo tiempo de cómputo del algoritmo KNN. Se aprovechó esta instancia para generar dos datasets, uno para hacer un clasificador de autores y otro de técnicas. Para reducir la cantidad de registros del primero, se eliminaron todos los artistas con menos de 45 obras. Cada dataset quedo con alrededor de 1000 entradas.
A continuación mostramos algunos gráficos de los datasets resultantes:
Finalmente, fue posible aplicar KNN sobre las imágenes y generar resultados. Para cada dataset, se realizó el algoritmo con 32, 64 y 128 clusters. Luego de esto, los datos obtenidos fueron integrados a los dataset anteriores, por lo que se formaron 6 datasets, 1 por cada combinación tipodataset x n°clusters.
Con lo anterior terminado, se escribió un código en Python que genera la matriz X, la cual contiene los atributos que predicen, y el vector y, el cual contiene la clase a predecir (autores o técnicas),los cuales luego serán utilizados para generar los sets de entrenamiento y predicción.
11 era el número original de atributos en el dataset. Ahora son 11 + k, donde k es el número de clusters del knn. Debemos considerar que hay algunos atributos de los 11 originales que no aportan a la clasificación.
Tomando en cuenta esto, se generaron tres conjuntos de atributos de prueba: El primero solo contempla los atributos del dataset originales, es decir, no ocupamos nada de lo producido por el knn. El segundo ocupa solo la información producida por el knn. El tercer es una combinación de los anteriores.
El dataset definitivo debe ser completado con la información de las fotos. Para esto se empleó un algoritmo que realiza un análisis K-Means sobre cada imagen referenciada por la fila del dataset y le “adjunta” unas nuevas columnas de información con el color centroide de cada cluster encontrado por K-Means ordenados por cantidad de pixeles de izquierda a derecha. De esta forma el dataset resultante que debe calcular K-Means con 32 clusters objetivos es de 35 atributos.
La información considerada relevante para clasificar autores es: La técnica, el tema, la escuela y los colores. La información relevante para clasificar a las técnicas es: El tema, la escuela y los colores.
Cada dato no numérico fue mapeado a un número único. Como no intentamos encontrar información sobre de las palabras, solo importa que cada palabra tenga un mapeo único. Una vez generado el dataset con la información relevante, se generan el set de entrenamiento y el set de prueba y se entrenan los clasificadores.
Cada clasificador entrenado se compara con un baseline. Para el caso de un clasificador de autores se usó un clasificador dummy uniforme, pues todos los autores tienen la misma representación. Para el clasificador de técnicas se usó como baseline un clasificador dummy estratificado pues la representación de las técnicas no es uniforme. Para clasificar autores y técnicas se hicieron clasificadores con k-means de 32, 64 y 128 clusters.
Se corrieron clasificadores knn y dummy para dos datasets (autores y técnicas), habían tres manera de elegir atributos para clasificar (atributos originales, atributos obtenidos por knn y una la combinación de ambos) y existían tres números de clusters con que se corrió el algoritmo distintos (32, 64, 128). El output del algoritmo puede ser visto a continuación:
Analizamos los resultados:
Vemos que las primeras imágenes hacen referencia al dataset de autores, en las 3 variedades de k para el knn. Como se esperaba, en cualquier caso el clasificador dummy hace un peor trabajo que el clasificador knn. Debemos notar que a pesar que usando solo los atributos obtenidos por el knn para entrenar el clasificador, igual se logra cierto éxito, tomando en cuenta que debe reconocer entre más de 10 artistas. Sumado a esto tenemos que el clasificador que combina atributos originales mas lo del knn hace el mejor trabajo clasificando en general.
Repitiendo el análisis anterior para el dataset de Técnicas, vemos que el comportamiento de este fue similar al anterior. Nuevamente los colores (atributos knn) permiten predecir con baja precisión las clases y la combinación de atributos permite el mejor reconocimiento de todos.
Finalmente notemos que al aumentar la cantidad de clusters, el desempeño del clasificador disminuye.
Nuestra más fuerte conclusión es que es posible extraer información relevante de las imágenes, en nuestro caso los colores, que permite reconocer obras por artista o técnica. Si bien el clasificador no exhibe la mejor precisión, los experimentos realizados dan a entender que se puede ir mejorando la eficiencia de este. Podemos entonces decir que nuestra hipótesis no fue refutada, ya que hay evidencia que indica la existencia de la “huella digital” de los artistas en sus obras.
Ahora tenemos las siguientes conclusiones respecto a la técnica ocupada: - Con k-means es posible obtener una división de clases significativamente mejor que con el caso aleatorio. - Aunque la mejora en la clasificación con los clusters de colores no es tanta dada la cantidad de información necesaria. - Además, aumentar la cantidad de clusters empeora el rendimiento del clasificador.