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 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
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.
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.
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.
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.
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.
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 !
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.
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.
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