Sesión de claustro 2 de febrero 2015 (Oficina de representación)

El pasado lunes día 2 de febrero se celebró la primera sesión de claustro correspondiente a esta nueva legislatura. Cuando fui elegido representante por el sector A, tomé la decisión de abrir esta «oficina» virtual que diera visibilidad a mi participación como representante, informando por una parte de los aspectos más destacados que se traten en cada sesión, y facilitando por otra el contacto con aquellos a los que represento. Cualquier comentario será por tanto bienvenido.

Durante la sesión se llevaron a cabo elecciones a representantes en Junta de Gobierno y a la comisión de modificación de estatutos. También se aprobó una modificación del estatuto del defensor de la comunidad universitaria a petición de la propia oficina del defensor con objeto principalmente de agilizar los trámites. Se informó al claustro de la creación de nuevos grados, másteres y programas de doctorado, así como de la creación de nuevos institutos de investigación.

Dado el tema de actualidad que tanto rechazo ha provocado en la comunidad universitaria española acerca de la reciente modificación por parte del gobierno del sistema de ordenación de las titulaciones hacia el 3+2, algunas de las intervenciones giraron en torno a este asunto. La conclusión más relevante a este respecto fue la declaración del Sr. Rector de su posición contraria a implantar en nuestra universidad el 3+2. Esperemos, tal y como le pedí en mi intervención, que no modifique su posición en el futuro y nos mantengamos firmes ante este nuevo intento por adelagazar el sistema público de enseñanza.

En el último punto del orden del día «Ruegos y preguntas» solicité intervenir para plasmar mi preocupación por algunos temas que consideré de interés y relevancia para el sector al que represento. Dejo aquí mi intervención:

  1. Desde algunos sectores de nuestra comunidad se le pidió que aplazara este claustro al objeto de asegurar su presencia en la conferencia de rectores que se ha celebrado hoy mismo con el tema en ciernes del 3+2. Teniendo en cuenta que está en juego un paso más en el desmantelamiento de la universidad pública por parte de este gobierno ¿qué razones de peso le han llevado a no aplazar esta sesión y convocarnos unos días más tarde?

  2. En la normativa aprobada en consejo de gobierno de 22 de febrero de 2013 se establece entre otras cosas que a un profesor se le computarán 0,25 créditos por dirigir un trabajo fin de grado o fin de master ¿Significa esto que un profesor sólo está obligado a dedicar 2,5 horas de su tiempo a un estudiante al que dirige su trabajo fin de grado?, porque según el reglamento general de actividades tutoriales (4 dic 2007) las tutorías están dirigidas a reforzar y complementar la docencia, en ningún caso a impartirla. Si es así ¿le parece que esta normativa fomenta la calidad de las enseñanzas que se imparten en la universidad que usted dirige?.
    Independientemente de su respuesta voy a hacer una breve reflexión al respecto. Pienso que en realidad esta normativa no es más que un instrumento que usted y su equipo han puesto al servicio de una estrategia silenciosa del gobierno conducente a denigrar el papel del profesorado universitario en el sistema público de enseñanza, proyectando una imagen negativa de todos nosotros como colectivo de privilegiados, ociosos y acomodados con el fin de recortar sin oposición social más recursos a la universidad pública para dirigirlos en última instancia a bolsillos privados. Sin duda habría sido mucho más honesto y positivo para todos aplicar el sentido común, contabilizar el trabajo que realmente hacemos, defendiendo así nuestra honestidad y dignidad como profesores y sencillamente dejar de pagar esas horas, cosa que ya han hecho con anterioridad y que no hubiera sorprendido a nadie.

  3. Y por último, este año el gobierno autónomo extremeño ha decidido retrasar la convocatoria de ayudas a los grupos de investigación. Este retraso, además de una considerable merma en nuestra actividad, supone en muchos casos un cese de los contratos de personal técnico de apoyo y gestores de proyectos. ¿Podría indicarme la cifra de personal técnico y gestores de proyectos que se han visto en la calle a causa de este retraso? ¿Considera el sr. rector razonable este proceder de la administración? Lo pregunto porque particularmente me sorprende no haber escuchado ni leído por ningún medio una sola intervención suya al respecto.

A la pregunta del aplazamiento de la sesión de claustro indicó que la fecha de celebración se había consensuado con varios sectores y que no parecía razonable aplazarlo, en su lugar fue el vicerrector de docencia y relaciones institucionales a la reunión de la CRUE. En cuanto a la segunda pregunta, la respuesta fue que la cantidad de 0,25 créditos no se utilizaba como medida de la cantidad de docencia a dedicar a estos trabajos y que la dirección de los trabajos era una tarea más del profesorado que se debía atender como una actividad más a desarrollar en las horas de obligado cumplimiento para todos. Respecto a la última pregunta, no dió dato alguno sobre la cifra solicitada ni tampoco enjuició el proceder de la administración, sencillamente se limitó a comentar que él trataba de resolver los asuntos allí donde se dilucidan y no a través de los medios.

Se comprometió el Sr. rector a convocar una sesión de claustro sobre el mes de abril para debatir entre otros el importante asunto del 3+2.

 

 

Publicado en General | Deja un comentario

TRECVID 2012. Fin de trayecto.

Mientras espero en el hall del hotel  el momento de tomar el «shuttle» para trasladarme al aeropuesto Washington Dulles International hago recuento de las cosas positivas que ha tenido esta visita a EEUU. Como puede desprenderse de los post anteriores, he acumulado bastantes momentos positivos así es que no se muy bien cómo resumir esta experiencia.

