30
Dic

Año 2009

   Posted by: José Manuel Lanza Gutiérrez   in

A lo largo de este post, se describirá el trabajo realizado durante los últimos seis meses del año 2009 en el proyecto VManager.

Mes de agosto de 2009

Durante este primer mes de trabajo, se ha realizado un estudio sobre el proyecto Saturnia, el cual fue llevado a cabo durante los meses de agosto a noviembre de 2008, teniendo como clientes a la Conserjería de Economía, Comercio e Innovación de la Junta de Extremadura.

En este proyecto, se pretende realizar un estudio para el desarrollo de un sistema de catalogación automática  de activos multimedia, entendiendo tales activos como casi prácticamente cualquier tipo de archivo posible, ya sean video, audio, texto, contenido educativo…

El objetivo  de este estudio es el de comprender el funcionamiento de la propuesta aquí formulada, para más adelante poder extrapolar estos conocimientos a otros proyectos que se vayan a realizar en el grupo.

Una vez estudiado todo el material entregado, así como la bibliografía asociada, se procedió a instalar el prototipo construido (Saturnia), para a continuación, analizar las posibles deficiencias del sistema diseñado, así como posibles mejoras que se pudieran realizar, todo ello, para comprender en la mayor medida posible el funcionamiento de este proyecto.

Una vez desarrollado el informe (Enlace) que abarca todos los aspectos anteriores, se procedió a realizar una presentación (Enlace) a modo de resumen, para hacer más amena la exposición del trabajo realizado.

Mes de septiembre de 2009

Primera semana (28/8/09 – 6/9/09)

Una vez analizado el informe realizado durante el mes de agosto, se decidió extrapolar todos los conocimientos adquiridos hacia el proyecto VManager, que está dando sus primeros pasos en el grupo GIM.

Con el proyecto VManager, se pretende construir un sistema que permita la catalogación de archivos de video de forma automática, de modo que una vez almacenados en el sistema, permita realizar todo tipo de búsquedas basadas en su contenido, como por ejemplo: búsquedas por autor, título, semejanza entre escenas, texturas…

Para la realización de este proyecto se propone utilizar los conocimientos adquiridos del proyecto Saturnia, aprovechando los siguientes aspectos: Representación, almacenamiento y búsqueda de la información.

De modo que no se parte desde cero, sino desde una serie de propuestas extraidas del proyecto Saturnia.

Para la utilización de cada uno de estos aspectos, se ha tenido en cuenta las limitaciones impuestas por el tipo de activo que se desea tratar (video), en comparación con la gran tipología impuesta por el sistema Saturnia.

Para exponer lo comentado anteriormente, se realizó una presentación que muestra cada uno de los aspectos anteriores detenidamente (Enlace).

Más adelante, se desarrolló una nueva presentación resumen (Enlace) de esta última, para comentar de forma rápida la relación entre ambos proyectos en la reunión de grupo desarrollada.

Al final de esta semana, se decidió la utilización de un blog, donde poder exponer los diversos avances que se van realizando. Además de incluir todos los informes que se van generando durante este proceso de investigación, de esta forma, todos los componentes del grupo tienen la posibilidad de observar los resultados de este trabajo.

Segunda semana (7/9/09 – 13/9/09)

A lo largo de esta semana se han realizado varias tareas, la primera de ellas ha sido la comparación de los dos últimos estándares creados por el grupo MPEG, es decir, el MPEG-7 y el MPEG-21, para determinar las características de cada uno ellos y justificar cual se podría utilizar en el proyecto actual (documento). De esta forma, se determina que el estándar MPEG-7 está orientado hacia los sistemas de búsqueda e indexación, mientras que el MPEG-21 está enfocado hacia intercambio, comercio, de información legal en internet, tratando los derechos de autor.

A continuación, se procedió a repasar el material tomado de la asignatura Procesadores de Lenguajes, más concretamente del grupo 03-Multimedia del curso 08/09. Lo más interesante de toda esa documentación, es la parte en que se detalla la posibilidad de extraer  metadatos  asociados a un archivo multimedia. En principio, este estudio se limita a la extracción de información muy básica de los ficheros MP4, utilizando una herramienta denominada TG.

