Module : Visualisation de données, en particulier de test

Module: Visualisation de données, en particulier de test
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 9691, bureau 5D30)
Descriptif
Il y a plusieurs bibliothèques de dessin de courbes et de représentations de données en Java:

Ces bibliothèques permettent d’afficher à peu près n’importe quel type de données de manière très évoluée. Par exemple, vous avez un tableau de valeurs représentant un spectre, vous aimeriez bien visualiser ce spectre comme une courbe à l’écran pour voir si votre programme fonctionne.

Si vous avez un besoin ponctuel d’affichage de test pendant vos développements, inutile d’en faire un module. Si par contre vous avez des besoins variés et/ou une utilité de la visualisation dans le produit fini, alors créons un module.

jFreeChart est très complète, mais la doc est payante.

jmathplot est beaucoup plus facile à utiliser, mais plus limitée, et pour de la représentation 2D.

jzy3d fait de l’affichage 3D en perspective, c’est mieux pour certains types de données.

GraphView et MPAndroidChart sont des bonnes bibliothèques pour faire l’équivalent sous Android.

Ressources dont le module dépend
  • Bibliographie
    • voir les liens ci-dessus
Exemples d’utilisation du module
  • pour afficher des données audio, de spectre, d’histogramme, …
  • pour afficher des résultats d’enquêtes SES, d’étude de marché
  • pour afficher un tableau de bord complexe pour votre programme
Résultats attendus
  • il s’agit de déterminer les besoins de votre sujet, de créer une série de mises en oeuvre de la bibliothèque dans des situations qui seront réutilisables dans votre projet, et de tester ces mises en oeuvre sur des exemples.
Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

Module : Mise en oeuvre de la bibliothèque Apache Commons Math

Module: Mise en oeuvre de la bilbiothèque Apache Commons Math
proposé par :

  • Jean-Claude Dufourd (jean-claude.dufourd_at_telecom-paristech.fr, 7733, bureau E51x)

 

Descriptif
La bibliothèque Apache Commons Math est plus un générateur de modules qu’un module précis. Elle contient une grande quantité de fonctions qui peuvent servir dans beaucoup de domaines. Voici une courte présentation en anglais:Commons Math is made up of a small set of math/stat utilities addressing programming problems like the ones in the list below. This list is not exhaustive, it’s just meant to give a feel for the kinds of things that Commons Math provides.

  • Computing means, variances and other summary statistics for a list of numbers
  • Fitting a line to a set of data points using linear regression
  • Finding a smooth curve that passes through a collection of points (interpolation)
  • Fitting a parametric model to a set of measurements using least-squares methods
  • Solving equations involving real-valued functions (i.e. root-finding)
  • Solving systems of linear equations
  • Solving Ordinary Differential Equations
  • Minimizing multi-dimensional functions
  • Generating random numbers with more restrictions (e.g distribution, range) than what is possible using the JDK
  • Generating random samples and/or datasets that are « like » the data in an input file
  • Performing statistical significance tests
  • Miscellaneous mathematical functions such as factorials, binomial coefficients and « special functions » (e.g. gamma, beta functions)

Si vous avez besoin d’une fonction ou d’un ensemble de fonctions qui n’est pas déjà regroupée dans un module existant (comme le module de filtrage audio), alors nous pouvons définir un module spécifique pour votre besoin.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans le module Descripteurs Audio MFCC;
  • pour la fabrication d’un banc de filtre;
  • pour des problèmes d’optimisation sous contraintes, ou de résolutions de systèmes d’équations ou d’inéquations…

 

Résultats attendus
  • à déterminer en fonction du besoin

 

Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : Découverte et communication avec des appareils et services UPnP

Module: Découverte et communication avec des appareils et services UPnP
proposé par :

  • Jean-Claude Dufourd (jean-claude.dufourd_at_telecom-paristech.fr, 7733, bureau E51x)

 