Voy primero con los aspectos menos «científicos» de la visita. El hotel en que me he hospedado es el Holiday Inn, en Gaithersburg, Maryland, a unos 50 km de Washington. Era el hotel recomendado por la conferencia TRECVID, lo cual ahorra esfuerzos y permite concentrarse en lo importante, la posibilidad de contactar con otros participantes es mayor y la organización pone los medios para trasladarse de un sitio a otro con centro en el hotel. La estancia en el hotel ha sido muy agradable, sin lujos, pero muy funcional y un excelente servicio: buen desayuno, red wifi de muy alta velocidad, habitación amplia y un servicio gratuito de taxi para trasladarse a los alrededores, como poco extraordinario, ¿no? Rellenaré una entrada en tripadvisor, creo que lo merecen.

Aunque Washington resulta un sitio mucho más apetecible para el visitante, el motivo de hospedarnos en Gaithersburg es que NIST,  organizador del evento TRECVID tiene su sede principal en esta ciudad. Aunque llamar ciudad al lugar donde he residido estos días despista a quienes consideramos ciudad a un lugar con un centro (una plaza quizás?), una vida alrededor del mismo y unos barrios con identidad propia. Aquí eso no es así. De hecho uno no sabe cuando entra o sale de la cuidad. Gaitherburg, como otras muchas cuidades americanas es un conglomerado disperso de edificios atravesados por carreteras en todas direcciones por donde circulan cientos, miles de vehículos de acá para allá. En este sentido y después de haberme concienciado sobre la necesidad de vivir de modo sostenible, creo que américa es el contraejemplo de lo que significa «sostenible», aunque también es verdad que una vez dentro de Washington esa percepción se suaviza un poco más, ¿quizás la influencia del presidente Obama?, ojala que sí.

En cuanto a la conferencia en sí, por mi parte sólo tengo buenas palabras. He aprendido mucho de todo lo que se ha contado sobre vídeo retrieval. Además de las ponencias reveladoras de las técnicas que constituyen el estado del arte en lo que a búsqueda y reconocimiento del contenido de los vídeos se refiere, el segundo día se celebró una sesión de posters que me ayudó a profundizar con algo más de detalle sobre los mecanismos de extracción de características, clasificación, indexación y búsqueda de vídeos.

En particular me atrajo el poster muestro en la foto, que a través de un mecanismo sencillo de hashing conseguían reducir el tiempo para la realización de las búsquedas del vecino más próximo  entre un total de 10.000 millones de vectores de características. Ya dedicaré una entrada específica para describir el método.

Pero las dos cosas con las que me quedo han sido, por una parte contactar con muchos de los participantes que han asistido al evento. Estoy seguro que dará sus frutos en el futuro y que saldrán de este evento colaboraciones conjuntas. Por otra parte la convicción de poder mejorar nuestros resultados de investigación en el campo de la recuperación de vídeo.

Publicado en General, Investigación | Deja un comentario

TRECVID 2012. Un método «amigo» de recuperación de vídeo.

Ha llegado a su fin el workshop TRECVID 2012. Me voy con un estupendo sabor de boca, creo que en este foro están los grupos más sobresalientes del panorama internacional en el tema de recuperación y búsqueda de vídeo por contenido. Autoridades científicas de importantes centros de investigación públicos y privados, así como universidades a lo largo de todo el mundo se han dado cita en este peculiar encuentro. Universidades prestigiosas como Berkeley, Carnegie Mellon, Standford, Columbia, Dublin City, Osaka, Amsterdam, Twente entre otras, centros de investigación de renombre como IBM Research, INRIA, NIST (National Institute of Standard and Technology), Tokyo Institue of Technology, EURECOM, France Telecom Orage Labs Beijing, son algunos ejemplos de la importante presencia que atrae TRECVID. Me reafirmo en el acierto de haber estado presente en este workshop.

Aunque hemos asistido a presentaciones muy interesantes, en la que nos han descrito los métodos y enfoques utilizados para identificar e interpretar contenidos de naturaleza variada en las diversas colecciones de vídeo, voy a resaltar la intervención que hizo Juan Manuel Barrios en representación de la compañia ORAND y el grupo PRISMA de la Universidad de Chile. El enfoque utilizado en este caso para llevar a cabo la detección de objetos, lugares y personas (Instace Search Task) se distinguía de los demás por el hecho de evitar la pérdida de información que se produce en el proceso de construcción del diccionario visual (bag of visual words o BOVW), en el que los puntos de interés obtenidos por los diferentes descriptores se agrupan en clases que representan dichas palabras visuales. Ello provoca la necesidad de tratar con una cantidad mucho mayor de vectores de características de las que se utilizan si se sigue el enfoque de BOVW, con lo que para acelerar el proceso de hacer coincidir los vectores obtenidos de una consulta con los vectores extraídos y almacenados de la colección de imágenes, utiliza un esquema de indexación basado en espacios métricos.