Partiendo de esta idea, se comenzó un estudio para determinar cómo se podría realizar esta extracción de información para los tipos de archivos multimedia, en este caso videos, más usuales, estudiando varias herramientas que permiten esta posibilidad (documento).

Por último, se comenzó un estudio sobre las bases de datos XML nativas más importantes hoy en día, para actualizar toda la información referente a éstas que ya se posee, puesto que están evolucionando constantemente.

Tercera semana (14/9/09 – 20/9/09)

A lo largo de esta semana, en primer lugar, se ha completado el informe sobre las bases de datos XML nativas, estudiando las características más representativas de cada una de ellas. De modo que partiendo de una lista inicial de 41 bases de datos se ha conseguido reducir la lista a 16, quedando únicamente las de código libre. Para a continuación, atendiendo a las características más importantes que debe tener una base de datos hoy en día, quedar la lista en cuatro posibles bases de datos XML nativas de código libre.

De modo que se ha podido reducir la lista de 41 posibles base de datos a únicamente cuatro, quedando la elección de una ellas relegada a la realización de pruebas de rendimiento (benchmarking), que se realizarán cuando se definan completamente los datos y las operaciones que se darán lugar en el sistema (BasesdeDatosXMLnativas.docx).

Para finalizar la semana, se ha iniciado un estudio sobre los grupos de investigación españoles, latinoamericanos y norteamericanos, que trabajan también en este mismo campo (bases de datos multimedia, recuperación de información basada en el contenido). Recopilando una gran cantidad de información, que será muy útil para ayudar a definir correctamente el nuevo sistema, tomando ideas de sistemas ya desarrollados (GruposDeInvestigación.docx).

Cuarta semana (21/9/09 – 27/9/09)

A lo largo de esta semana, en primer lugar, se ha completado el informe sobre los grupos de investigación que se inició anteriormente.

A continuación, se ha comenzado a realizar pruebas sobre las librerías que se utilizarán en el desarrollo de este sistema. El objetivo de partida es la construcción de un pequeño programa que extraiga los metadatos contenidos en un fichero de video, generando un fichero XML en formato MPEG-7 que contenga los mismos.

En primer lugar, se han realizado pruebas sobre el proceso de extracción de metadatos de forma automática sobre un archivo multimedia, seleccionando una nueva herramienta que aporta un mejor funcionamiento que las estudiadas anteriormente, procediendo a realizar un programa de pruebas para verificar su correcto funcionamiento desde el lenguaje de programación C++. Generando una modificación del informe en el que se incluyen las características de esta nueva herramienta, así como todos los problemas encontrados durante su utilización (ExtraccionDeMetadatos_v0.2.docx).

Finalmente, se han realizado pruebas con una librería diseñada explícitamente para generar ficheros XML en formato MPEG-7 bajo código C++. Para el correcto funcionamiento de la misma, es necesario proceder a instalar la librería Xerces, generando un nuevo informe en el que puede observarse todos los problemas encontrados durante el proceso de pruebas de esta nueva utilidad (UtilizacionDeLaLibreriaMP7Jrs.docx). Ahora, tan solo quedaría proceder a realizar la instalación de la librería que permite generar los ficheros XML nombrados anteriormente, quedando esta tarea pendiente para la siguiente semana.

Mes de octubre de 2009

Primera semana (28/09/09 – 4/10/09)

Una vez compilada la librería Xerces que posibilita trabajar con archivos XML, se procede a trabajar con la librería MP7Jrs, que contiene una implementación del estándar MPEG-7 al completo. Debido a que este estándar funciona bajo XML, es necesario apoyarse sobre una librería que permita tratar XML con facilidad, en este caso se decidió utilizar Xerces.

Como ha ocurrido otra veces, ha sido necesario proceder a recompilar el código de la herramienta (Mp7Jrs2.4.0-src.zip), generando un fichero comprimido (MP7Jsr2.4.0-w32-vc90-bin-Recompilado.zip) que contiene la aplicación compilada para un sistema Windows Vista bajo Visual Studio 2008.

