Roland Badeau (roland.badeau_at_telecom-paristech.fr)
Descriptif
Le Cepstre d’un signal audio est une représentation qui permet de caractériser le timbredu son associé. Il s’obtient comme la transformée de Fourier inverse du logarithme du spectre d’amplitude du signal.Dans la plupart des systèmes de classification audio (cf rubrique classification), on exploite des caractéristiques calculées à partir du Cepstre : les MFCC (Mel Frequency Cepstral Coefficients). Il s’agit d’une variante de coefficients cepstraux qui exploite un modèle simple d’audition humaine et qui s’avère très efficace dans la plupart des problèmes de classification.
Bibliothèque Java pour le calcul de la transformée de Fourier rapide (FFT)
Exemples d’utilisation du module
dans un système de reconnaissance des instruments de musique,
de classification de musique en genres (classique, jazz, pop, etc.) ou en humeurs, (joyeux, triste, etc.),
de classification de sons en catégories générales (parole, musique, silence, sons environnementaux).
Résultats attendus
connaissances : calcul du Cepstre réel, fréquences Mel, calcul des MFCC
compétence : à l’issue de ce module vous aurez écrit en Java un programme qui charge des signaux audio et retourne une séquence de vecteurs MFCC (extraits sur des fenêtres d’analyse à court terme)
livrable 1: pseudo-code
livrable 2: code java + test de comparaison des MFCC obtenus par le programme développé à ceux calculés avec un autre programme (Matlab) de référence.
La classification automatique vise à assigner des objets à des catégories ou classes. Dans PACT, ces objets peuvent être des images, des vidéos, des sons, des textes, etc. Ces classes peuvent être connues à l’avance ou non, on parle alors de classification supervisée ou non supervisée. Par exemple, lorsqu’on analyse un contenu sonore, on peut vouloir automatiquement assigner les sons à des classes telles que celles qui apparaissent sur la figure 1.
Figure 1 – Exemple de schéma classification audio général
Le principe général des systèmes de classification supervisée (cf. figure 2) inclut deux étapes:
une étape d’apprentissage qui peut être vue comme une phase de développement aboutissant à la mise en oeuvre d’une stratégie de classification;
une étape de test par laquelle les performances du système de classification sont évaluées.
En général, un système n’est prêt pour une utilisation réelle qu’après une succession d’étapes d’apprentissage et de test permettant de mettre en place une stratégie de classification efficace.
Figure 2 – Architecture générale d’un système de classification (traitant dans cet exemple des signaux audio)
La phase d’apprentissage comprend:
l’extraction à partir d’une base de données de référence appelée base d’apprentissage, de descripteurs sous forme de paramètres numériques. Ces paramètres qui sont aussi appelés attributs ou caractéristiques (features en anglais) sont sensés caractériser des propriétés des signaux pouvant révéler leur appartenance à l’une des classes envisagées.
La sélection d’attributs efficaces; en pratique un nombre élevé de descripteurs « candidats » qui ne servent pas tous les performances de classification est considéré, il est alors intéressant d’avoir recours à des techniques permettant de retenir un sous-ensemble d’attributs (de plus petite taille) qui garantisse les meilleurs résultats de classification.
L’apprentissage à partir des attributs sélectionnés de fonctions de classification ou fonctions de décision, lesquelles fonctions serviront à assigner des observations d’attributs de nouveaux exemples (de test) à l’une des classes possibles.
Lors de l’étape de test il n’est nécessaire d’extraire des signaux que les attributs qui ont été retenus et de décider de l’appartenance de ces signaux aux classes possibles en utilisant les fonctions de décisions apprises.
Dans PACT deux modules de classification particuliers vous sont proposés : les kPPV et Adaboost.
Il existe de nombreux autres classificateurs (supervisés ou non). Différentes UE du cycle master vous sont proposées pour les découvrir, en particulier SI221 (Laurence Likforman) ou MDI343 (Stéphan Clémençon).
proposé par :
Michel Roux (at telecom-paristech.fr, 96 84, bureau 5B60)
complexité : moyenne, cumulable avec d’autres modules
Descriptif
Lorsque l’on dispose d’un nombre important de données, il peut être envisagé de les classer, en exploitant un critère de similarité entre ces données. Par exemple, on peut vouloir créer une classe d’images qui se ressemblent en termes de couleurs ou créer une classe de sons qui ont des similarités acoustiques. Ces classes peuvent être connues à l’avance ou non, on parle alors de classification supervisée ou non supervisée. Les kPPV sont une méthode de classification supervisée, pour laquelle les classes souhaitées sont connues à l’avance et l’on dispose d’exemples de données associées à ces classes. Le terme kPPV désigne finalement la méthodologie employée pour classer une nouvelle donnée : cette donnée est comparée à toutes celles dont la classe est connue ; cette comparaison nécessite une mesure (distance, similarité) permettant de trouver les voisins, ie les données les plus proches selon cette mesure. La classe prédite pour la nouvelle donnée est généralement la classe majoritaire parmi ses k plus proches voisins. La valeur de k est un paramètre important dont la valeur est à discuter. Les données que nous manipulerons seront vectorielles. Il est possible de faire des opérations similaires sur des graphes, mais cela serait trop lourd à mettre en oeuvre dans PACT. Il est à noter qu’il existe de nombreux autres classificateurs (supervisés ou non). Différentes UE du cycle master vous sont proposées pour les découvrir, en particulier SI221 (Laurence Likforman).
Ressources dont le module dépend
aucune dépendance a priori mais possibilité d’exploiter une librairie JAVA (à choisir avec l’expert) pour développer le code de la classification.
UE de reconnaissance des formes (SI221)
définition mathématique d’une mesure, d’une distance, d’une similarité
une base de données (vectorielles) définie dans le projet du groupe
Exemples d’utilisation du module
sur des signatures d’images ou sons, en vue d’une classification ou pour retrouver une signature similaire dans une base de données
Compétence à développer :à l’issue de ce module vous aurez défini et programmé un classificateur kPPV en Java et vous saurez l’évaluer sur une base de données
Résultats attendus
PAN1 :
Savoir définir les termes suivants : une distance, une similarité, apprentissage automatique, classification.
Savoir expliquer en quoi cet outil de classification est a priori intéressant dans le projet du groupe.
PAN2 :
Livrable : Etude bibliographique sur les notions de distance et similarité
Livrable : Pseudo code implémentant la classification par kPPV, en Java et le programme de test afférant.
PAN3 :
Livrable : code Java et premières mesures de performance sur des données standards (par forcément en lien avec votre projet).
PAN4 :Livrable : rapport de performance, en situation d’usage.
Caractérisation globale des images par leur couleur
proposé par :
Expert : Michel Roux (@telecom-paristech.fr, 96 84, bureau 5B60)
Difficulté : moyenne, cumulable avec un autre module
Descriptif
Lorsque l’on travaille avec des images, il peut être utile (pour les comparer, les stocker et les retrouver) de caractériser leur contenu à l’aide d’une signature numérique. Cette signature contient souvent des informations (globales ou locales) sur les formes, couleurs et textures présentes dans l’image.Dans ce module, il vous est proposé de développer quelques programmes Java permettant d’extraire, d’un ensemble d’images, une signature globale reposant sur un histogramme de couleurs. Vous serez également amenés à comparer les signatures entre elles afin de vérifier leur pouvoir discriminant.
Ressources dont le module dépend
Chapitre 2 du livre « Sémantique et multimodalité en analyse de l’information »
le processus peut être étendu à d’autres types de signatures (formes, textures)
Objectifs d’apprentissage
Notions : image, couleur, histogramme, distance et similarité
Compétence à développer :à l’issue de ce module vous saurez :
caractériser le contenu d’une image à l’aide d’une signature contenant une information relative à la couleur contenue dans l’image.
saurez comparer deux images, en exploitant leurs signatures de couleur.
en déduire le meilleur espace de couleur pour votre projet (analyse et synthèse des résultats obtenus).
Résultats attendus
PAN1 :
Savoir définir les termes suivants : espace de couleur, histogramme de couleur, comparer des images, indexer.
Savoir expliquer en quoi cet outil d’indexation est a priori intéressant dans le projet du groupe.
PAN2 :
Livrable : Etude bibliographique sur les notions d’espaces de couleur et de mesure de comparaison de signatures de couleur, recenser différentes façons de caractériser l’information de couleur contenue dans une image.
Pseudo-codes pour l’implémentation d’une procédure de calcul de signature de couleur pour une image et pour la comparaison de deux signatures.
PAN3 :
Livrable : code Java implémentant l’extraction d’une signature de couleur d’une image et codeJava implémentant la mesure de comparaison de deux signatures + bonus :code Java permettant d’organiser une base d’images en exploitant leurs signatures de couleur (K-Means).
PAN4 :
Livrable : rapport justifiant l’usage d’un espace de couleur et code Java correspondant aux simulations mises en œuvre (comparaison de différentes signatures, pour un ensemble conséquent d’images utiles à votre projet).
Roland Badeau (roland.badeau_at_telecom-paristech.fr)
Descriptif
A l’aide d’une somme pondérée de N échantillons d’entrée, il est possible de réaliser un filtrage de ces mêmes données. Ceci permet par exemple de renforcer les graves dans un morceau de musique, d’isoler une bande de fréquence données ou même de simuler l’opération de différentiation.
connaissances : convolution, réponse impulsionnelle, réponse en fréquence, filtrage, RIF vs RII, équation aux différences, passe-bas/haut/bande, transformée de Fourier, transitoire, retard
compétence : être capable de réaliser en java un filtre à RIF dont on connais les coefficients, être capable de prévoir théoriquement son comportement par le calcul, être capable de démontrer son fonctionnement à l’aide d’exemples bien choisis
livrable : pseudo-code du filtrage à RIF, programmation de ce pseudo-code en java, programmation d’un test avec affichage graphique des spectres entrée/sortie.
L’informatique graphique connaît depuis quelques années un formidable essor. Popularisées par les jeux vidéo et l’industrie des effets spéciaux, les images de synthèses sont de plus en plus utilisées dans des domaines allant du divertissement, à l’art en passant par les simulations d’entraînement, la visualisation scientifique et l’aide à l’analyse (par exemple pour l’investigation d’hypothèses archéologiques). Même si les données en entrée sont toujours les mêmes (une description 3D des objets obtenus par acquisition automatique ou par modélisation manuelle) les algorithmes qui leurs sont appliqués sont de plus en plus variés: affichage dans différents styles (physiquement réaliste, stylisé), détection de collisions, analyse géométrique, etc. plusieurs de ces algorithmes étant souvent effectuées en parallèle au sein d’une même application. En outre, la complexité des modèles ne cesse de croître (environnements virtuels très grands, modèles très détaillés) et même si les capacités des ordinateurs et cartes spécialisées évoluent en conséquence, ces algorithmes doivent être sans-cesse optimisés pour tourner le plus rapidement possible.Notez par ailleurs que les techniques proposées dans ce module peuvent servir à la synthèse d’image 2D n’exploitant pas les effets de perspectives.
Ressources
Littérature d’initiation
Un mini-cours autour de la synthèse 3D et d’openGL est disponible ici.
Comme point d’entrée en informatique graphique, il peut être intéressant de regarder le red book qui est un guide d’introduction à openGL. OpenGL est une API qui permet de communiquer avec la carte graphique pour créer des images sur l’écran. Comme sous-langage GLSL offre la possibilité d’écrire des petits programmes (shadeurs) qui sont exécutes sur la carte graphique et qui permet notamment de réaliser des images beaucoup plus convaincantes.
Code
OpenGL et les shadeurs peuvent être utilisé avec JAVA en utilisant la librairie: lwjgl. Plusieurs exemples et démos se retrouvent ici: potatoland Quelques Sujets en Informatique Graphique
Photo-Réalisme
La création des images photo-réaliste n’est pas facile et il est nécessaire de simuler proprement les modèles physiques pour assurer une haute qualité.
La lumière interagit avec les objets de la scène. Selon le matériel, cette interaction peut être très complexe et plusieurs modèles ont été proposé pour simuler les effets de matériaux. Ensuite la lumière rebondit des surfaces de la scène (par exemple un objet rouge proche d’un mur blanc va souvent réfléchir une tache rouge sur le mur). Cet éclairage s’appelle illumination globale. Un des grands problèmes est le calcul de la visibilité (des occultations) car la lumière renvoyé ne va pas atteindre directement des surfaces cachées de la source. Le même problème se pose au moment qu’on calcul les ombres dans une scène.
En combinant tous ses effets (et encore plus…), on s’approche de la création d’une image réaliste.
Un survey sur les modèles des matériaux est disponible ici: survey materiaux
Un survey des techniques de calcul d’ombres est disponible ici: calcul d’ombres
Un shader GLSL pour le calcul d’ombres à la ShadowMap: shader glsl
Rendu non-photoréaliste
Pour obtenir un aspect artistique, un rendu réaliste n’est pas le meilleur choix. En NPR (non photorealistic rendering), le but est souvent de reproduire un style particulier (aquarel, crayons, …) ou d’inventer un nouveau style tout court. Souvent une image non-réaliste peut être plus facile à comprendre par un observateur et peut être jugé plus intéressant qu’une simple reproduction de la réalité.
Ce domaine est très vaste et il y a des nombreux sujets différents qui font partie de cette catégorie.
Un survey sur le NPR est disponible ici: cours NPR
Géométrie
Une partie très importante en informatique graphique est la création et la modification des données géométriques. En particulier, la déformation de modèles pour l’animation mais aussi pour la modélisation.
INFOGRAPHIE
Si vous êtes intéressé par la création de modèle (ou la converison en format lisible par votre application), essayez de télécharger Blender! C’est un logiciel très performant de l’infographie. Ce programme vous permet de créer, rendre et animer des scènes. Vous pouvez donc créer vos propres films 3D.
Informatique graphique : savoir expliquer et manipuler le calcul vectoriel, les transformations d’espace, les modèles de couleurs et d’éclairage, les images et textures
Compréhension des coprocesseurs graphiques : savoir expliquer le pipeline graphique, comprendre la programmation par shaders et la gestion de mémoire sur un GPU
Application:savoir expliquer comment les connaissances acquises sont mise en place dans le code
Résultats attendus (A affiner selon vos besoins)
PAN1 :
Décrire les données 3D issues du prototype
Expliquer comment ces données sont exploitées via OpenGL.
PAN2 :
Expliquer calcul matriciel 2D/3D, les vertex, les VBO, les formats de couleurs et textures
Livrable: animation 3D d’un objet simple par modification de position ou modification de caméra, utilisation de textures
PAN3 :
Livrable : Utilisation des programmes de rendu OpenGL (aka shaders) pour l’animation et le dessin d’objets
Expliquer le fonctionnement des lumières et ombrages
Décrire le fonctionnement et l’intégration du module dans le prototype allégé
PAN4 :
Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
livrable biblio : les principes de fonctionnement du GPU et d’OpenGL