Para cada vector extraido de la consulta (en este caso la imágen con la entidad que se desea localizar) se lleva a cabo una búsqueda de vecinos k-NN (en su caso utilizó k=50). Esta búsqueda de vecinos, en lugar de ser exacta es aproximada, utilizando para ello un índice métrico basado en pivotes (implementado por el Laboratorio de Bases de Datos de la Universidad de la Coruña, con el que colaboramos desde hace unos años). Para cada pivote p calculado (5 en su caso), se computan las distancias desde ellos al resto de los puntos de la base de datos (así como a la consulta) y posteriormente se aprovecha la desigualdad triangular para utilizar como aproximación de la distancia real entre el punto consulta q y el punto a verficar de la base de datos r, la diferencia (en valor absoluto) entre las distancias calculadas desde q a p y desde p a r. Considerando que para la tarea concreta siguiendo este esquema se requieren realizar 75.000 consultas en una colección de 166 millones de vectores de dimensión 192, el autor paralelizó el proceso utilizando un esquema sencillo de map-reduce con un total de 120 nodos. Los resultados que nos presentó mostraban un muy razonable índice de aciertos y su método se sitúa entre los top ten de los resultados enviados.

La mención de este trabajo particular, además de su indudable calidad, tiene una razón que entronca con el trabajo que hemos desarrollado en el seno del grupo. Durante varios meses en el grupo estuvimos trabajando con este mismo enfoque. Es decir trabajando directamente con los puntos de interés obtenidos a partir del descriptor, sin pasar por un proceso de construcción de BOVW. En nuestro caso, en lugar de utilizar un índice métrico indexamos los vectores de características a través de una estructura denominada VA-File, la cual también tuvimos que paralelizar para conseguir correr los experimentos en un tiempo razonable. Los resultados que obtuvimos en nuestro caso no fueron relevantes (la colección de vídeos era diferente y el objeto de nuestras consultas también) y ello nos hizo abandonar el enfoque con la sensación de no haber utilizado adecuadamente los descriptores locales con los que estuvimos trabajando. Le agradezco a Juan Antonio Barrios (que aparece en la foto), además de su amable disposición por compartir conmigo los detalles de su método, que me haya hecho ver que no conviene desechar tan rápido la posible utilidad de un trabajo de investigación realizado con interés y dedicación.

Aún me quedan cosas en la cartera, pero las dejo para otra entrada.

 

Publicado en Investigación | Etiquetado | Deja un comentario

TRECVID 2012. Reconociendo el contenido de los vídeos.

Después de dos días de sesiones intensivas en TRECVID’02, estoy impresionado por el nivel de los grupos que participan y las exposiciones tan interesantes que han presentado. Me doy cuenta que a pesar del trabajo que nos ha llevado a todo el grupo durante este año y la decepción de no haber conseguido unos resultados satisfactorios, la decisión de participar en este evento va a suponer un avance para el grupo en su conjunto.

Dicho esto, voy a tratar de resumir de la forma más comprensible posible cual es el «estado del arte», es decir las técnicas y métodos que se usan en la actualidad en el área de la búsqueda y recuperación de vídeos. Vamos allá.

Aunque las tareas que se plantean en TRECVID son variadas, todas ellas están enfocadas a conseguir que el ordenador sea capaz de interpretar el contenido de un vídeo. Así por ejemplo la tarea denominada «semantic indexing» (indexación semántica), en la que hemos participado nosotros, consiste en identificar entre los vídeos de una colección dada, cuales de esos vídeos incluyen en su contenido alguna referencia a un concepto dado de entre una lista de 346 conceptos seleccionados. Ejemplos de esos conceptos son «adulto», «instrumentos musicales», «correr», «sentarse», «nadar», «ordenadores».

Otra de las tareas, denominada «known-item search» (búsqueda de algo conocido) plantea un escenario en que el usuario sabe de un vídeo, lo ha visto antes pero no sabe dónde buscar, entonces describe con palabras lo que está buscando, lo que recuerda sobre el vídeo en cuestión y el sistema debe reportarle una lista en orden de relevancia de aquellos vídeos que se acercan a dicha descripción. Un ejemplo más de las tareas planteadas consiste en encontrar en la colección aquellos vídeos que contienen un objeto, un lugar o una persona concreta, tales como «el Capitolio», «la estrella del Mercedes» o «el logo de pepsi».

Un último ejemplo de tareas es la denominada «multimedia event detection» que propone reconocer vídeos en los que sucede un evento determinado, tal como «fiesta de cumpleaños», «cambiar la rueda de un vehículo» o «una proposición de matrimonio».

Para conseguir que un ordenador sea capaz de reconocer con más o menos acierto información semántica incrustada en el contenido de un vídeo es necesario entrenarlo, lo cual requiere un trabajo previo consistente en coleccionar ejemplos positivos de todos aquellos conceptos, eventos o en general cualquier otro contenido que se desee reconocer. Vamos un proceso muy similar al que se da en los seres humanos desde su más tierna infancia.

Sin embargo, la principal diferencia con los humanos es que los ordenadores tienen un lenguaje muy limitado, limitadísimo, sólo son capaces de diferenciar entre un 0 y un 1, o sea un bit. De manera que para conseguir una tarea tan ardua como enseñarle a un ordenador a reconocer el contenido de una serie de imágenes a las que se añade un sonido, es necesario convertir estos estímulos audiovisuales en colecciones de números. Este proceso se denomina extracción de características.