Una vez recompilada la aplicación, se ha procedido a crear un pequeño programa de prueba que muestre la funcionalidad básica de la aplicación, permitiendo familiarizarme con la API de la herramienta (Proyecto denominado MPEG7 para Visual Studio 2008).

El proceso de configuración de Visual Studio para el correcto funcionamiento de MP7Jrs, se encuentra presente en un informe realizado (Utilización de la librería MP7Jrs_v2.doc).

Segunda semana (5/10/09 – 11/10/09)

Tal y como se ha comentado anteriormente, la librería MP7Jrs implementa todo el estándar MPEG-7 al completo, y por tanto la interfaz que muestra esta librería es bastante compleja, debido a la extensión del estándar. Por lo que sería interesante obtener un subconjunto del MPEG-7, haciendo la herramienta mucho más simple, y por tanto, menos pesada.

El primer paso que se ha dado ha sido buscar el esquema XML completo referente al estándar MPEG-7, los esquemas que se habían encontrado anteriormente (año 2001) no eran compatibles con las técnicas de validación actuales. Tras un largo proceso de búsqueda, se han conseguido localizar dos esquemas oficiales que permiten la validación actual, estos esquemas han sido diseñados en el año 2008, existiendo dos versiones, una correspondiente a la versión original del año 2001 (mpeg7-v1.xsd), y otra correspondiente a la versión extendida del año 2004 (mpeg7-v2.xsd) (también oficial).

Sería interesante obtener un subconjunto adecuado partiendo del esquema mpeg7-v2.xsd. Actualmente existen varios subconjuntos oficiales (mpeg7-cdp.xsd, mpeg7-smp.xsd y mpeg7-udp.xsd), pero ninguno de ellos es adecuado a la dimensión del proyecto. Este mismo objetivo se plantea en el grupo que ha realizado el diseño de la librería MP7Jrs, diseñando un profile (subconjunto) para la descripción de contenido audiovisual , denominado como DAVP (Profile AudioVisual Description, subconjunto para la descripción audiovisual). En el fichero DAP_Description.pdf se encuentra una descripción detallada sobre este profile.

De las versiones existentes de este profile, únicamente es válida la generada a través del fichero MPEG-7 del año 2004, la otra es incompatible con el método de validación actual.

Basándonos en la experiencia obtenida de la librería MP7Jrs, sería interesante generar nuestra propia librería C++, que permita implementar la parte del estándar deseada, centrándonos en una derivación del DAVP. Obteniendo una herramienta de fácil manejo y menos pesada.

Actualmente, se ha conseguido generar la librería C++ partiendo del DAVP, pero existen una serie de problemas derivados de la utilización de tipos abstractos en los ficheros XML, por lo que aun no ofrece un buen comportamiento. Más adelante, se realizará un informe con todos los aspectos referentes a la generación de esta librería.

Tercera semana (12/10/09 – 18/10/09)

A lo largo de esta semana, se ha resuelto el problema existente con la utilización de tipos abstractos en la librería generada, para llegar a la solución se ha utilizado polimorfismo, por lo que la librería generada partiendo del DAVP ofrece un comportamiento correcto.

Se ha realizado un informe que muestra que aspectos hay que tener en cuenta, a la hora de generar una librería que permita trabajar con un determinado esquema XML, utilizando la herramienta Altova XML Spy . Se comenta paso a paso como se ha de utilizar la librería generada para obtener un documento correcto, cómo se ha de utilizar cada uno de los tipos definidos. El nombre de este informe es Generación_y_utilización_de_la_librería_MPEG7_propia.docx.

En este punto, es posible generar un fichero xml utilizando la librería desarrollada en C++, con respecto a un determinado esquema MPEG7, en este caso DAVP.

Cuarta semana (19/10/09 – 25/10/09)

El objetivo de este semana es el de estudiar el estándar MPEG7 al completo, para determinar que campos podrían ser útiles para el proyecto actual, y de ese modo determinar si el subconjunto DAVP podría ser válido tal y como está, o bien debería ser modificado.