Descriptif
UPnP est un standard de découverte et de communication entre appareils dans un réseau local (par exemple, celui de la maison). Il a été conçu pour résoudre le problème suivant: quand on ajoute un appareil dans le réseau, comment faire pour qu’il connaisse les autres appareils déjà installés, et pour que les autres appareils le connaissent, ceci sans devoir modifier la configuration de chacun des appareils pour y ajouter les informations « à la main ».Une bibliothèque Java nommée Cling permet de faire assez simplement, sur Windows, Linux et Android, des programmes qui:

  • découvrent d’autres appareils et services UPnP sur le réseau et dialoguent avec eux (mode actif);
  • créent un service UPnP et le publient sur le réseau, attendant les demandes de la part des autres appareils du réseau (mode passif).

Les modes actif et passif peuvent être utilisés séparément ou conjointement, selon le scénario d’utilisation.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans tout système mettant en jeu plusieurs appareils en collaboration, par exemple pour trouver d’autres joueurs d’un jeu particulier qui sont présents dans le même réseau local;
  • pour la simplification de la connexion de nouveaux appareils dans un réseau, par exemple pour aider des personnes peu techniques à utiliser leur nouveaux appareils;
  • pour simplifier les échanges entre appareils, par exemple, le partage de videos, de musique, de carte de visite, d’invitations à un concert, … entre mobiles.

 

Résultats attendus
  • connaissances : maitrise élémentaire de la technologie UPnP
  • compétence :  à l’issue de ce module vous aurez  écrit en Java un programme qui publie un service sur le réseau, découvre des services sur le réseau, dialogue avec ces services
  • livrable 1: programme qui découvre des services sur le réseau
  • livrable 2: programme qui échange des informations avec un service sur le réseau
  • livrable 3: programme qui expose un service sur le réseau et répond à des demandes externes (à tester avec les livrables 1 et 2)

 

Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : LabJack

Le Labjack
proposé par Jean Marie NicolasC27, 8129, jean-marie.nicolas@telecom-paristech.fr

 

Descriptif
C’est un interface très simple à utiliser permettant de faire un lien entre un ordinateur (par USB) et le monde des « courants faibles ». En d’autres termes, c’est un convertisseur analogique/numérique, raccordé par un cable USB à l’ordinateur et présentant des borniers pour les connexions électriques, et dont le fonctionnement s’apparente par sa facilité d’utilisation à un couteau suisse :

  • un bornier peut être une entrée ou une sortie
  • le signal peut être analogique ou numérique

Le choix des modalités de fonctionnement s’effectue par programmation logicielle (en Java/Jni/C : c’est, à l’usage, très facile à utiliser). La fréquence des acquisitions (ou des sorties) est aussi programmable.

Le composant U3 est disponible dans le cadre de PACT. Il a 8 entrées (numériques ou analogiques) /sorties (numériques) et 2 sorties analogiques (entre 0 et 5V). La cadence d’échange entre le PC et le Labjack est, au maximum, de l’ordre du KHz.

Le composant U6 pourra aussi être utilisé. Sa cadence d’échange peut atteindre les 40 KHz.

Ressources dont le module dépend
  • http://labjack.com/
  • bibliothèques JAVA à mettre en oeuvre : JNI facile à utiliser, un exemple est disponible

 

Exemples d’utilisation du module
Un projet de recherche est actuellement mené avec ce composant pour mesurer le déplacement du glacier d’Argentière : le Labjack reçoit une tension entre 0 et 5V fournie par une roue actionnée par le déplacement du glacier et convertit cette valeur en grandeur binaire lisible sur le port USB et traité par un code informatique sur le PC.

 

Résultats attendus
  • connaissances : interfaçage PC/analogique, échantillonnage
  • compétence : à l’issu de ce module, vous aurez maîtrisé un outil faisant communiquer le monde extérieur avec votre PC sur des informations simples et courantes (mesure d’une tension, échantillonnage de données d’entrée, …).
  • livrable : code Java permettant d’interfacer le Labjack facilement (pour permettre une mise en oeuvre facile, on vous fournira la partie en C sur des exemples –metacode proposé par LabJack– ainsi qu’un exemple de JNI ).
  • livrable : exemple de fonctionnement illustré par une sortie LabJack sur un premier PC attaquant un autre LabJack en entrée sur un autre PC.

 

 