Las características que se extraen de un vídeo pueden ser de caracter visual -pictórico-, sonoro o incluso de texto (tanto el que puede ir incrustado en el vídeo, el cual se puede extraer mediante un reconocedor óptico de caracteres -OCR- como el que va acompañando al documento en forma de metadato, como el título o anotaciones varias colocadas por los usuarios o el propio creador del vídeo), pero para simplificar nos centraremos en las primeras.  Las características visuales son a su vez muy variadas también, pero para poner un ejemplo ilustrativo,algunas que se utilizan con frecuencia son los histogramas de color, que consisten en obtener un histograma que muestre para cada color, el número de pixeles de dicho color que contiene la imágen. Tal histograma no es mas que una representación numérica de la imágen en su conjunto (un vector de tantos valores como colores se consideren). Estas características se denominan globales, ya que representan a toda la imágen. Las hay también locales, que se centran en representar zonas puntuales de la imágen que de algún modo sobresalen de las demás y por tanto pueden ayudar a caracterizar en cierto modo a estas imágenes. Un ejemplo típico de este tipo de características son los descriptores denominados SIFT (Scale Invariant Feature Transform).

File:Corner.png

En esta imagen (wikipedia) se muestra un ejemplo de características SIFT locales. Cada uno de los puntos detectados tiene algo de interesante en dicha imágen, de modo que esta colección de puntos puede servir para caracterizarla de algún modo.  Esta imagen es sencilla y no contiene mucha información, pero cuando se trata de imágenes con mayor carga semántica, el número de puntos puede llegar a ser grande. Teniendo en cuenta que cada punto es un vector de 128 valores, la cantidad de valores que se precisan para caracterizar una sola imágen puede llegar a ser inmanejable. para evitar esta profusión de puntos por cada imágen, los puntos se agrupan en clases, denominadas «visual words» (palabras visuales) que se representan por un único vector de 128 valores. De este modo se dispone de un diccionario («codebook») de palabras visuales que permite volver al concepto de histograma, registrando para cada imagen las palabras visuales que contiene de cada tipo.

En este ejemplo ilustrativo sólo hemos hablado de SIFT, pero existen un número considerable de características locales, cada una de ellas remarcando un tipo de información de la misma imagen. Cada tipo de característica tiene su propio diccionario visual, de modo que para cada tipo de característica que deseemos extraer, obtenemos un histograma diferente.

Todo lo dicho anteriormente es concerniente a una imagen en particular, pero un vídeo es una secuencia de imágenes. El proceso típico para tratar el vídeo consiste en separar el vídeo en tomas o escenas («shots») y coger de cada toma un conjunto reducido de fotogramas («keyframes») que permitan representar la toma en su conjunto. Los diferentes keyframes obtenidos representan al vídeo en su conjunto.

Una vez recopilado el material (ejemplos positivos y negativos, normalmente en forma de keyframes) con el que vamos a entrenar a nuestro sistema (colecciones de muestras positivas y negativas para cada clase o concepto que queramos enseñar a reconocer a nuestro sistema), se realiza el proceso de extracción de características y se utiliza un clasificador. En la actualidad casi todos los grupos utilizan SVM («Support Vector Machines»). Un clasificador SVM  no es mas que un método matemático capaz de identificar un hiperplano que permite separa los ejemplos positivos de los negativos. Cuando a posteriori llegue una nueva imagen desconocida sólo habrá que calcular a qué lado del hiperplano se sitúa, si está al lado de los positivos atribuiremos la imágen a la clase en cuestión y en caso contrario no la atribuiremos a dicha clase.

Teniendo en cuenta que para reconocer diferentes cosas es preciso utilizar diferentes tipos de características, los clasificadores se entrenan para cada tipo de característica en particular y luego se lleva a cabo un proceso de fusión de estos clasificadores para finalmente conseguir uno definitivo que nos permita decidir si un documento concreto se atribuye o no a una clase determinada.

La mayor parte de las ponencias utilizaban este método para conseguir identificar contenido semántico dentro de los vídeos.

Seguiremos informando.

Publicado en Investigación | 2 comentarios

GIM en TRECVID 2012 – Antes de empezar

Durante este año, nuestro grupo GIM ha participado en TRECVID, un evento anual colaborativo para el desarrollo y evaluación de métodos de reconocimiento y extracción automática de información semántica en documentos de vídeo. Tal y como describí en esta entrada, este año nos hemos centrado en la tarea «Semantic Indexing». En esta tarea cada grupo participante entrena sus métodos y sistemas con una misma colección de vídeos y finalmente el método es evaluado por la organización con una colección diferente, la cual como es obvio no se pone a disposición de ninguno de los participantes con antelación al proceso.

Esta semana se celebra muy cerca de Washington, en Gaithersburg (estado de Maryland, EEUU) el Workshop anual donde se dan cita todos los participantes a este evento internacional. Este año he tenido el honor (y la suerte) de representar a nuestro grupo en este encuentro que comenzará unas horas después de redactar esta entrada. En el blog iré contando mis impresiones sobre el workshop, pero ya que hoy domingo 25 de noviembre he amanecido en EEUU y aún no ha comenzado el trabajo, voy a comenzar este pequeño diario de notas sobre TRECVID 2012 con unas pinceladas extra-laborales comentando mi largo paseo de domingo por la ciudad de Washington.

Amanecí a una hora temprana producto de la diferencia horaria con España, así es que tuve tiempo de tomar una ducha refrescante y, una vez abrieron el restaurante, un desayuno acorde con el gasto energético que tenía pensado ocasionar a mis piernas. El hotel en que me alojé (Holiday Inn Gaithersburg) era el recomendado por la organización, pues aunque haya alternativas más baratas todo se simplifica mucho más de este modo, con el importante añadido de tener mayores oportunidades de entablar relaciones y conseguir contactos con la comunidad investigadora.  Antes de salir, mientras preguntaba en recepción el modo más sencillo de llegar a Washington «downtown», me llevé la grata sorpresa de que ellos me acercaban gratuitamente a la parada más próxima del tupido (y excelente) metro de Washington. En quince minutos estaba en la parada Shady Grove tomando el metro para el centro. Media hora de camino, primero por vía descubierta y algunas paradas después, ya por el subsuelo de la ciudad, me llevó situarme en el mismo centro. Me gustó esta primera visión que tuve de Washington un domingo por la mañana temprano:

Calle 7 un domingo por la mañana

Como puede apreciarse se trata de calles anchas con grandes edificios, una gran parte de ellos oficiales, hoteles o bien pertenecientes a grandes compañías (por cierto menuda tienda la de Zara). Al salir del metro me sentía como aturdido, un enanito entre tanto edificio majestuoso, pero esa sensación al contrario de lo que puede pensarse no me incomoda. Diría que hasta me gusta. De hecho, aunque durante la semana anterior tuve tiempo de leer y visionar información sobre mi destino, no llevaba a mano mapa ninguno de la cuidad. Me gusta en estos casos irme haciendo al ritmo y los entresijos de la ciudad a medida que voy caminando lento, sin destino fijo y prestando atención a todo cuanto sucede a mi paso. A veces subo una calle y la vuelvo a bajar de nuevo. Mi cerebro, mucho más listo que yo, cuando lo dejo actuar con paciencia, procesa con rapidez toda esa información y me la va transmiendo al ritmo que puedo gestionar hasta que al cabo de una hora o así, ya tengo un dibujo bastante preciso de la ciudad en su conjunto. Y entonces es el momento de decidir por dónde comenzar el recorrido y qué no quiero perderme bajo ningún concepto.

Decido empezar por la Casa Blanca. No quiero que Obama espere por mí más de la cuenta. Aunque bien pensado, creo que hoy se debió ir con Michelle y las niñas al campo, es domingo, el día está soleado y bien lo merece.

Así es que aquí estoy yo, bien abrigado porque la temperatura no sube de los 5ºC, tras la valla que me separa de la casa bien encalada del fondo, quien sabe si alguna vez me invitan, la vida da muchas vueltas! Es verdad que no se ve muy bien, pero ese es uno de los inconvenientes de ir solo a los sitios, no puedes exigir mucho a quien graciosamente se ofrece para sacarte delante de algún monumento u otro objeto relevante.

Así es que una vez demostrado que las fotos las hice con mi estupendo smartphone, ahora puedo poner algunas en las que se parecia mejor el objeto de deseo (que se lo digan a Romney y a tantos otros!). Todas las hice desde la portada norte, que es la más cercana.

Y algo que me gustó es que a 50 metros de la valla esta que delimita la Casa Blanca, unos chavales (bueno, algunos no tanto que ya pintaban canas como yo) echaban una pachanga, eso sí, en lugar de ser al futbol como pasaría en España, jugaban a esto:

De ahí bajé a la elipse, donde ya estaban montando las luces del árbol de navidad que dentro de unos días encenderá el presidente, para contemplar algo más de cerca el monumento a Washington:

y desde ahí atravesé la avenida Pensilvania para empezar el recorrido del National Mall desde el mismo capitolio. Aquí algunas fotos del recorrido por la avenida:

Hasta finalmente llegar al capitolio, edificio que alberga el senado y  la cámara de representantes:

Desde aquí pero mirando en dirección opuesta (oeste) se aprecia el monumento a Washington y la enorme extensión de la avenida del National Mall, flanqueada a ambos lados por majestuosos edificios que albergan importantes museos que no he podido ver

La avenida la recorrí con parsimonia en toda su extensión y finalmente, tras andurrear de nuevo por el downtow, ver la pequeñísima chinatown y acercarme hasta el río Potomac, decidí que era el momento de tomarme una buena cerveza (o mejor dos) acompañada por una hamburguesa en el garito de menos postín y más abarrotado que encontré a mi paso. He de decir que me supo a gloria.

Ya atardecido hice el trayecto de regreso al hotel y subiendo en el ascensor reconocí a uno de los investigadores con más relevancia en el campo del procesamiento automático de la información visual, Cees Snoek, con quien crucé unas palabras de presentación y le mostré mi interés en charlar con él durante los días del workshop. Empezó bien el evento!

Publicado en Investigación | 4 comentarios

Tesis doctoral en indexación sobre espacios métricos

El pasado viernes 20 de Julio el profesor Dr Luis González Ares, miembro del Laboratorio de Bases de Datos de la Universidad de A Coruña, con quien nuestro grupo mantiene una estrecha colaboración, defendió la tesis doctoral titulada: «Métodos de Mejora de Rendimiento en Búsquedas por Similitud sobre Espacios Métricos». En esta tesis, dirigida por Óscar Pedreira y Nieves Rodríguez Brisaboa, se presenta por una parte un mecanismo de indexación denominado Índice de Pivote Único que supone una mejora bajo el criterio de ocupación de espacio del método de indexación Sparse Spatial Selection, desarrollado por Óscar Pedreira como punto central de su tesis doctoral y por otra parte una técnica denominada de «reducción de cluster» consistente en un particionado intra-cluster que reduce el número de puntos a evaluar dentro de cada cluster (bola de centro c y radio r).

La tesis, cuya escritura denota un gusto por el rigor científico y la precisión matemática por parte de su autor, se ubica en el marco de los índices métricos, esto es, estructuras de información que organizan el espacio métrico que componen los objetos de interés y las distancias entre ellos. Este tipo de índices explotan las propiedades de identidad, simetría y sobre todo desigualdad triangular de los espacios métricos con el objeto de minimizar el número de distancias que se necesitan calcular cuando se buscan puntos del espacio que estén cercanos a uno dado (bien porque sean vecinos próximos o bien porque se encuentren dentro de un rango determinado por una bola de centro c y radio r).

