J'investigue sur LabelMe, en ce moment sur les annotations faites manuellement et disponible sous la forme de fichiers
XML générés par la toolbox MATLAB du projet.
Ainsi je traite les documents
XML, et un outil très pratique est
http://www.hitsw.com/xml_utilites/ pour retrouver une grammaire XSD à partir d'une instance, c'est très pratique.
Cela m'a permis d'obtenir
une grammaire des annotations LabelMe, d'où la génération d'un
XML-Binding et un (un)marshalling en Java.
Un
lien intéressant listant différentes bases de donnée d'images classées par tâche de traitement d'image, dont le CBIR.
Dans le cadre d'un prototype sur mes recherches, j'investigue sur
MPEG-7.
Au début, j'avais définit un format de fichier de description, j'ai écrit une grammaire
XML assez sommaire pour avancer assez rapidement, et produire des fichiers
XML pour décrire, stocker des descripteurs, et annoter mes documents multimédia, mais au fur et à mesure que j'avançais, je m'approchais vraiment de ce que propose la norme.
C'est pourquoi depuis quelques temps, je m'attaque à un
XML binding en Java de la norme
MPEG-7.
Le langage Java propose dans son
API un mécanisme de
XML binding (depuis Java1.6, dans les versions précédente de Java c'était l'
API Jaxb, Java
API for
XML binding, qui était située dans un package externe, le JWSDP Java Web Services Developer Pack), et pour les normes comme
MPEG-7 basé sur des
XML-schemas, c'est très pratique.
(J'aurais bientôt a travailler sur
MPEG-21 pour les besoins d'un projet de labo, j'essayerai la même approche pour la production d'une requête
MPEG-21, j'en reparlerai ici en temps et en heure).
Pour la génération du binding, il y a JAXB (Sun) et XMLBeans (Apache), avec ces 2 frameworks, il y a des problèmes de compilations du bindings (grammaire non valide), dans les deux cas il semble y avoir un problème avec des définitions d'éléments au noms identique, ce n'est pas un problème de définition dans la norme, mais plutôt des outils JAXB et XMLBeans2.3 qui ne gèrent pas correctement l'inheritance à outrance utilisé dans la norme
MPEG-7. (réf. nécessaire).
Quelques liens web parlant du problème:
Il semble plus sérieux d'utiliser XMLBeans2.3, car malgré une petite modification aux schemas
MPEG-7 à faire, la modification reste acceptable.
JAXB quand à lui nécessite de modifier le nom de certains éléments, ce qui pourrait amener à des problèmes (fichiers
MPEG-7 générés non
MPEG-7 compliant).
Avec JAXB
Avec JAXB (version java1.6) des collisions de noms sont un problème, voir
http://cbvr.ims.tuwien.ac.at/user-documentation/mpeg7-java-binding-1.pdf. Il y en a plusieurs, c'est bloquant. La correction à apporter aux schemas est de modifier les noms de plusieurs éléments (à priori pas très pratique donc, car le
MPEG-7 résultant ne valide plus la norme). La correction proposée ci-dessous pour XMLBeans2.3 fonctionne également avec JAXB, mais elle ne suffit pas, il y a des propriétés au nom identique dans
mds-2001.xsd et Jaxb génère une erreur "already define";
Une solution pour contourner cela semble l'utilisation de
custumizations JAXB.
Avec XMLBeans
Avec XMLBeans2.3, il y a un problème dans
audio-2001.xsd mais qui peut être corrigé rapidement, voir
http://iiss039.joanneum.at/cms/index.php?id=231 (recherche menée par Joanum Research propose également un profile mpeg-7, le DAVP detailed AudioVisual Profile, pour la description de contenu audiovisuel simple, dans le sens de single);
Quelques liens:
- VizIR web server project: équipe autrichienne, membre du noe DELOS, utilise JAXB pour la génération du binding;
- le laboratoire Joaennum propose une librairie en C++ pour manipuler des documents MPEG-7, (avec un XML-binding en C++ développé maison), cette librairie de contient pas de features extractors. Ce laboratoire propose également une génération de XML-binding en Java utilisant XMLBeans (déjà cité plus haut);
- mpeg-7 and mpeg-21 community portal, voir dans la section "software and tools" une liste de projet autour de ou utilisant MPEG-7;
- LAS, Lightweigth Application Server for mpeg-7, utilise XMLBeans, dans le cadre du projet MECCA;
- un projet d'élève de l'université polytechnique de catalogne d'annotation de photographie, utilise XMLBeans. D'autres projets d'élèves de la même université qui utilise également XMLBeans;
- le site du NIST pour récupérer les schemas, et qui propose un validateur;
LIRe, Lucene Image Retrival, c'est une library de Mathias Lux, j'ai découvert son blog par del.ico.us, http://www.semanticmetadata.net/.
LIRe create a Lucene index of image feature for CBIR.
Three of the available image retrieval features are taken from the
MPEG-7 standard: ScalableColor, ColorLayout, EdgeHistogram, and an Auto Color Correlogram.
LIRe is part of Caliph&EMIR project.
Rien à voir avec le projet européen EMIR.
EMIR, European Multilingual Information Retrieval, finalisé en 1994, c'est un projet ancien maintenant, spirit est de la même époque.
Le système SPIRIT est monolingue, repose sur une analyse linguistique du document et une pondération statistique.
PRISME a pour objectif la conception et la réalisation d'un outil de veille technologique multilingue sur Internet.
PRISME utilise les technologies multilingues développées dans le cadre du projet européen EMIR, et du produit SPIRIT de T.GID.
Un test rapide de LireDemo, une application en java pour tester LIRe, ne fonctionne pas, pourtant sur le site de l'auteur il est bien indiqué qu'un JDK1.6 est requis mais des exceptions sont catchées lors de la construction de l'index.