Para poder realizar ese estudio se ha utilizado la descripción oficial del esquema MPEG7: ISO_IEC 15938-5, en el que se comentan cada uno de los campos que conforman el estándar, pudiendo determinar la utilidad de cada uno de ellos.

Con este documento, se ha realizado una primera aproximación sobre que campos podrían ser útiles. En una primera fase, se desea guardar información sobre los metadatos básicos que se puedan extraer de cualquier archivo de video (formato, tamaño, resolución…), y sobre los comentarios básicos que puedan describir el contenido del video.

Los campos necesarios para recopilar toda esta información, se encuentran comentados dentro del informe: MPEG-7.Subconjunto propio_v1.

Gracias al estudio del estándar al completo, se ha podido determinar que el subconjunto propuesto inicialmente (DAVP) no es correcto al 100%, tal y como se esperaba, puesto que contiene información que para el interés del proyecto no es necesaria, puesto que está diseñado para describir información de tipo audiovisual, y el tipo de información que se almacenará es de tipo visual (sin audio). Por lo que habrá que realizar una nueva selección.

Quinta semana (26/10/09 – 31/10/09)

Una vez estudiado el estándar al completo, sería interesante realizar una pequeña aplicación en C++ que permita generar un fichero xml de este tipo, mostrando los aspectos básicos que tendrán los documentos iníciales.

Con el fin de poner experimentar lo máximo posible con el estándar MPEG7 al completo, la librería que se utiliza, se corresponde con el esquema al completo (LibreriaMPEG7Completa-v1.0.zip), es decir, no se utiliza ningún subconjunto, ni el DAVP ni el propuesto anteriormente. Esto se debe, en gran parte, a que el subconjunto actual se encuentra aún en fase de estudio, y utilizarlo conllevaría retrasos en el desarrollo de las pruebas.

Utilizando la librería comentada anteriormente, se ha realizado un pequeño programa que genera un documento xml que contiene una descripción en MPEG7 sobre un determinado video. En este programa, se muestran los dos aspectos deseados ya comentados anteriormente: La inclusión de los metadatos automáticos (extracción automática de metadatos del video, utilizando la herramienta MediaInfo) y la descripción textual básica.

A esta aplicación se le ha denominado VManager_v1, puesto que es una primera aproximación de los resultados que se desean obtener. Aunando el trabajo realizado en la extracción de metadatos y el estudio del estándar MPEG7.

Mes de noviembre de 2009

Mes de diciembre de 2009

Primera semana (30/11/09 – 6/12/09)

En esta semana, se ha comenzado a realizar la interfaz de usuario de una primera aplicación, que muestre los avances realizados a lo largo del proyecto. De modo que este primer prototipo debe ser capaz de gestionar una base de datos de archivos de video, basando sus descripciones en el estándar MPEG-7. Estas primeras descripciones serán de tres tipos:

  • Textual (descripciones básicas sobre el contenido, resumen).
  • Información sobre el formato utilizado. (Extracción automática).
  • Información sobre la procedencia de la información.

La interfaz se realizará en el lenguaje Java, bajo el editor NetBeans. Ya se ha realizado una gran cantidad de código bajo C++ (Extracción de metadatos básicos y generación de fichero MPEG7), por lo que será necesario utilizar las librerías jni para poder acceder a dicho código a través de sus correspondientes DLLs.

El objetivo básico de esta semana, se centra en la realización de la conexión java-C++ (se utilizan una gran cantidad de DLLs, por lo que se complica su utilización), desarrollar un reproductor multimedia bajo Java y realizar la conexión a la base de datos eXist en Java. Por lo que a lo largo de esta semana, no se ha desarrollado ningún elemento de la interfaz, sino componentes que más adelante serán utilizados.

Para la realización de la conexión Java-C++, se ha utilizado las librerías JNI, la dificultad de esta conexión radica en la gran cantidad de DLLs (siete), necesarias para el funcionamiento de la aplicación, teniendo que realizar la carga de cada una de ellas de forma ordenada desde Java, es decir, ha sido necesario obtener la jerarquía de llamadas de éstas, para evitar las llamadas a funciones aun no cargadas. (En el proyecto “VManager_v1Java” para NetBeans, se implementa esta funcionalidad).