Los índices métricos están basados en la explotación de las propiedades de la distancia entre los objetos de una colección. A diferencia de otro tipo de métodos de acceso en espacios multidimensionales tales como B-trees (en el espacio unidimensional), k-d-trees, R-trees, Quad-trees, Grid-files, etc., que atienden generalmente a la localización de los datos dentro del espacio en que se ubican dichos objetos, los índices métricos utilizan las distancias entre los objetos de la colección para llevar a cabo una partición organizada del espacio que minimice el número de accesos que se precisan para responder a una determinada consulta. Normalmente este tipo de índices se utilizan para implementar consultas de vecindad, bien para localizar objetos que se encuentren en un rango determinado por un centro q (perteneciente al espacio de búsqueda) y un radio r (denominadas consultas por rango), o bien para localizar los vecinos más próximos a un punto dado q perteneciente al espacio de búsqueda (denominadas consultas del vecino más próximo «nearest neighbor query»).

 

Este último tipo de consultas se utilizan con frecuencia en aplicaciones que precisan localizar objetos similares a uno dado. Por ejemplo en colecciones de imágenes, el usuario puede precisar localizar dentro de una colección aquellas imágenes que sean similares a una imagen determinada (proporcionada por el usuario). Para resolver este tipo de consultas, la imagen se convierte en un vector de valores que la caracterizan (utilizando por ejemplo descriptores como el color, la textura y la formas dentro de la imagen) y la similitud entre dos imágenes se puede implementar por medio de una función distancia que permita capturar la semejanza (o mejor dicho la falta de ella) entre los vectores que las caracterizan. De este modo, la colección de imágenes se transforma en un espacio métrico donde los objetos son puntos del espacio multidimensional definido por los vectores de características, dotado de una función distancia que mide la «disimilitud» entre cada dos puntos del espacio (mientras más cercanos están dos vectores, más semejantes son las imágenes que están caracterizando). Para efectuar una búsqueda de vecindad en un espacio métrico, el método más intuitivo consiste en calcular las distancias desde el punto de consulta q a todos los objetos de la colección y ofrecer como resultado el punto o los puntos a menor distancia de q (dependiendo de la consulta), pero es obvio que cuando la colección es grande, este método es claramente ineficiente. Es aquí donde los índices métricos pueden contribuir a mejorar los resultados. Si somos capaces de conocer a través de un índice que una zona del espacio métrico conteniendo una cantidad considerable de puntos, se encuentra a mayor distancia de un radio dado r donde focalizamos la búsqueda, es obvio que podemos descartar esa zona y ahorrarnos así el cálculo de muchas distancias entre el punto de consulta q y los puntos de esa zona.

Para conseguir este objetivo, los índices métricos utilizan dos enfoques diferentes. El primero de ellos consiste en dividir el espacio en regiones (usualmente disjuntas), definidas por un determinado punto central y una colección de puntos alrededor de él. En esta clase se encuentran los índices basados en regiones de Voronoi (por ejemplo Voronoi tree), definidas por aquellos puntos que se encuentran más cerca del punto central que de cualquier otro punto central, o índices basados en bolas con un centro y un radio de cobertura, incluyendo todos los puntos que se encuentran a distancia menor o igual al radio de cobertura (por ejemplo el M-tree). Una búsqueda por rango con centro q y radio r en este tipo de índices permite descartar aquellas regiones del espacio cuya intersección con la bola de centro q y radio r es vacía. La propiedad de desigualdad triangular de la distancia permite descartar estas zonas sin necesidad de adentrarse en ellas para constatar su no relevancia.

 

El segundo de los enfoques consiste en seleccionar un número determinados de puntos del espacio, denominados pivotes, y para cada pivote, almacenar las distancias desde cada punto del espacio métrico a dicho pivote (por ejemplo el Vantage Point Tree o el propio Sparse Spatial Selection, diseñado e implementado por los directores de la tesis). Cuando se plantea una consulta de vecindad para un determinado punto q, se calculan las distancias entre el punto consulta q y el conjunto de pivotes de la colección. Utilizando entonces la desigualdad triangular y las distancias conocidas entre los puntos de la colección a cada pivote, se pueden ahorrar un número considerable de cálculos de distancia entre q y los puntos  del espacio. La tesis del Dr. Luis González propone la utilización del Índice de Pivote Único, cuyo objetivo es disminuir el número de distancias almacenadas para cada punto respecto del conjunto de pivotes seleccionados del espacio, reduciendo este número a un único pivote, precisamente aquel que mayores probabilidades tiene de evitar el cálculo de las distancias entre el punto de consulta q y un punto cualquiera del espacio de búsqueda. La disminución del número de distancias que debe almacenar el índice de pivote único consigue unos tamaños muy reducidos del índice que los hacen idóneos para casos en que las limitaciones de memoria son insoslayables  (por ejemplo para su utilización en smartphones) con unos rendimientos aceptables y competitivos en cuanto a tiempo de respuesta de las consultas.

 

Desde aquí mi felicitación a su autor y a los directores de esta tesis doctoral, la cual además de constituir una interesante contribución investigadora en el campo de los índices métricos, nos provee de un magnífico material académico de fácil lectura para entender la problemática subyacente en la indexación de espacios métricos. La memoria puede descargarse desde la página web de su autor.

 