A faire pour le lundi 1er octobre 2012

Bonjour à tous

je vous rappelle les sites importants :
Site pédagogique : http://pact.telecom-paristech.fr
Votre site projet : https://pact.wp.imt.fr/projet-2012-xy, avec xy vos numéros de groupe

D’ici lundi prochain (1er octobre), 12h, il faut :

1) écrire (sur votre site projet) le descriptif de votre groupe, ce qui constituera votre fiche d’identité : ensuite, imprimez-le, signez-le tous et remettez-le à Farah Walerack
2) créer la page (sur votre site projet) qui vous représente chacun individuellement
3) poster la photo de votre pont et ajouter les réponses aux questions sur le fonctionnement du groupe (sur votre site projet)

Cela va nécessiter de la concertation entre vous !

Objectifs visés : familiarisation avec les outils PACT, premier apprentissage de l’outil WordPress, prise de contact en groupe hors séance programmée, formation d’une identité en tant que groupe autour de laquelle chacun des membres s’engage !

Mini-Cours : Le mouvement

Expert : Béatrice Pesquet Popescu

Une vidéo peut être restreinte à une séquence d’images. L’analyse de la scène imagée comprend la détection, l’identification et la caractérisation des objets présents et de leurs mouvements. La caméra induit elle-aussi un mouvement des objets d’une image à l’autre dans la séquence.  Dans ce mini-cours d’introduction, Béatrice Pesquet propose une initiation à l’analyse du mouvement.

 

Module : Descripteurs audio MFCC

Module: descripteurs audio MFCC
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • 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.
Ressources dont le module dépend
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.
Volume
  • 4TH programmées pour un binôme

Module : Classification automatique

Contacts experts : 

Michel Roux (at telecom-paristech.fr)

Introduction :

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.

Classes sonores
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.

Système de classification
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).

Bibliographie :

Il existe de nombreux ouvrages de référence. Pour une introduction vous pouvez consulter  Pattern classification ou Pattern Recognition

Module : Classification par kPPV

Classification par k Plus Proches Voisins (kPPV)
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
 Objectifs d’apprentissag
  • Notion en apprentissage automatique : distances, similarités, apprentissage, évaluation, validation croisée
  • 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.

Module : Raspberry pi

Raspberry Pi
proposé par :

  • Tarik Graba (@telecom-paris.fr)
Descriptif
La Raspberry pi est un système embarqué, comparable à un petit ordinateur.
Elle contient un processeur ARM et un ensemble de ports d’entrée/sortie tels que:
– 2 USB.
– sortie audio.
– sorties vidéo.
– réseau ethernet.
– port d’extension SD card.
– des GPIO (General Purpose Input Output).
Elle est capable de faire tourner un système d’exploitation Linux ainsi qu’un ensemble de logiciels standards.
Ses dimensions sont celles d’une carte de crédit standard (85.60mm x 53.98mm x 17mm) et elle ne pèse que 45g.
Ressources dont le module dépend
  • Site de référence de la carte
    • http://www.raspberrypi.org/faqs
  • Plusieurs machines virtuelles Java existent sur cette carte vous permettant d’exécuter vos programmes Java.
Exemples d’utilisation du module
  • Système de contrôle intelligent pour vidéo-projecteur ou écran.
  • Boîtier multimédia
  • Domotique
Résultats attendus (à adapter en fonction des besoins)
PAN1

  • Documentations et tutoriel de prise en main et d’installation
  • Exemple type « hello world » en java s’exécutant sur la carte

PAN2

  • Code d’une application Java accédant aux GPIO

Le site pédagogique de PACT