visuse

VISUal Search Engine

Conclusiones del proyecto

El proyecto ha logrado cumplir todos los objetivos básicos que se habían propuesto y respetando las especificaciones planteadas.

Se han desarrollado buscadores para diferentes módulos que obtienen la información, la organizan y la puntúan según distintos clientes. Todo esto se realiza utilizando una estructura modular que permite una fácil extensibilidad de la aplicación, lo que ha permitido que terceras personas colaboren con el proyecto e implementen sus propios módulos para distintos buscadores y utilizando distintos sistema de comunicación con ellos, contando finalmente el proyecto con media docena de módulos. Esta estructura modular también permite que los errores en unos módulos no afecten al resto.

Por otra parte, del lado del cliente se ha creado una agradable a la par que simple interfaz que muestra los resultados de una forma paginada y que da la sensación de rapidez al ir mostrando los resultados conforme son recibidos del servidor. Esto permite que la experiencia del usuario sea satisfactoria, además de que se le permite que no tenga que abandonar el buscador para consultar los resultados.

El resultado ha sido probado en distintos navegadores modernos con satisfactorio resultado, gracias a que ha sido desarrollado empleando estándares y tecnologías abiertas. Además, independientemente del navegador utilizado, los resultados se ajustan al espacio dejado libre por la ventaja del navegador.

En cuanto a los métodos de disposición de los resultados en la pantalla se han estudiando distintas alternativas, consiguiendo grandes resultados con el algoritmo voraz implementado al ejecutarse en un tiempo muy reducido, que además permite representar los resultados más interesantes (mejor puntuados) a un tamaño mayor y en las primeras páginas. La aplicación del enfriamiento simulado no ha sido satisfactoria, pero su estudio ha permitido sacar interesantes conclusiones sobre la conveniencia de aplicar este tipo de búsqueda y sobre cómo aplicarla.

Por último, la madurez del software desarrollado ha permitido que sea publicado e instalado para el acceso público en http://visuse.com. El desarrollo del proyecto también ha supuesto una interesante contribución a la comunidad de software libre, que puede reutilizar este trabajo para cualquier otro fin relacionado y que ha reconocido dicha contribución. Todo el código del proyecto se encuentra disponible en https://forja.rediris.es/projects/cusl4-visuse/.

15 agosto 2010 Posted by | General | , , , , , , , , , , , , , | 2 comentarios

Evaluación de la disposición de imágenes

Los tiempos de ejecución obtenidos mediante el enfriamiento simulado no son demasiados buenos, para 10 iteraciones (un número muy bajo para el enfriamiento simulado) en un computador moderno tarda más de 10 segundos, lo que claramente es un rendimiento inaceptable. Analizando con un el ‘profiler‘ de la extensión Firebug para Mozilla Firebug se detectan los principales cuellos de botella: más del 50% del tiempo es invertido en calcular el fitness de la solución, por lo que utilizando como función de evaluación el número de espacios que quedan en la matriz no es factible aplicar el enfriamiento simulado. Podríamos utilizar otros como función de fitness el número de imágenes utilizado, pero puede utilizándose muchas imágenes el desaprovechamiento de la pantalla sea muy grande.

Evolución del fitness de la solución en 10 iteraciones

Analizando también la calidad de la solución obtenida, llegamos a la conclusión de que apenas existe diferencia entre aplicar el enfriamiento simulado unas pocas iteraciones y quedarnos con la primera solución de la que partíamos, como se puede observar comparando las figuras siguientes:

Espacio ocupado y libre en la ventana sin aplicar el enfriamiento simulado

Espacio ocupado y libre en la ventana tras aplicar el enfriamiento simulado durante 10 iteraciones

Para estimar cuántas iteraciones serían necesarias para obtener resultados que fuesen apreciables se hace una ejecución de 50 iteraciones en la que se enfría la temperatura cada 5 y los resultados son los observados en la imagen siguiente, comparando el espacio que queda ahora libre con el total disponible ahora sí se aprecia una importante mejora. Sin embargo, debido al tiempo que tarda cada una de las ejecuciones no es viable.

Espacio ocupado y libre en la ventana tras aplicar el enfriamiento simulado durante 50 iteraciones

La razón por la que es difícil conseguir mejoras con respecto al algoritmo greedy inicial puede ser debida a la ordenación de mayor a menor realizada al inicio de éste. Como ya estudió Daniel Selator, una buena técnica es empezar colocando las imágenes mayores para después intentar rellenar los huecos dejados por ellas con las imágenes más pequeñas. Es obvio que si en último lugar consideramos las imágenes más grandes nos va a ser más difícil conseguir una óptima distribución.