Publicado en Investigación, Universidad | 1 comentario

La función strtok() de ANSI C

Preparando la nueva asignatura de Diseño y Administración de Base de Datos me topé con la necesidad de generar una cantidad suficiente de datos para poblar la base de datos que utilizaré como caso de estudio en la asignatura. La generación aleatoria pero consistente de información requiere trabajar con cadenas de texto que es preciso interpretar y procesar. Mis ficheros de texto contienen una línea de texto por registro y los campos de cada registro se separan mediante un  separador (por ejemplo «dni;nombre;edad;salario»). Una vez almacenado el registro en un array de caracteres, la función strtok(), incluída en la librería estandar <string.h>, permite separar en piezas (tokens) el string, facilitando el tratamiento de los campos individualmente. Despúes de haberlo utilizado a lo largo de todo el código sin problema alguno,  se me empieza a presentar uno de esos errores indeseables que interrumpen la ejecución sin ofrecer pistas aparentes y obligandome a introducir en el código fuente líneas //debug … //findebug para averiguar qué está provocando dicha interrupción. Después de dedicar mi precioso tiempo a esta ardua tarea, descubro que determinadas líneas de texto en el array de strings donde almaceno temporalmente los registros se modifican incomprensiblemente tras la llamada de strtok(). Salto del IDE al navegador y googleo a ver si encuentro algun remedio para mi incipiente dolor de cabeza. Luego de refinar varias veces mi pregunta, me topo finalmente con la respuesta: «The abominable strtok()«. Ahí está perfectamente explicado el comportamiento de esta función, a la vez que algunas sugerencias para evitar los efectos laterales del uso de esta función.

En mi caso, después de meditar el uso de la librería glib del proyecto Gnome que proporciona útiles para el manejo de strings, tal como g_strsplit para tokenizar un string, opté finalmente por utilizar un buffer temporal char linea[75] para recibir el string original almacenado en una fila del array de strings char regs[100][75] y aplicar la función strtok() sobre el buffer temporal para evitar que dicha función modifique la información original del array regs:

char linea[75], regs[100][75], *cp;
struct reg{
char dni[10],nombre[50];
unsigned char edad;
unsigned salario;
};

for(i=0;i<100;i++){
strcpy(linea,reg[i]);
cp = strtok(linea,»;»);
strcpy(dni, cp);
cp = strtok(NULL,»;»);
strcpy(nombre, cp);
cp = strtok(NULL,»;»);
edad = cp[0];
cp = strtok(NULL,»;»);
salario = atoi(cp);
}

Sigo con la tarea.

Publicado en Docencia, Software | Deja un comentario

GIM participa en la edición 2012 de TRECVID

Bajo las siglas TREC (Text REtrieval Conference) se agrupan una serie de conferencias que tienen por objeto fomentar la investigación en la amplia disciplina de recuperación de la información, proporcionando colecciones de documentos experimentales y procedimientos de evaluación homogéneos, así como un espacio común para que los diferentes equipos de investigación puedan confrontar sus avances en esta materia. Esta serie está patrocinada por el National Institute of Standards and Technology (NIST), que actualmente forma parte del departamento de comercio del gobierno de los Estados Unidos. Aunque durante muchos años, TREC ofrecía soporte para la evaluación de técnicas de recuperación de documentos de texto,  a partir de 2001 la conferencia patrocinó una actividad («track») centrada en documentos de vídeo, más concretamente enfocada en la segmentación automática, indexación y recuperación de vídeo digital basada en contenido. A tenor del interés suscitado por esta nueva actividad, en 2003, se creó una conferencia específica para abordar la problemática de la recuperación de información en colecciones de vídeo digital. Esta conferencia se denominó TRECVID e incorpora un taller («workshop») que tiene lugar justo antes de la conferencia TREC.

TRECVID por tanto acoge cada año un evento en el cual, las organizaciones interesadas en investigar aspectos de recuperación de información en colecciones de vídeo, pueden tomar parte en una serie coordinada de experimentos que usan los mismos datos experimentales. El objetivo de TRECVID es crear la infraestructura necesaria para la evaluación a gran escala de técnicas y métodos desarrollados por los investigadores  en el diseño y construcción de sistemas de recuperación que contemplen el vídeo como documento base.

En la edición de 2012, TRECVID propone un total de 5 tareas diferentes alrededor de la recuperación de vídeo. Nuestro grupo de investigación GIM, animado por los avances conseguidos en el proyecto vManager de almacenamiento y recuperación en colecciones de vídeo digital,  participa en una de ellas denominada Semantic Indexing. La tarea específica consiste en lo siguiente: «dada una colección de documentos de vídeo y una lista de conceptos semánticos, obtener para cada concepto un listado de a lo sumo 2000 tomas de vídeo de la colección ordenado según la probabilidad de que dicha toma contenga el concepto indicado».

Aunque resulta una decisión arriesgada por el compromiso que supone para el grupo presentar en tiempo y forma unos resultados relevantes y comparables a los del resto de grupos que participan (algunos de ellos de gran prestigio en el contexto internacional), estamos convencidos de que esta decisión apunta en el sentido correcto y generará a medio plazo beneficios para GIM.

La asignación automática de etiquetas semánticas que representan conceptos visuales a segmentos de vídeo (tomas) es una tecnología de mucha utilidad para el filtrado, categorización, visualización, búsqueda y otras formas de explotación del vídeo. En próximas entradas contaré las técnicas más frecuentes que  se utilizan actualmente para llevar a cabo la detección de conceptos semánticos en vídeos.

