Table des matières

Sujets de projets 2018 automne

RC1. Outil de visualisation et d’interprétation de consommation électrique personnelle

Domaines data mining, visualisation, web
Librairies (proposées) scikit-learn, bootstrap
Langages (proposé) Python, javascript, html/css…
Responsable du sujet Rémy Cazabet
Informations à voir -

Les compteurs électriques intelligents (Linky) permettent de suivre notre consommation électrique demi-heure par demi-heure. Vous développerez des outils de data mining et de visualisation web pour permettre à chacun de comprendre (et idéalement de réduire…) sa consommation électrique. Un projet précédent a accompli les premières étapes (script de récupération des données…), mais n'a pas mis en place d'outils de data mining ni de visualisation avancé. Ce sera donc votre objectif.

RC2. Plateforme d’exploration de l’activité de recherche à Lyon

Domaines data mining, visualisation, scientometrie
Librairies (proposées) scikit-learn, bootstrap
Langages (proposé) Python, javascript, html/css…
Responsable du sujet Rémy Cazabet
Informations à voir Portail de l'université de Lyon

Les informations des publications scientifiques des chercheurs de Lyon sont accessibles en ligne via un site web qui offre une API. Vous développerez une application (web ou non) utilisant des outils de fouille de données (Clustering, analyse de réseaux, traitement automatique du language …) pour permettre d'exploiter ces données. Par example, l'application permettra de détecter automatiquement les sujets “à la mode” (Deep learning…), de visualiser des graphes thématiques, des collaborations entre laboratoires, etc.

RC3. Implémentation d’un outil de visualisation de l’évolution de réseaux dynamiques en langages web

Domaines Graphes, visualisation
Librairies (proposées) d3, networkx, bootstrap
Langages (proposé) Python, javascript, html/css…
Responsable du sujet Rémy Cazabet
Informations à voir Projet du semestre precedent

