Sujets, 2025/2026 Automne
Slides de présentation des sujets:
AM1. Deep learning et image : classification et génération d'images
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 d'explorer les possibilités qu'offre les réseaux de neurones à traiter des images. Il y a deux grandes pistes qui peuvent être explorées. D'abord la classification d'images qui cherche à reconnaitre un objets à partir de sa photo, c'est à dire à lui donner un label : le nom de la personne, le type d'objet, un caractère pour la reconnaissance d'écriture, des informations sur des images satallitaires ou médicales, etc. Le deuxième aspect est l'édition ou la génération de nouvelles images. Un réseau peut apprendre à modifier, voir à générer une nouvelle image après avoir “appris” sur une base d'images du même type.
Par exemple, 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). Une piste pour ce sujet serait 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é. En allant plus loin, il est également envisageable d'explorer les GAN (Generative Adversarial Network) pour produire une nouvelle image … Le domaine est vaste.
GANs vs. Autoencoders: Comparison of Deep Generative Models GAN — Some cool applications of GANs.
AM2. Jeu vidéo sous Unity en réseau associé à un test de Turing
Domaines | Animation/Interaction/Jeu vidéo |
---|---|
Techniques et langages | C# / Unity |
Responsable du sujet | Alexandre Meyer |
Difficulté | Raisonnable / Intermédiaire |
L'objectif de ce sujet est de développer un jeu vidéo sous Unity se jouant en réseau. A la fin de la partie, le(s) joueur(s) humain(s) indique s'ils avoir jouer avec un autre humain ou avec une machine. Le jeu peut être simple. Ce n'est pas forcément un jeu de plateau. Cela peut-être un Mario plateau ou un Bomberman ou une mini-course de voiture ou un FPS L'humain pilote Mario en 2D avec des plateforme, un autre humain ou une IA pilote les monstres. Le réseau est important car chaque joueur doit être dans une salle différente. Il faudra juste pouvoir proposer un algorithme pour faire jouer l'ordinateur.
Vous allez découvrir Unity, la programmation d'un jeu vidéo, les échanges réseaux, l'“IA”, etc. Il existe de nombreux codes pour faire du réseau en Unity.
AM3. Problèmes inverses : simulation et reconstruction 3D
Domaines | Image Processing, simulation |
---|---|
Techniques et langages | Python |
Responsable du sujet | Alexandre Meyer |
Difficulté | Sujet progressif |
Sujet mélangeant simulation, rendu 3D, optimisation, framework de calcul, etc.
Il existe plusieurs frameworks de calcul proposant une manière de paralléliser et d'optimiser efficacement. Typiquement les framework de Deep learning ou Taishi propose un cadre efficace de calcul où un algorithme est représenté par un arbre de calcul où chaque noeud est différentiable. De plus ces framework permettent facilement de paralléliser du code pour profiter d'un GPU par exemple. De plus, ces frameworks facilitent l'optimisation grâce au fait que chaque noeud comporte du code inversible. Ne prenez pas peur, tout ceci est transparent quand vous écrivez le code. Par exemple, avec Taishi, le code se réalise en python avec quelques balises pour aider au paralélisme.
Ce sujet propose de réaliser deux parties. Une partie réalisant le calcul d'une image à partir soit d'un fluide, soit d'un nuage de points représentant un objet. Et une partie autour du problème inverse qui va chercher à guider la simulation de fluide vers une cible (une forme particulière ou une vidéo), où guider le nuage de points vers l'apparence d'un objet.
Une manière de représenter la fumée est dans un tableau 3D (grille régulière) stockant des mesures physiques (densité de fumée, vitesse, etc.) dans chaque case (voxel). Les étapes de simulation sont assez simple, du pseudo code sera donné. La prise en main de Taishi permettra d'accélérer les calculs, sans compléxifier le code.
Pour la partie inverse, le modèle sera initialisé au hasard : on remplira aléatoirement l'espace de fumée ou on placera les points aléatoirement. Une fonction d'erreur (du code) est à définir. Par exemple, l'affichage de la simulation produit une image. L'erreur sera calculée avec la différence entre cette image et une image cible. L'image cible peut être une image d'une vidéo de fumée ou une image formant un motif particulier ou l'image d'un objet. L'optimisation cherchera à modifier les forces appliquées à chaque voxel pour que la fumée tende vers la cible.
On commencera par des choses de très simples et le problème sera complexifié au fur et à mesure.
https://www.taichi-lang.org/ https://fr.wikipedia.org/wiki/D%C3%A9rivation_automatique#:~:text=En%20math%C3%A9matique%20et%20en%20calcul,fonction%20par%20un%20programme%20informatique. https://github.com/OutofAi/2D-Gaussian-Splatting
AM4. Animation physique et optimisation de la morphologie de créatures animées
Domaine | Algorithme évolutionniste, simulation physqiue, méta heuristiques, optimisation, moteur physique |
---|---|
Langage | C++ ou python avec BulletPhysics; Ou C# avec Unity; 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 …
Une idée classique de ce choix de projet est d'appliquer ces algorithmes évolutionnistes à un problème de génération de forme de créatures en cherchant à ce que ces créatures réalisent une tâche le mieux possible : par exemple la locomotion. Vous prendrez en main un moteur physique. L'algorithme évolutioniste proposera une série de créatures avec des morphologies différentes encodées par une séquence de “gènes” (un code). La simulation physique donnera une distance de déplacement que l'algo cherchera à maximiser.
L'implémentation peut se faire en C++ ou en python avec le moteur BulletPhysics; mais également en C# avec Unity.
AM5. Modélisation, Rendu, Animation de nuages ou de la surface de l'eau
Domaine | Synthèse d'images |
---|---|
Langage | C++ (ou C# avec Unity) |
Responsable du sujet | Alexandre Meyer |
Information à voir | |
https://tel.archives-ouvertes.fr/tel-00319974/file/defense.pdf | |
Les nuages ou l'eau font partis des éléments à modéliser, afficher et animer dans une scène d'extérieure en synthèse d'images. Ce projet se propose d'explorer certains aspects des nuages ou de la surface de l'eau : leur formation, leur mouvement, leur interaction avec la lumière.
La réalisation pourra se faire en C++ avec gkit (ou autre code en C++), mais pourra également se réaliser en C# sous Unity.
RC1. Evaluation d'une méthode de clustering de graphe utilisant le deep learning
Domaines | Machine Learning, python… |
---|---|
Librairies (proposées) | cdlib, pytorch |
Langages (proposé) | Python |
Responsable du sujet | Rémy Cazabet |
Informations à voir | http://cazabetremy.fr/Teaching/LIFPROJET.html |
Dans un article récemment publié (https://proceedings.neurips.cc/paper_files/paper/2024/file/1f59562caae05e6aae0ffd1145bea5da-Paper-Conference.pdf), une nouvelle méthode de détection de communautés (clustering de graphe) utilisant du deep learning a été proposé. Dans le cadre d'un projet de recherche, nous comparons de multiples méthodes de détection de communautés sur des graphes standard. Votre objectif sera de tester cette nouvelle méthode sur ces cas standards, et d'évaluer les résultats. Normalement, le code de la méthode est fourni par les auteurs. Un objectif additionnel possible du projet est d'intégrer cette méthode a la librairie CDLIB (https://github.com/GiulioRossetti/cdlib), dont je suis l'un des auteurs, qui est la librairie de référence pour la détection de communautés.
RC2. Analyse de grandes données Bitcoin
Domaines | Big Data, Data Exploration | |
---|---|---|
Librairies | pandas, polars, pySpark | |
Langages (proposé) | python | |
Responsable du sujet | Rémy Cazabet |
Dans un projet récent, nous avons produit un grand jeu de données concernant Bitcoin (https://www.nature.com/articles/s41597-025-04595-8#:~:text=The%20dataset%20covers%20all%20Bitcoin,regarding%20daily%2Dbased%20conversion%20rate.). Il est constitué de tous les échanges effectué depuis le début de Bitcoin jusqu'en 2021. Ce jeu de données pose des challenges en terme d'analyse en raison de sa taille. L'objectif sera tout d'abord de décrire ce jeu de données, puis d'essayer de répondre a une question d'intérêt, telle que par exemple l'identification d'acteurs impliqué dans des transactions illégales, la détection de pattern surprenants, le suivi de coins depuis leur minage jusqu'à leur état à la fin du jeu de données pour évaluer la vitesse a laquelle l'argent circule, la description de la popularité et de la chute des grandes plateformes d'Exchange, etc.
RC3. Site orienté donné de visualisation des décès en France
Domaines | Web, Data Exploration | |
---|---|---|
Librairies | Dash (https://dash.plotly.com/tutorial), python, html/CSS | |
Langages (proposé) | python, javascript, html… | |
Responsable du sujet | Rémy Cazabet |
Depuis peu, l'état français fournir un jeu de données très intéressant, car il est détaillé au niveau de l'individu et de la commune: le registre des décès. Pour chaque personne décédé depuis 1970, on dispose ainsi de ses informations: nom, prénom, sexe, date et lieu de naissance (ville, pays), lieu de décès. Je propose de faire un outil pour explorer ce données, permettant par exemple de retracer la mobilité des personnes (est-ce que les personnes décédées en 2022 vivaient plus loin de leur lieu de naissance que les personnes décédées en 2012, 1992… ?), mais cela permet également de tracer des courbes indirectes de popularité des prénoms à la naissance dans certaines villes, etc. Je propose pour faire cet outil de découvrir le framework Dash (https://dash.plotly.com/tutorial), permettant de créer des webapp orienté analyses de données. Si le côté peu réjouissant des données sources sont un problème, on peut envisager des alternatives (mais il n'y a pas l'équivalent pour les naissances ou les mariages, a ma connaissance. Mais il y a beaucoup de données libres fournies par des villes ou l'état français).
RC4. Webapp pour comparer les tarifs de location de voiture
Domaines | Web, dataviz… |
---|---|
Librairies (proposées) | Dash ou autre. |
Langages (proposé) | Python, javascript, html/css, etc. |
Responsable du sujet | Rémy Cazabet |
Informations à voir | |
Aujourd'hui, de nombreuses entreprises proposent de la location de voiture, en particulier de nouveaux acteurs tels que citiz, leo&Go, Drivalia qui ont introduit des facturations a la minute et au km, sur des voitures en libre service. L'objectif est de concevoir un site web, un outil en ligne, permettant de saisir des informations de trajets (distance, temps), et d'être capable de comparer les tarifs de ces diverses solutions. Des graphiques pourront par exemple montrer quand est-ce qu'une solution devient plus intéressante qu'une autre, en fonction du temps de location ou de la distance.
RC5. Large language models pour un assistant virtuel hybride
Domaines | IA, … |
---|---|
Librairies (proposées) | LM Studio, autres |
Langages (proposé) | Python |
Responsable du sujet | Rémy Cazabet |
Informations à voir | |
Les LLM (Large Languages Models) sont maintenant assez facile à utiliser sur une machine personnelle, notamment en utilisant LM studio. Vous pouvez donc avoir un “chatGPT” personnalisé, qui tourne en local sur votre machine. Votre objectif sera de créer un assistant virtuel composé d'un système hybride, dont l'objectif sera de gérer votre boite mail/vos messages SMS/Whatsapp, etc. Le système est hybride dans le sense où il est composé d'une partie en code classique: interface avec une application, formattage, envoi de requête, etc., et que la parte LLM sert uniquement de “cerveau” à ce système hybride. Le LLM doit par exemple servir non pas uniquement à générer du texte, mais à prendre des décisions, telles que classer le message en spam ou non, répondre ou non, détecter s'il y a un demande de rendez-vous, voire ajouter le rendez-vous dans un agenda automatiquement. Ce genre d'interaction avec ce “cerveau central” LLM pourra se faire via des questions à choix multiple imposé (étant donné le mail de contenu […], dois-je le classer en spam, répond par OUI/NON). Le projet est ouvert à une autre application utilisant ce même principe de système hybride (e.g., RPG en mode texte sur une carte et des règles de jeux imposées par un code classique, “personnalité artificielle” effectuant des recherches sur le web via des requêtes et stoquant les résultats dans une base de données et/ou alimentant un site web, etc. Note: ce projet est exploratoire et les résultats ne sont pas garantis :)
RC6. Simulation de réseaux sociaux avec des agents LLM
Domaines | IA, LLM |
---|---|
Librairies (proposées) | LM Studio, Ysocial |
Langages (proposé) | Python |
Responsable du sujet | Rémy Cazabet |
Informations à voir | |
Dans le cadre d'un projet de recherche, nous avons développé une librairie python appelée Ysocial (https://ysocialtwin.github.io). Cette plateforme est pensé pour simuler des réseaux sociaux peuplés de LLMs. Cela est conçu pour permettre de tester in-silico des hypotheses, par exemple sur la diffusion d'information, ou sur l'impact des systèmes de recommendations. Cette librairie est encore a un stade experimental. Votre objectif sera d'utiliser la librairie pour simuler un petit réseau de discussion autour d'une thématique (par exemple, sport, musique, politique…), et d'évaluer le réalisme des résultats produits. Est-ce que les discussions ont l'air d'avoir du sens ? Est-ce que le comportement des LLMs a l'air d'être réaliste ? Est-ce qu'il y a beaucoup d'hallucinations ? etc.
SA1. Modélisation distribuée d’un jeu stratégique - Exemple du tactical RPG
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | C++, java |
Responsable du sujet | |
A voir | https://perso.liris.cnrs.fr/samir.aknine/L3/Battle%20Simulation%20Distributed%20AI%20-%20Vid%c3%a9o%20pr%c3%a9sentation.mp4 |
L’objectif de ce projet est de proposer une modélisation distribuée d’un jeu stratégique. Nous prendrons comme exemple le tactical RPG. Nous considérerons des personnages qui évoluent sur un environnement dynamique. Les personnages appartiennent à plusieurs groupes. Les personnages peuvent se déplacer en même temps selon des règles préétablies. Nous implémenterons une méthode de résolution distribuée avec des entités autonomes dotée de comportements intelligents. Nous commencerons par définir des stratégies de résolution simples dans lesquelles les personnages effectuent des déplacements uniquement sur la base de leur perception. Dans une deuxième étape, nous définirons des stratégies de résolution plus fines permettant aux personnages de construire des stratégies de jeu collectives en interagissant avec leur voisinage. Plusieurs exemples de jeux ont été déjà implémentés par les étudiants. Nous pourrons mettre a disposition leur code. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA2. Partage dynamique d’énergie verte entre des ilots autonomes et des véhicules connectés
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | C++, java |
Responsable du sujet | Samir AKNINE |
Plusieurs projets urbains innovants d’ilots autonomes tels que le projet du groupe Bouygues-construction pour la gestion intelligente de l’énergie traitent du problème du partage dynamique de l’énergie avec son réseau de communication énergétique et un système de stockage par des batteries de nouvelle génération directement installées dans les bâtiments. Ce projet vise à équiper les foyers avec de nouveaux dispositifs intelligents pour éprouver des solutions originales pour les futurs réseaux de distribution. Il cible l’ouverture des réseaux et l’exploitation automatique des îlots. L’évolution actuelle de ces ilots est renforcée grâce au développement de nouvelles batteries de stockage à fort potentiel et à faibles coûts, et au transfert intelligent de l’énergie entre les ilots avec un câblage interne indépendamment des systèmes de distribution classiques. Ce transfert permet d’envisager une adaptation de la consommation de manière locale, i.e., à l’échelle d’un quartier, en réduisant les coûts et les pertes du transport de l’énergie.
Pour accompagner le développement de ce projet, une solution pour la gestion du surplus d’énergie s’est inscrite en direction des véhicules autonomes solution de stockage et d’usage intelligent de l’énergie renouvelable. Ce modèle de fonctionnement requière l’installation de bornes de rechargement communicantes au niveau des ilots autonomes permettant aux résidents et aux non-résidents de l’ilot d’accéder au surplus d’énergie produite dans ces ilots moyennant une participation financière mais avec un coup d’achat de cette énergie relativement inférieur à celui appliqué par les fournisseurs standards. La gestion de l’énergie doit ainsi être reformulée comme un problème de planification où l’énergie fournie est considérée comme une ressource partagée et intermittente dont l’usage doit être régulé et optimisé par ce nouveau système intelligent. 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. Les étudiants peuvent se baser sur une premiere implementation deja realisee sur projet pour développer les nouveaux mécanismes.
Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA3. Livraison de marchandises
Domaine Intelligence Artificielle Langage (proposé) C++, java Responsable du sujet Samir AKNINE L’objectif de ce travail est de proposer un planner automatique pour la livraison intelligente de marchandise. Nous allons considérer un ensemble de véhicules de livraison chacun ayant des propriétés spécifiques (ex. poids maximum à transporter, niveau d’autonomie, …). Chaque véhicule possède une liste de tâches à accomplir dans la journée. Il doit planifier l’ordre d’exécution de ses tâches de manière dynamique et parer à tout événement pouvons se produire dans son environnement (ex. blocage ponctuel d’une voie). Nous proposerons une modélisation distribuée dans laquelle chaque véhicule possède des connaissances de son environnement et peut interagir avec les autres véhicules et l’infrastructure. Il décide individuellement de ses actions et peut adapter ses comportements de manière dynamique. Nous implémenterons et testerons un ensemble de mécanismes pour garantir cette interaction et adaptation aux événements imprévus. Une première implémentation de ce travail peut etre mise a disposition des étudiants. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA4. Gestion intelligente de parkings dans un centre urbain
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | C++, java |
Responsable du sujet | Samir AKNINE |
L’objectif de ce projet est de proposer une méthode distribuée pour l’affectation des places de stationnement à des véhicules intelligents. Le rôle de l’étudiant est d’implémenter l’ensemble des comportements nécessaires aux véhicules pour interagir avec les parkings et négocier le tarif de stationnement qui est décidé dynamiquement en tenant compte d’un ensemble d’informations, telles que la durée du stationnement, le profil de l’usager, le taux d’occupation du parking, le créneau horaire, etc. Un travail d’implémentation a été déjà mené sur ce projet. Les étudiants peuvent se baser sur ces développements pour implémenter les nouveaux mécanismes. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA5. Véhicule autonome : Gestion automatique de la traversée d’une intersection intelligente
Domaine Intelligence Artificielle Langage (proposé) C++, java Responsable du sujet Samir AKNINE Les récentes évolutions technologiques des dernières années ont permis d’améliorer le niveau d’équipement des véhicules rendus de plus en plus connectés, voire autonomes, ce qui permet de proposer de nouvelles réponses aux problèmes du trafic urbain. Les véhicules sont, à présent, capables de communiquer et de se coordonner. Avec notre projet, nous proposons une approche de régulation du trafic s’appuyant sur des méthodes distribuées pour améliorer les conditions de mobilité des véhicules. Dans le cadre ce travail, nous implémenterons la méthode de régulation que nous avons définie à l’échelle de l’intersection tirant parti des capacités de communication des véhicules, et dans laquelle les véhicules autonomes négocient leur droit de passage dans chaque intersection. Cette négociation s’effectue en utilisant des mécanismes prédéfinis en s’appuyant sur les données de mobilité de chaque véhicule et en permettant ainsi de prendre en compte différents critères pour la prise de décision locale, comme l’état général du trafic, la localisation d’éventuelles congestions, ou encore la circulation des bus, les trajets programmés par les véhicules, etc. L'étudiant peut avoir acces a une premiere implementation deja realisee. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA6. Modélisation distribuée d’une variante d'un jeu stratégique (Échecs / Dames / Shogi / Taquin)
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | C++, java |
Responsable du sujet | Samir AKNINE |
L’objectif de ce projet est de proposer une modélisation distribuée d’un jeu stratégique. Nous prendrons comme exemple une variante le jeu d’échés ou de dames. Dans ce jeu, les pièces peuvent se coordonner et communiquer pour mettre en œuvre des stratégies collectives. Elles peuvent effectuer différents mouvements parallèles selon des règles prédéfinies et exhiber différents comportements (tels que des attaques de groupes simultanées). Nous testerons différentes règles de jeu et implémenterons les stratégies collectives. Un travail d'implémentation a été réalisé préalablement sur ce projet. Les étudiants pourront s'ils le souhaitent réutiliser le code existant. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
SA7. Sites marchands intelligents pour le commerce électronique
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | C++, java |
Responsable du sujet | Samir AKNINE |
Nous utiliserons des modèles de négociation automatique pour la mise en place de sites marchands intelligents. Chaque site dit “vendeur” propose plusieurs items ou produits avec des indications sur les propriétés des items (ex. prix min,…). Un utilisateur peut spécifier, à un site dit “acheteur”, l’item qu’il recherche, ses propriétés ainsi que les contraintes et les préférences associées à cet item. Le site acheteur se chargera alors de mener les négociations automatiques avec les sites vendeurs proposant cet item. Le travail demandé consiste à modéliser les différents comportements de négociation automatique pour la vente et l’achat des items. Nous définirons les protocoles d’interactions et de négociation correspondants. Nous implémenterons et testerons l'ensemble des mécanismes à proposer. Un système a été développé sur ce sujet. Nous pouvons mettre a disposition des étudiants le code associé. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/
BY1. Générateur de livres d’histoires pour enfants personnalisables
Domaine | Intelligence Artificielle |
---|---|
Langage (proposé) | Python |
Responsable du sujet | Bruno YUN |
Ce stage a pour objectif de développer une plateforme permettant la génération de livres d’histoires personnalisés pour enfants. L’utilisateur pourra définir différents éléments narratifs tels que : le schéma de l’histoire, le genre, les personnages, la morale ou encore le style. La génération du texte reposera sur un grand modèle de langage (LLM), tandis que les illustrations seront produites par des modèles génératifs d’images (par ex. SDXL 1.5 ou Flux). Un travail spécifique portera sur la cohérence visuelle et narrative des personnages et des décors à travers l’ensemble des pages. En option, des modules complémentaires pourront être intégrés : (1) Synthèse vocale avec des modèles tels que XTTS-v2 ou higgs-audio-v2, afin de proposer une lecture automatique de l’histoire. (2) Génération musicale avec des modèles comme MusicGen, permettant d’accompagner le récit par des mélodies adaptées à l’ambiance. L'outil crée s'inspirera de: https://gemini.google/overview/storybook/