Archive for 25 enero 2010

h1

Weka 3

enero 25, 2010

Mirando SVM’s encontré esta , la cual ofrece un interfaz para java. A priori no tiene mala pinta.  Es open source bajo el licenciamiento GNU General Public License. Se encuentra estructurada de la siguiente forma:

– Instancias: se trata de los datos

– Filtro: pre-procesado de los datos

– Clasificador: trabajará sobre los datos ya procesados

– Evaluación: cuanto de bueno es el clasificador

– Selcción de atributos: se eliminarán los atributos irrelevantes de nuestros datos. Es decir, aquellas características que no sean discrinantes

Para realizar la entrada de datos hace uso de los ficheros ARFF (Attribute-Relation File Format). Se trata de ficheros de texto ASCII los cuales describen la lista de instancias, que comparten atributos, de un set (clasificación/clase/tipo).  Para crear estos ficheros nos ofrecen un código que se encarga de ello :-). También ofrecen ficheros de sintaxis para editores como UltraEdit, TextPad, notepad++, vim/gvim.

Todo esto y muchas mas cosas viene detallado en su Wiki, la cual me parece muy completita. Añado el enlace al poyecto y a la wiki.

Por el camino me he encontrado con el un demostrador creado por la gente de ShowRoom. Dicho demostrador está enfocado al reconocimiento de obras de arte. Para ello se han valido de una base de datos formada por imágenes de obras de diferentes pintores. La verdad es que he probado con imágenes de obras que he buscado yo (no se si estarán en esa base de datos) y ha funcionado bastante basntante bien.

NOTA: Utiliza un sistema CBIR de código libre llamado FIRE – Flexible Image Retrieval Engine

FIRE - Flexible Image Retrieval Engine

Para el próximo día he estado mirando un poco de info sobre aquitecturas de los sitemas de recuperación. Y también numerosos parámetros relacionados con texturas, color y distancias, en los que deberé ir profundizando un poco mas.

h1

SVM’s Intro

enero 20, 2010

Tras varios días mirando cositas de SVM’s y alguna que otra charlita con Antonio me dispongo a resumir un poco lo que he ido viendo e ir plasmando algunas cosillas e ideas básicas (es posible que no aporten mucho) para que no caigan en el olvido.

SVMSupport Vector Machine (máquinas de vectores de soporte). La idea básica es que dado un conjunto de puntos, determinados por dos parámetros,   los cuales  pertencen a dos categorías. Un algoritmo se encargará de predecir si un nuevo punto se encuentra en una categoría u otra. Para ello elaborará un hyperplano que separará con el menor error y el mayor margen posibles ambas categorías.

A esto se le puden aplicar mas parámetros para los componentes analizar y tambíen más clasificaciones.

Buscando he enconctrado varias aplicaciones web que muestran el funcionamiento de estas máquinas. Con ellas puedes ver claramente los hyperplanos calculados y los vectores de soporte. Estos últimos son los vectores formados por los puntos mas cercanos al hyperplano. Se han colocado los enlaces en una sección nueva llamada SVM applets.

A continuación expondré como se realciona esto con lo que se ha visto hasta ahora.

IDEA BÁSICA

* Muestreo: Esta parte del proyecto será en la que nos dedicaremos a la obtención de los parámetros que nos permitirán clasificar nuestras imágenes. Dichos parámetros deberán ser cuanto mas discriminantes mejor. De esta manera los resultados de clasificación serán mas óptimos. Para reducir el ruido en nuestras imágenes y centrarnos en características mas generales que no nos desvíen de la moda, utilizaremos la técnica del pixelado que se comentó anteriormente.

* Clasificación: Aquí es donde entran las SVM. Tras un entrenamiento de la SVM, esta se encargará de procesar nuestras muestras (parámetros extraidos de una imagen) y con estas muestras y su conocimiento adquirido, determinará la clase de esa imagen.

Entrenamiento: En este proceso se pasan a la máquina determinadas entradas, las cuales se sabe que pertenecen a una clase en concreto. De esta manera nuestra máquina irá adquiriendo el conocimiento necesario para posteriormente poder clasificar las muestras que le pasemos.

h1

Say HI to histogram

enero 11, 2010

Después de muchos días de parón vacacional y demás. He decidido ponerme las pilas porque sino no hay manera.

He estado mirando varias cosillas por ahí. Y he visto como obtener un histograma de los compenentes RGB de una imagen que represente la cantidad de estos. Pero aún me encuentro en proceso de entender el código. Ya que me es complicado entre las sentencias de java y las peculiaridades de las librerías específicas.

Una vez obtenido el histograma hay que dibujarlo. Este se guarda en un tipo Histrogram, de donde hay que obtener su parámetro bin. El cual si no me equivoco es un array de enteros [3][256]. Pero aún no se muy bien qué significan esos enteros.  Así que tendré que profundizar un poco mas. Aquí os dejo una capturilla de un histograma.

Por el camino. He visto como utilizar un interfaz para cargar ficheros y así utilizarlos como parámetro. Útil para hacer pruebecillas y tal. Se ha usado javax.swing.JFileChooser. Una capturilla.