5 agosto 2010 Posted by | Mejoras | , , , , , , | Deja un comentario

Proyectos de disposición de imágenes similares

Si consultamos cualquier lista de sitios más visitados de la red, encontramos que la clasificación está encabezada por buscadores, redes sociales y sitios de contenidos multimedia tal y como se puede apreciar en Alexa. Los buscadores llevan indexando la red y ayudando a los usuarios a encontrar recursos desde 1993 y en la última década, ayudado por el aumento de la velocidad de acceso de los usuarios, los contenidos multimedia han inundado la red.

Es lógico que en todo este tiempo hayan surgido distintos buscadores especializados en contenidos multimedia y los buscadores tradicionales también hayan desarrollados sus versiones centradas en dichos contenidos. Sin embargo, estos buscadores siguen mostrando los resultados de forma similar a los resultados de texto, organizándolos en páginas con muy pocos resultados y añadiéndoles pequeños thumbnails, haciendo la búsqueda del usuario lenta e incómoda.

Recientemente ha habido algunos intentos para mejorar estas interfaces:

Bing Visual Search

El buscador Bing añadió un servicio llamado Visual Search, cuyo objetivo es sustituir las tradicionales búsquedas de texto por búsquedas a través de imágenes clasificadas en categorías y subcategorías, para ello diseñaron una nueva interfaz utilizando Silverlight. Sin embargo, el objetivo de este servicio no es encontrar imágenes u otros contenidos multimedia, sino reemplazar las tradicionales búsquedas de texto por otras visuales.

oSkope

oSkope por su parte es otro buscador que permite, mediante Flash, visualizar de distintas maneras los resultados de otros buscadores como Google Images o Youtube. Sus principales desventajas son que no nos permite combinar los resultados de distintos buscadores, no ordena por puntuación los resultados en el mural y no permite visualizar los contenidos multimedia en el propio buscador.

Spezify

El servicio Spezify sí que permite combinar resultados de distintos buscadores multimedia y visualizarlos en el propio buscador, sin embargo, no realiza ninguna ordenación según la importancia de los resultados y su distribución en un gran mural por el que tenemos que ir desplazándonos y en el que hay grandes huecos; todo esto hace muy difícil encontrar los resultados que deseamos.

Como se puede apreciar, ninguno de los buscadores existentes ha trabajado la disposición de las imágenes en función de su importancia ni la disposición óptima de los resultados para formar un muro que no desaproveche espacios.

25 julio 2010 Posted by | General | , , , , , , , , , , , | Deja un comentario

Aplicación del enfriamiento simulado

El enfriamiento simulado (o recocido simulado o simulated annealing) consiste en una búsqueda por entornos que, a diferencia de la búsqueda local, permite aceptar soluciones peores en función de una probabilidad que va disminuyendo con el tiempo. De esta forma, al principio se realiza una búsqueda con mayor diversificación y al final se intensifica la búsqueda, al ser más difícil que se acepte una solución peor.

Para aplicar el enfriamiento simulado se adapta el código desarrollado por Jesús González Peñalver que optimiza la disposición de un periódico online La temperatura inicial, que determina la probabilidad para aceptar soluciones peores, es iniciada según sugiere Kirkpatrick y el algoritmo recibe como parámetros el número de iteraciones a realizar y cada cuántas iteraciones se modificará la temperatura.

Como el resultado del algoritmo voraz depende de el orden en que se consideran las imágenes, lo que se hace es aplicar la técnica del enfriamiento simulado sobre el orden de dichas imágenes de entrada, siendo inicialmente el orden de este de mayor a menor importancia. Aplicar el enfriamiento simulado sobre la salida del algoritmo voraz sería más complicado y no merecería la pena, ya que no sería muy difícil aplicar una mutación sobre el resultado que minimice el número de huecos dejados.

El operador de mutación empleado consiste en intercambiar dos miembros distintos y seleccionados al azar de la lista. La función de evaluación o fitness es el número de huecos que quedan tras aplicar el algoritmo voraz.

18 julio 2010 Posted by | Mejoras | , , , , , , , , , , , , , , | Deja un comentario

Visuse y el software libre