El reproductor multimedia se ha desarrollado utilizando la librería jmf de Sun, esta librería contiene una lista de codecs muy reducidos, por lo que habrá que buscar los codecs necesarios para Java más adelante. (En el proyecto PruebaJMF para Eclipse, se encuentra una primera implementación de este reproductor).

La conexión de la base de datos sobre Java se ha implementado, utilizando la información obtenida en semanas anteriores. Dentro del proyecto VManager_v1Java se encuentra la implementación desarrollada.

Segunda semana (7/12/09 – 13/12/09)

En esta semana se ha comenzado a desarrollar la interfaz realmente, implementando la pantalla inicial de la aplicación. Es esta primera ventana, se mostrará una interfaz que permita realizar búsquedas al usuario, mostrando la información obtenida de forma resumida dentro de una tabla. Más adelante, en esta ventana se añadirán funcionalidades que permitan acceder a la gestión de la base de datos multimedia (inserción de elementos, borrados, modificaciones…modo administrativo).

Para conseguir mostrar esta información en cada una de las celdas de la tabla, ha sido necesario redefinir el método Render de la tabla, pudiendo mostrar en cada una de ellas el JPanel diseñado (CeldaTabla1).

Al finalizar esta semana, se ha conseguido mostrar una tabla que muestra cada uno de los campos deseados (Titulo, duración, descripción e imagen).

Tercera semana (14/12/09 – 20/12/09)

En primer lugar, se ha insertado información en la base de datos eXist de forma manual (en formato MPEG-7), consiguiendo mostrar toda la información existente en la base de datos de forma resumida en la tabla. Dicha tabla es complemente dinámica, modificando su dimensión para ajustarse a las necesidades, en un futuro se desearía poder dividir esta tabla en diferentes páginas, para así poder tratar los datos más fácilmente de cara al usuario.

Una vez realizado este proceso, se ha diseñado una segunda pantalla que muestra la información detallada de un recurso multimedia, además de mostrar un reproductor en la pantalla. Con respecto a este reproductor, se ha tenido que utilizar la librería Fobs para completar la lista de códecs inicial.

De modo, que al final de esta semana se ha conseguido tener una aplicación que accede a la base de datos (ficheros xml en eXist), mostrando toda la información de forma resumida en una tabla, permitiendo el acceso a la información detallada sobre un recurso, así como a su reproducción.

Cuarta semana (21/12/09 – 23/12/09)

Durante estos días, se ha estudiado la realización de una pantalla que permita realizar la insercción de videos en la base de datos, para ello una vez seleccionado un determinado video y rellenado sus correspondientes metadatos, se añada a la base de datos un fichero xml MPEG-7 con dicha información.

La problematica que se ofrece es que en un primer lugar (tras haber seleccionado el video), se deben mostrar los metadatos básicos (formato, tamaño, duración…) al usuario en la interfaz y a continuación éste debe rellenar cada uno de los campos textuales sobre el video (descripciones, titulo, género…) y generar el fichero xml MPEG-7, que finalmente será almacenado en la base de datos. El problema se centra en que tanto la extracción de los metadatos básicos como la generación del fichero xml, se encuentra realizada en C++ y por tanto el número de comunicaciones entre java y c++ es muy elevado, y por tanto se complica el desarrollo de la aplicación y empeora su rendimiento.

La solución pasa por migrar el código de la entracción de metadatos, así como de la generación del fichero xml de c++ a java. En este momento se ha conseguido migrar el código del sistema de extracción de metadatos, puesto que la propia librería permite el acceso desde java también. La generación del fichero xml también es posible realizarla bajo java, puesto que dicho código se realiza a través de un sistema de generación de código automatizado (Altova XmlSpy), tal y como se ha comentado en informes anteriores.

Por lo tanto, quedaría pendiente unificar la interfaz de usuario, el sistema de extracción de metadatos y la generación de ficheros xml en MPEG-7 bajo un mismo proyecto java (NetBeans) en diferentes paquetes (uno por cada uno de estos programas).