L'analyse de réseaux dynamiques est un de mes sujets (data mining) de recherche principaux. Il n'existe pas à l'heure actuelle de bons outils pour visualiser des données formant de tels réseaux. Vous développerez une interface web pour répondre à ce problème. Au cours des semestres précédents, des premières versions ont été faites, mais elles se sont plus concentré sur l'aspect site web que sur l'aspect visualisation du réseau. Vous vous concentrerez sur la réalisation d'une visualisation permettant de “naviguer dans le temps”, c'est à dire de prendre en compte de manière fluide la possibilité de visualiser l'évolution du réseau en marche avant, marche arrière, accéléré … Le projet est particulièrement intéressant pour ceux qui souhaitent découvrir/se perfectionner en javascript, en particulier création d'application web, d'animations interactives, etc. (voir bibliotheque D3 que vous utiliserz probablement.

RC4. Kaggle Challenge

Domaines Machine Learning (“Intelligence Artificielle”)
Librairies (proposées) sciki-learn, autres
Langages (proposé) Python, autre
Responsable du sujet Rémy Cazabet
Informations à voir Challenges Kaggle en cours

Kaggle est le site web le plus connu de challenges en machine learning. En 2 mots: des entreprises proposent des challenges auxquels n'importe qui peut tenter de proposer une solution. La meilleure solution gagne. Mais là où Kaggle est particulièrement intéressant, c'est qu'il propose des tutoriels pour résoudre certains problèmes classiques, en utilisant différentes méthodes. Votre objectif: 1) Suivre un/des tutoriels pour résoudre un problème tout fait, 2)Choisir un challenge en cours et appliquer ce que vous avez appris 3)Être riche et célèbre.

RC5. Restaurants à Lyon

Domaines Visualisation, exploitation de données
Librairies (proposées) mapbox, leaflet, d3
Langages (proposé) javascript, html/css, language back-end (python?…)
Responsable du sujet Rémy Cazabet
Informations à voir Projet semestre précédent

Le but de ce projet est de créer une carte interactive des restaurants/bars (et/ou autres lieux) de Lyon, avec pour objectif de faire un vrai site utile. Attention ! Ce projet est réservé à une équipe motivée, car il est INDISPENSABLE de faire mieux que le travail précédent, qui est déjà le résultat de 2 projets successifs. Il est donc quasiment obligatoire de réutiliser une partie du travail déjà effectué (tous les codes sont disponibles). Plusieurs éléments sont à travailler: amélioration de l'interface. Ajout de données de sources différentes (actuellement: Google maps et un peu Yelp), solution pour supprimer les temps de chargement, ajout de quelques fonctionnalitées de “fouille de données” (exploitation des commentaires, notes, textes descriptifs, …).

SA1. Résolution d’un Puzzle

Domaines IA
Librairies (proposées)
Langages (proposé) Java…
Responsable du sujet Samir AKNINE
Présentation du sujet Sujet complet

L’objectif de ce projet est d’implémenter une méthode de résolution d’un Puzzle de taille n*n. Nous implémenterons, dans un premier temps, un algorithme simple pour une résolution naïve et on l’affinera ensuite.

SA2. Partage dynamique d’énergie verte entre des ilots autonomes et des véhicules connectés

Domaines IA
Librairies (proposées)
Langages (proposé) Java…
Responsable du sujet Samir AKNINE
Présentation du sujet Sujet complet

L’objectif de ce projet est d’implémenter une méthode de résolution qui permet à des véhicules connecter de se recharger auprès de bornes intelligentes et de contrôler dynamiquement les interactions entre les véhicules autonomes et les bornes.

SA3. Un Système de négociation automatique

Domaines IA
Librairies (proposées)
Langages (proposé) Java…
Responsable du sujet Samir AKNINE
Présentation du sujet Sujet complet

On s’intéresse à la modélisation d’un système de négociation automatique intelligent. On se propose de prendre comme exemple l’organisation de voyage. Pour ce faire, on considère un ensemble d’entités composant ce système qu’on appellera des fournisseurs et des négociants. Les fournisseurs sont chargés de récupérer les informations sur les services, les préférences et les contraintes des fournisseurs de services. Par exemple, une compagnie aérienne ou un utilisateur peut soumettre un ensemble de billets d’avions ou de trains à un fournisseur pour les mettre en vente. Les négociants représentent quant-à-eux aussi bien des organismes que des personnes qui recherchent des services ou des biens à acquérir. Pour cela, ils doivent, de la même façon, recueillir les informations nécessaires pour mener leurs négociations auprès des fournisseurs de ces services.

AM1. Reconnaissance de caractères ou de notes de musique sur une image et lecture du texte

Domaines Images et machine learning (IA)/Deep learning
Techniques Détection de caractères, classification, lecture.
Langages C++ ou Python (surement plus simple pour le deep learning)
Responsable du sujet
Alexandre Meyer
Informations à voir
Credit card OCR with OpenCV and Python ; Keras, surcouche des plateformes de deep learning classique (Tensorflow, CNTK, Theano; synthèse de sons

Les outils de vision et de synthèse de son deviennent assez rependus et simple d'utilisations pour être capable de coder des applications qui semblaient encore impressionnantes il y a quelques années. Le travail portera sur 3 points et peut donc se réaliser à 3 développeurs bien synchronisés.

AM2. Développement d'un jeu vidéo complet avec Unity

Domaines Image
Techniques Toutes les facettes d'un jeu vidéo
Langages C#/Unity
Responsable du sujet
Alexandre Meyer
Informations à voir Tuto unity

Unity est un framework devenu hyper classique pour le développement de jeux vidéo. Ce sujet se propose de vous faire développer un jeu vidéo complet en allant si possible jusqu'à la publication sur l'Android store. Après une prise en main d'Unity, nous vous proposons de par exemple de redévelopper soit un jeu similaire à tuxracer mais en multi joueur sur le même écran coupé en deux sous partie, soit tout autre jeu que vous proposerez (en restant raisonnable sur la faisabilité). TuxRacer est un jeu OpenSource développé en C++ dont les ressources sont disponibles (terrain, modèle 3D, musique, etc.).

AM3. Unity et Apprentissage Machine

Domaines IA et un peu Image
Techniques Apprentissage par renforcement
Langages C#/Unity
Responsable du sujet
Alexandre Meyer
Informations à voir Unity et Apprentissage Machine

Unity est un framework devenu hyper classique pour le développement de jeux vidéo. Ce sujet se propose de vous faire explorer les outils mise à disposition des développeurs Unity pour qu'une “IA” apprenne à jouer à un jeu. C'est un sujet assez exploratoire et demandant une bonne capacité à aller se documenter seul sur les différents algorithmes qu'il sera possible de mettre en place. Vous viserez un mini jeu déjà développé et dans un 1er temps vous mettrez en place une IA très basique, voir même jouant au hasard en ne gardant que les meilleurs actions.

AMRC4. Edition et visualisation de traces GPS sur le web

Domaines Web et visualisation
Techniques
Langages
Responsable du sujet
Alexandre Meyer, Remy Caazbet
Informations à voir VisuGPX

L'objectif de ce projet est de concevoir un site web proposant le chargement, la visualisation et l'édition de trace GPS au format GPX. Souvent les traces GPS sont erronés (perte de signal, GPS peu précis, etc.). Nous attacherons une part importante aux outils d'éditions de la trace. De nombreux sites proposent l'éditions de traces GPS mais leur mode d'édition est souvent limité et ne respecte pas certaines données comme les temps ou les altitudes. Nous voudrions avoir

Une deuxième partie du sujet pourra porter sur la visualisation de grande quantité de traces GPS, comme par exemple la visualisation mondiale des traces des sportifs.

AM5. Animation de visages pilotée par une capture de mouvement

Domaines Synthèse d'images
Techniques et langages OpenGL / C++ ou webGL ou C#/Unity
Responsable du sujet
Alexandre Meyer
Informations à voir

Les deux grandes familles de techniques pour déformer un maillage sont le mélange de formes (blendshape) ou le skinning. A priori, dans ce sujet nous nous orienterons vers la technique de blendshape. La technique de blendshape consiste à mélanger des maillages 3D de visages afin d'obtenir des expressions différentes. Par exemple, à partir de 4 maillages représentants différents expression (joie, colère, peur, surprise) le blendshape créera un nouveau maillage en faisant la moyenne pondérée des 4 visages de références. Cette technique poura être mise en oeuvre en C++ en partant du code que vous avez utilisé en L2 “Introduction à l'informatique graphique” ou en utilisant le framework de jeu vidéo Unity (au choix par groupe).

Le pilotage de l'animation du visage se fera en capturant les mouvements de points caractéristiques d'un visage filmé avec une webcam en utilisant DLib (python ou C++).

FR1. Classification par arbre de décision et forêt aléatoire

Domaine Classification, Machine Learning
Langage (proposé) C++, java
Responsable du sujet
Fabien Rico
Informations à voir
Ensembles de cours datamining (cf *Arbre de décision* et *Random Forest*)

Le but de votre projet est d'implémenter un algorithme classique de construction d'une forêt.

Pour cela il faut :

  1. implémenter la construction d'un arbre de décision à partir d'un jeu de données d'exemples;
  2. implémenter un système permettant de générer un grand nombre d'arbres de décision;
  3. mettre en place un système de test permettant de mesurer la qualité de vos algorithmes.

Votre logiciel devra être capable à partir d'un fichier d'exemple dans un format simple (CSV) de construire un modèle. Puis à partir d'un modèle et d'un fichier de test dans le même format de trouver les classes des objets.

Améliorations

Les améliorations possibles de votre travail pourront porter sur les différentes optimisations ou adaptations de l'algorithme à des cas spécifiques, sur l'amélioration du temps de calcul et du coût mémoire de votre programme. Vous pourrez aussi ajouter des prétraitements pour résoudre les cas ou les données sont lacunaires ou ajouter une interface graphique au programme.

FR2. Site de travail colaboratif

Domaine administration système
Technologie Docker
Responsable du sujet Fabien Rico
Information à voir
https://owncloud.org/
https://rocket.chat/
https://fr.wordpress.org/

Le but de ce travail est de créer un script d'installation d'un site de travail collaboratif. Ce site est basé sur plusieurs composant

Ces composants devront de plus s'appuyer sur un système d'authentification unique (ldap?).

Pour simplifier l'installation automatique de l'ensemble, vous devrez utiliser des conteneurs docker. Le résultat de votre travail doit être une archive et un script dont l'exécution permettra d'installer l'ensemble des composant et de les faire communiquer.

Amélioration

Il y a un grand nombre de composants annexes pouvant être ajouter : webmail, forge, système d'authentification CAS/OpenIDConnect … Il est aussi possible d'ajouter des modules utiles au composants proposé : conférence vidéo pour rocketchat, édition de documents pour owncloud …

FR3. Mise en place de cluster de calcul parallèle

Domaine administration système
Techniques Docker, machines virtuelles
Responsable du sujet
Fabien Rico
Information à voir
https://www.docker.com/
http://spark.apache.org/

Pour gérer de grands volumes de données, plusieurs framework ont été développés. Spark est l'un d'entre eux, il permet de définir des programmes dont les calculs seront facilement et efficacement distribués sur un cluster. Mais ces cluster doivent être créés. Vous devez créer un système capable de mettre en place un cluster spark et de lui soumettre des tâches de calcul.

Le système que vous allez développer pourra utiliser un outil comme docker-machine pour créer des machines virtuelles dans une plateforme de cloud computing (celle du département), puis les conteneurs dockers pour lancer les différentes parties du cluster de calcul. Enfin, il soumettront les tâches au cluster pour obtenir leurs résultats.

Amélioration

FR4. Mise en place d'un site web

Domaine web
Langage php
Responsable du sujet Fabien Rico
Information à voir
http://laravel.com/
http://symfony.com/

Le but de ce sujet est de mettre en place un site web avec une partie visible (front) et une partie d'administration (backend). Le sujet du site est encore indéterminé (et des idées sont les bienvenues). Il devra comporter une part de programmation importante (ne pas uniquement installer un CMS). Il devra comporter un système de gestion des utilisateurs, des droits, de modification du front…

Amélioration

Selon la difficulté technique de certaines parties du site :

FR5. Reconstitution d'un plan à partir de photos aériennes

Domaine Image
Bibliothèque opencv
Responsable du sujet
Fabien Rico
Alexandre Meyer
Informations à voir

A partir de photographie aériennes prises par un drone, vous devez reconstituer l'image planes de la totalité de la zone survolée. Pour cela, il faut trouver des points d’intérêts dans les images voisines et appliquer une déformation pour les faire coïncider.

Améliorations

Les améliorations de ce travail porterons sur l'interface de ce logiciel qui permettra de manière plus ou moins automatique de corriger ou détecter les erreurs ou de manipuler les paramètres de l'algorithme.