Todo el software desarrollado está liberado, bajo la licencia GPLv3, al igual que toda la documentación sobre este proyecto. Esto significa que cualquiera puede usarlo para cualquier propósito, compartirlo, estudiar su funcionamiento, modificarlo y compartir esas modificaciones. Pero el software libre no significa únicamente una serie de libertades para el usuario, también es beneficioso para el propio proyecto: recibe visibilidad (publicidad), logra mejoras gracias a la retroalimentación de los usuarios y recibe la colaboración de otros usuarios.

La liberación del software y la documentación también permite la transferencia de conocimientos y la innovación tecnológica, haciendo que el proyecto no quede estancado una vez que finalice, sino que pueda servir para cubrir futuras necesidades continuando su desarrollo o integrándose en el de otro proyecto. Este proyecto, además, se basa completamente en estándares abiertos y herramientas libres, por lo que es también una obligación moral devolver a la comunidad lo recibido, además de que algunas licencias obligan a liberar los desarrollos derivados.

El proyecto no ha sido únicamente liberado, sino que ha sido desarrollado en un proceso completamente abierto, siendo accesibles todos los avances del desarrollo en una forja (https://forja.rediris.es/projects/cusl4-visuse/) y publicando información sobre él en este blog. El desarrollo ha permitido también la colaboración de los usuarios mediante el envío de sugerencias de mejoras y errores.

Por último, el proyecto ha participado Concurso Universitario de Software Libre en el que ha recibido el 2º premio al Mejor Proyecto Comunidad en el concurso nacional y Premio a la Difusión en el concurso granadino.

11 julio 2010 Posted by | General | , , , , , , , , , , , | Deja un comentario

Memoria del Proyecto Fin de Carrera

El pasado 1 de Julio presenté Visuse como mi proyecto fin de carrera en la ETSIIT de la UGR. Esta es la memoria (quizás mucho más escueta de lo que me hubiese gustado) que entregué para ello:

Durante este verano se publicarán entradas en este blog que son similares o iguales a partes de la memoria, pero un poco adaptadas al formato web.

Esta fue la presentación que empleé:

4 julio 2010 Posted by | General | , , , , , , | Deja un comentario

Herramientas y tecnologías utilizadas

Las herramientas y tecnologías escogidas para el desarrollo de un proyecto deben ser escogidas cautelosamente, ya que pueden suponer el fracaso de éste o pueden aumentar su complejidad, para lo cual deberemos conocer cuales son las distintas alternativas y las necesidades de nuestro proyecto. Además todas las tecnologías son libres y compatibles con la licencia escogida para liberar el proyecto.

Del lado del cliente

En cuanto a ejecución de código en el navegador del usuario para determinar la disposición de los resultados, las alternativas son básicamente dos: utilizar código JavaScript o una aplicación utilizando la tecnología de Adobe Flash. La primera alternativa está hoy presente en la práctica totalidad de las navegadores y, aunque hay problemas por las diferencias entre los distintos intérpretes, existe cierto grado de estandarización. La segunda nos permitiría evitar esas diferencias de ejecución en los distintos navegadores si utilizamos la implementación oficial, sin embargo las aplicaciones Flash son pesadas de cargar, su tecnología es privativa (lo que va en contra de la naturaleza abierta de la web) y obligan al usuario a instalar un complemento a su navegador que muchas veces no está disponible en todos los navegadores (como pasa en los de los dispositivos móviles).

Debido a la falta de estándar de JavaScript/ECMAScript es aconsejable la utilización de una biblioteca que nos permita no tener que preocuparnos porque nuestros desarrollos se ejecuten de formas distintas en los diferentes navegadores. Además la utilización de grandes bibliotecas o framework simplifican la manipulación del DOM (Documment Object Model), el tratamiento de eventos y la comunicación asíncrona. Dentro de la amplia variedad de librerías para JavaScript disponibles me decanté por el uso de jQuery por su velocidad y simplicidad, porque tiene una baja curva de aprendizaje y cuenta con una excelente documentación y porque pone a nuestra disposición una gran cantidad de extensiones.

A la hora de hacer la disposición de resultados en la pantalla, una vez descartada la tecnología Adobe Flash por las razones comentadas, nos quedan básicamente dos alternativas: la utilización de XHTML/HTML o de HTML5. Para disponer imágenes en un punto concreto de la página es suficiente con la utilización de HTML en combinación con hojas de estilos indicando a las imágenes que se sitúen en posiciones absolutas, aunque sería más complicado lograr complejos efectos de animación (aunque no imposible, utilizandolo en combinación con JavaScript). En cambio, HTML5 es aún un borrador, no aportaría demasiadas funcionalidades (únicamente la inclusión de efectos bonitos con la utilización del elemento canvas) y está aún en proceso de implantación, sólo disponible en las últimas versiones de los distintos navegadores y en algunos casos parcialmente.

Del lado del servidor

Del lado del servidor, se eligió como lenguaje de programación Python debido a que se trata lenguaje de alto nivel que sin embargo no se puede considerar y que tiene una importante presencia entre las aplicaciones web debido a su velocidad y la facilidad para desarrollar en él. Además genera un código fácil de leer y su biblioteca estándar muy completa, especialmente fue especialmente útil en la serialización de los objetos en JSON, mediante la librería jsonpickle, para transmitirlos al lado del servidor.

En combinación con Django, permite la rápida creación de sitios web complejos desarrollados con una estructura modular, facilitando el uso de plantillas, accesos a bases de datos, uso de direcciones amigables y creación de cachés.

Comunicación

En la comunicación, como se ha comentado, se hace uso de JSON (JavaScript Object Notation), un formato ligero para el intercambio de datos, frente a su principal alternativa XML, un lenguaje de marcado de propósito general. La elección de JSON se debe a la velocidad en que se procesa en JavaScript, a que resulta muy simple tanto para humanos como para máquinas, a que está orientado a las estructuras de datos de los lenguajes de programación modernos y a que no necesitamos la validación mediante esquemas de las respuestas.

Realmente esta decisión no supone un gran compromiso, con unas simples modificaciones la comunicación se podría realizar utilizando XML sin afectar a las dos partes involucradas en la comunicación.

16 junio 2010 Posted by | Tecnologías | , , , , , , , , , , , , , , , , | Deja un comentario

Segundo Premio al Mejor Poyecto Comunidad en el CUSL nacional

Después de las grandes noticias de ser ganador del premio a la mejor difusión en el CUSL granadino y finalista en la edición nacional, y tras dos días maravillosos en Cádiz (sede de la final del concurso), se han conocido los ganadores y este proyecto ha sido nombrado segundo Mejor Proyecto Comunidad.

Aparte de agradecer a todos los que me ayudaron con el proyecto como ya lo hice al ganar el premio local, quiero en esta ocasión dar las gracias a los organizadores del evento, que han hecho un trabajo inmejorable, y a todos los participantes, con los que ha sido un lujo compartir estos días en Cádiz y que han mostrado un nivel tremendo.

Enhorabuena al resto de premiados, que han sido los siguientes:

Mejor proyecto accesibilidad

Mejor proyecto educación y ocio

Mejor proyecto innovación

Mejor proyecto comunidad

Mejor proyecto movilidad

14 May 2010 Posted by | CUSL | , , , , , , , , , , , , | 4 comentarios

Visuse 0.3 ya está aquí

Por fin está lista la versión 0.3 de Visuse, que ya se puede descargar y que, como ya os adelantamos, viene cargada de novedades:

  • Reestructura del código JavaScript del PhotoWall.
  • Enorme mejora en el rendimiento del código JavaScript:
    • Ahora no se comprueba al cambiar de página que las imágenes estén cargadas.
    • En cuanto llegan los resultados del primer buscador empiezan a cargarse imágenes.
  • Actualización cada 2 segundos de los resultados conforme cargan las imágenes.
  • Paso de página atrás.
  • Mejoras en la interfaz. Entre ellas el efecto «cine» para que los usuarios no tengan que abandonar la página para ver los vídeos o imágenes.
  • Cambios en el código para resolver problemas al pasar a producción con mod_python.

Esta versión también arregla distintos errores:

  • Fallo en búsquedas con acentos.
  • Desaparición de resultados de Google Images.
  • Error en las búsquedas de Flickr, que a veces mostraba resultados no relacionados. Por Fran Lucena.
  • Problema con la paginación y el refresco cuando alguno de los buscadores no devolvía ningún resultado.
  • Problema con la paginación y el refresco cuando fallaba la petición a alguno de los buscadores.

13 May 2010 Posted by | Lanzamientos | , , , , , , , , | 1 comentario

Visuse.com en pruebas

Compré el dominio Visuse.com y gracias al alojamiento de la Oficina de Software Libre de la UGR ya está una versión en pruebas de Visuse funcionando. En esta versión del software se están probando algunas funcionalidades nuevas de cara a la versión 0.3, por lo que es muy probable que haya errores. Notifícalos en la forja y te lo agradeceré.

www.visuse.com

10 May 2010 Posted by | General | , , , , , | Deja un comentario