Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projet:2019:aut:start [2019/09/10 11:44] samir.aknineprojet:2019:aut:start [2019/09/12 08:16] (Version actuelle) – [AMFR5. Algorithme évolutionniste, simulation physqiue] alexandre.meyer
Ligne 32: Ligne 32:
 |                                                           || |                                                           ||
 [[https://www.kaggle.com/competitions | 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 [[https://www.kaggle.com/competitions | 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
 +
 +=====RC4. Valorisation de données d'un commerçant de vin    =====
 +
 +^ Domaines              | Data visualisation, Site Web, Data Mining     |
 +^ Librairies            | Bootstrap                                        |   |
 +^ Langages (proposé)    | javascript/html/css, python (analyse/nettoyage données)                          |   |
 +^ Responsable du sujet  | Rémy Cazabet                                             |
 +^ Informations à voir   | -             ||
 +|                                                                               ||   |
 +Une commercante en Vin (https://www.facebook.com/atoutvins/) a une base de données (Excel) avec les informations de ses clients et des crus qu'elle représente. A partir de ces données, vous créerez un site web permettant a des clients (restaurateurs, particuliers, etc.) de visualiser sur une carte les vins représentés, de pouvoir chercher par information (cépage, couleur...), d'accéder aux sites web des domaines, etc. 
  
 =====RC5. Librairie de clustering de graphe    ===== =====RC5. Librairie de clustering de graphe    =====
Ligne 83: Ligne 93:
 L’objectif de ce projet est ainsi d’implémenter une méthode de résolution qui permet aux véhicules de se recharger auprès des bornes intelligentes et de contrôler dynamiquement les interactions entre les véhicules autonomes et les bornes. L'étudiant peut avoir acces a une premiere implementation deja realisee. L’objectif de ce projet est ainsi d’implémenter une méthode de résolution qui permet aux véhicules de se recharger auprès des bornes intelligentes et de contrôler dynamiquement les interactions entre les véhicules autonomes et les bornes. L'étudiant peut avoir acces a une premiere implementation deja realisee.
  
-===== SA5. formation dynamique de pelotons pour une conduite collaborative =====+===== SA5. Formation dynamique de pelotons pour une conduite collaborative =====
 ^ Domaine | Intelligence Artificielle| ^ Domaine | Intelligence Artificielle|
 ^Langage (proposé) | C++, java | ^Langage (proposé) | C++, java |
Ligne 101: Ligne 111:
 comportements nécessaires à un véhicule autonome pour qu’il puisse former des pelotons pendant son  comportements nécessaires à un véhicule autonome pour qu’il puisse former des pelotons pendant son 
 trajet sans devoir modifier son itinéraire.  trajet sans devoir modifier son itinéraire. 
 +
 +
 +
 +===== AM1. Edition interactive de nouvelles images d'objets avec des auto-encodeurs (voir des GAN) =====
 +
 +^ Domaines                                                                         | Image Processing / Deep Learning(IA) / Interaction |
 +^ Techniques et langages                                                           | Python / PyQt  |
 +^ Responsable du sujet                                                             | Alexandre Meyer   
 +^ Niveau de difficulté                                                             | intermédiaire  |    
 +
 +L'objectif de ce projet est de developpé une application capable de proposer des curseurs pour éditer la photo d'une classe d'objet (par exemple des visages d'une personne) en se basant sur des auto-encodeurs. 
 +
 +Les auto-encoders sont une classe d'algorithme basée sur les réseaux de neurones profonds qui transforment un jeu de données (des images pour nous) en une représentation latente (cachée) que l'on nomme un code. Ils sont composés d'un encodeur qui produit le code et d'un décodeur qui repasse du code à la données d'origine (l'image). L'objectif de ce sujet est de construire cet auto-encoder sur une classe d'images puis d'offrir à l'utilisateur des curseurs pour éditer le code tout en lui montrant l'image décodé. 
 +
 +Dans un 2e temps, par exemple pour l'édition d'un visage, nous pouvons imaginer construire un auto-encoder pour chaque partie du visage : nez, yeux, bouche. L'utilisateur pourra ainsi éditer chaque partie du visage séparément.
 +Il est également envisageable d'explorer les GAN (Generative Adversarial Network) pour produire une nouvelle image ...
 +
 +[[https://towardsdatascience.com/gans-vs-autoencoders-comparison-of-deep-generative-models-985cf15936ea|GANs vs. Autoencoders: Comparison of Deep Generative Models]]
 +[[https://medium.com/@jonathan_hui/gan-some-cool-applications-of-gans-4c9ecca35900|GAN — Some cool applications of GANs.]] 
 +
 +
 +
 +===== AM2. Développement d'un jeu vidéo sous Unity piloté par les mouvements du corps =====
 +
 +^ Domaines                                                                                | Capture de mouvement/Interaction/Jeu vidéo |
 +^ Techniques et langages                                                                  | C# / Unity  |
 +^ Responsable du sujet                                                                    | Alexandre Meyer |
 +^ Difficulté                                                                              | Raisonnable / Intermédiaire |
 +
 +Le suivi de marqueur peut facilement se réaliser avec OpenCV et une webcam. Même plus loin, la capture des mouvements d'un visage ou du corps peut être réalisé avec Dlib (visage) ou OpenPose (il faut néanmoins une machine avec un GPU Nvidia). Ce projet ce propose de developper un (ou des mini jeux) sou Unity pensés pour que l'interaction se fasse avec son corps filmé par la webcam de son ordinateur. On peut imaginer dans un premier temps un mini jeu avec des ballons qui tombent du ciel et qu'il faut attrapper soit avec les mains (marqueurs rouge suivi), soit avec la tête (DLib). Puis si ces outils sont bien maitrisés, libre à vous d'imaginer tout type de jeu : voir les jeux basés sur la Kinect ou Wii avec le même type d'interaction.
 +
 +Une des difficultés techniques sera l’interfaçage entre Unity et OpenCV. Unity peut charger des librairies dynamiquement (.dll ou .so) mais il y a une phase de configuration technique.
 +
 +[Unity et OpenCV] https://www.raywenderlich.com/5475-introduction-to-using-opencv-with-unity
 +
 +
 +===== AM3. Développement d'un jeu vidéo 2D sous Unity avec Mister RED =====
 +
 +^ Domaines                                                                                | Jeu vidéo |
 +^ Techniques et langages                                                                  | C# / Unity  |
 +^ Responsable du sujet                                                                    | Alexandre Meyer |
 +^ Difficulté                                                                              | Raisonnable / Intermédiaire |
 +
 +Mister Red est un personnage 2D représenté par des battons pour chaque partie du corps : jambes, bras, tronc, tête.
 +Ce sujet vous propose de développer le jeu de votre choix incluant Mister Red. La difficulté portera sur produire les animations de Mister Red, plusieurs pistes semblent envisageables. Entrer à la main ou concevoir une petite interface pour entrer les positions des mains, de la tête et des pieds sur des poses clées (1 pose pour debout, 2 poses pour marche, 1 pose coup de pied, 1 pose coup de poing) puis d'interpoler ces positions pour obtenir une animation. Une autre piste serait de partir de capture de mouvement 3D (des animations existent sous Unity) et de les projeter en 2D. La 2e difficulté sera de gérer les interactions entre Mister Red et les décors qui pourront être codée dans des images. 
 +
 +Libre à vous d'imaginer tout type de jeu : combat, aventure, etc.
 +
 +[Video de Mister Red] https://www.youtube.com/watch?v=MoDGzRa1LW0
 +
 +
 +===== AM4. Capture et transfert d'animation d'un visage vers un autres par image warping ou déformation de maillages 3D =====
 +
 +^ Domaines                                                                                | Image Processing |
 +^ Techniques et langages                                                                  | Python ou C++/OpenGL |
 +^ Responsable du sujet                                                                    | Alexandre Meyer   |
 +^ Difficulté                                                                              | Sujet progressif |
 +
 +
 +L'objectif de ce projet est de développé un algorithme capable de transférer le mouvement d'un visage d'une personne filmé vers une autre personne. La capture de l'animation du visage source se fera en détectant les points caractéristiques d'un visage filmé avec une webcam en utilisant DLib (python ou C++). 
 +
 +Un premier prototype se fera en générant une nouvelle position de marqueurs de visage puis en réalisant un warping (déformation) de l'image du visage cible. Une interpolation par RBF (ou autre) semble une solution réalisable. Ce warping pourra s'etendre à la déformation d'un maillage 3D, probablement en utilsant Gkit (le code de LIFGRAPHIQUE en L2).
 +
 +
 +===== 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                                  ||   
 +|    [[http://eric.univ-lyon2.fr/%7Ericco/cours/supports_data_mining.html | Ensembles de cours datamining (cf *Arbre de décision* et *Random Forest*)]]  ||
 +   
 +La classification automatique est un domaine où on cherche à apprendre à reconnaitre la classe d'individus à partir d'exemples. Une technique parmi les plus efficaces est basée sur la construction d'un grand nombre d'arbres de décision (ce qu'on appelle forêts aléatoires). En effet, l'expérience montre que si on construit suffisamment de classifieurs différents entre eux mais efficaces, le fait de décider en fonction de la majorité des classifieurs permet d'obtenir résultat très bon.
 +
 +Le but de votre projet est d'implémenter un algorithme classique de construction d'une forêt.
 +
 +Pour cela il faut :
 +  - implémenter la construction d'un arbre de décision à partir d'un jeu de données d'exemples;
 +  - implémenter un système permettant de générer un grand nombre d'arbres de décision;
 +  - 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://nextcloud.com/  ||
 +|     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 
 +  * [[https://nextcloud.com/|nextcloud]] qui permettra le partage de documents, l'édition en ligne ...;
 +  * [[https://rocket.chat/|rocketchat]] qui permettra les discussions en lignes.
 +  * [[https://fr.wordpress.org/|wordpress]] (ou autre chose) qui permettra de créer un site web classique;
 +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. Site de chat du département =====
 +^ Domaine | administration système |
 +^ Technologie | Docker, Ldap |
 +^ Responsable du sujet | Fabien Rico                                          | 
 +^ Information à voir                                                      ||
 +|     https://rocket.chat/    ||
 +
 +Le but de ce travail est de créer chat pour les étudiants du département. Il doit leur permettre la discussion en ligne mais surtout s'intégrer avec le système d'information de l'université. Par exemple,vous devrez configurer un bot qui écoutera les conversations pour reconnaitre certaines commande. Ce dernier devra permettre d'ajouter à une discussion tous les étudiants inscrit à une UE ou à une année d'étude.
 +
 +Pour simplifier l'installation automatique de l'ensemble, vous devrez utiliser des conteneurs //docker//
 +
 +==Amélioration==
 +Il est possible d'étendre les fonctionnalité de rocketchat. Une autre manière est de développer un robot pour d'autre tâches.
 +===== FR4. 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===
 +  * utilisation d'une plateformes de //cloud computing// publique (AWS, Azure, ...)
 +  * utilisation d'autres //frameworks// (hadoop)
 +  * interface web de gestion
 +
 +
 +===== FR5. Mise en place d'un site web =====
 +^ Domaine | web |
 +^ Langage | php ou JS |
 +^ Responsable du sujet | Fabien Rico                                          | 
 +^ Information à voir                                                      ||
 +|     http://laravel.com/    ||
 +|     http://symfony.com/    ||
 +|     https://fr.vuejs.org/    ||
 +
 +
 +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 :
 +  * authentification web basée sur openid connect, ou CAS;
 +  * lien avec les réseaux sociaux
 +
 +
 +===== AMFR5. Algorithme évolutionniste, simulation physqiue =====
 +^ Domaine | méta heuristiques, optimisation, moteur physique |
 +^ Langage | C++, python, etc. ? |
 +^ Responsable du sujet | Fabien Rico et Alexandre Meyer                                         
 +^ Information à voir                                                      ||
 +| [[http://jvf.free.fr/550_Articles_LinuxMag/GLMF_076_034_041.pdf]]  ||
 +| [[https://www.youtube.com/watch?v=JBgG_VSP7f8]]    ||
 +| [[https://www.youtube.com/watch?v=m4E9sj9vH1I]]  ||
 +
 +Les algorithmes évolutionnistes ou génétiques sont des méta-heuristique d'optimisation c'est à dire des méthodes globales pour résoudre des problèmes de toutes sorte qu'il faut adapté à un problème particulier. Comme leur nom l'indique, ils sont basés sur le concepts d'évolution. On génère une famille aléatoire d'individu dont on conserve les plus performant, que l'on mélange pour générer une nouvelle famille ...
 +
 +
 +
  • projet/2019/aut/start.1568108641.txt.gz
  • Dernière modification : 2019/09/10 11:44
  • de samir.aknine