Publicado en Investigación | Deja un comentario

Una fuente frecuente de errores en programación

A lo largo de mis años como profesor de estructuras de información me he encontrado con mucha frecuencia con un tipo de error de programación que resulta difícil de detectar. Trataré de describir el error a través de un ejemplo real. Esta mañana revisaba en el laboratorio con uno de nuestros técnicos la respuesta a unos experimentos sobre similitud en colecciones de video digital. Una de las tareas consistía en localizar, dentro de una colección de vectores multidimensionales, los k vectores más próximos a uno dado (un algoritmo típico de búsqueda de vecinos). El programa escrito en C++ implementa la búsqueda mediante una estructura de Va-file (Vector Approximation File). El código que implementa esta búsqueda estaba convenientemente testado y respondió correctamente en todos los experimentos realizados hasta la fecha. Sin embargo, esta mañana sobre una de las colecciones de vectores, el programa generaba una respuesta incorrecta. En este caso, el Va-file se construía sobre un total de 33 millones de vectores, cifra sensiblemente superior a las que habíamos utilizado en experimentos previos.

Mi primera reacción ante el error fue revisar el tipo de dato que utilizaba el programa para direccionar tal cantidad de registros, pensando que posiblemente la cifra de 33 millones superaba el límite del valor máximo que la variable podría representar. No era así, pues la variable utilizada para almacenar el identificador de posición de los vectores era un entero con signo de 32 bits (-2.147.483.648 <= X <= 2.147.483.647). Sin embargo, cuando se necesita acceder de forma directa a la posición de un vector en el archivo, hay que efectuar un direccionamiento al byte de comienzo de dicho vector (esto se hace a través de la función seek o fseek), por lo que se precisa multiplicar la posición del vector p (0 <= p <= 33.000.000) por el tamaño en bytes de dicho vector (en nuestro caso 512).El valor máximo que se obtiene en esta operación es de 16.896.000.000, que desborda un tipo entero, incluso sin signo de 32 bits.

Este suele ser un error bastante frecuente en programación y me lo encuentro repetidamente en las soluciones a las prácticas de muchos de mis alumnos. Una posible solución es elegir un tipo de coma flotante (float, double o incluso long double) pero en nuestro caso la función fseek que utilizamos requiere un tipo entero como parámetro, por lo que optamos por direccionar el archivo en diferentes tramos, calculando el tramo al que pertenece el vector al que deseamos acceder e ir «saltando» tramo a tramo hasta el tramo indicado y una vez allí hasta el vector deseado. El programa finalmente aportó la respuesta correcta.

En general cuando se escribe código resulta muy «saludable»  prestar atención a las limitaciones en la cantidad o el orden de magnitud de los datos que es capaz de tratar nuestro programa y dejarlo reflejado en el código. Pero como la documentación de los programas suele ser una asignatura pendiente de la mayoría de programadores, cuando nos encontramos con respuestas inesperadas, apuntar a este tipo de errores suele dar buenos resultados. A mi al menos me lo ha dado.

Hasta otra.

Publicado en Software | 1 comentario

Gestión Avanzada de Datos. Curso de verano en la Universidad de Cantabria

Estoy a asistiendo a este curso de verano. En él se tratan diferentes tecnologías innovadoras relacionadas con la gestión de datos o si se quiere con las bases de datos. El curso se extiende por una semana y por tanto hay programado un número importante de ponencias. Durante esta semana iré comentando las que me han parecido más interesantes.

El primero de los cursos que me ha llamado positivamente la atención es uno titulado «NoSQL databases», impartido por el prof Alberto Abelló de la Universidad Politécnica de Cataluña. Independientemente de la temática, que nos puede interesar más o menos, es importante que el ponente sepa delimitar convenientemente qué puede transmitir a un determinado auditorio en una ponencia de horas. En este caso, el ponente lo midió perfectamente. Haciendo una ponencia llevadera y amena durante ese par de horas.

MapReduceEn concreto, nos habló del modelo de programación paralela MapReduce creada por Google para tratar colecciones de datos de gran volúmen que normalmente se escapan a la capacidad de manejo de los sistemas clásicos de gestión de bases de datos (Oracle, SQLServer, MySQL,…).

En realidad MapReduce es un framework relativamente básico cuya potencialidad consiste en expresar de manera sencilla  (ocultando detalles de paralelización, tolerancia a fallos, etc…) programas que pueden resolver problemas sofisticados basado en la intervención de muchos computadores.

La idea básica no es nueva: divide y vencerás. La entrada se divide en piezas o bloques que puedan ser ejecutados de forma simultánea en muchas máquinas a la vez (la parte «Map» del modelo). De modo transparente, el modelo realiza básicamente un proceso de ordenación y mezcla, para finalmente coleccionar los resultados y presentar la solución (la parte «Reduce» del modelo).

Un ejemplo clásico y sencillo de uso de MapReduce para ilustrar su funcionamiento es la generación de un índice invertido que muestre qué palabras y en qué número aparecen en una colección de textos. En esta presentación se explica con claridad cómo funciona MapReduce a través de este ejemplo sencillo.

La principal implementación del framework MapReduce se encuentra en el proyecto Hadoop. Ahí tienes toda la información necesaria para poder entender y utilizar en mayor profundidad el modelo MapReduce.

 

Publicado en General | Deja un comentario