Skip to content
Snippets Groups Projects
Commit 65978e50 authored by Alexandre MEYER's avatar Alexandre MEYER
Browse files

Update 4 files

- /web/content/am/TP_skeleton.md
- /web/content/_index.md
- /web/content/am/_index.md
- /web/content/am/TP_Dance.md
parent 2a52a6be
No related branches found
No related tags found
No related merge requests found
Pipeline #137431 passed
......@@ -10,7 +10,7 @@ Volume horaire : 30h (CM/TP)
![MLImage_all.jpg](images/MLImage_all.jpg)
## Objectif de l'UE
<p style="text-align:justify;">Il s'agit d'une UE optionnelle de la 2ère année du Master d'Informatique parcours IA et ID3D de l'Université Lyon 1. Les cours ont lieu au semestre 1 (automne). L'objectif de l'UE est de donner les bases en apprentissage machine (notamment apprentissage profond) pour les problèmes d'images. Le cours présentera d'abord les problèmes classiques liés à l’image comme la classification, l'extraction d'informations, la reconnaissance de formes, le suivi, la segmentation, etc. Un large panel des différents types de réseaux (CNN, auto-encoder, LTSM, GAN, etc.) sera donné, ainsi que leurs applications à des problèmes élaborés allant de l’édition (super-résolution, transfert de motifs, de palettes) jusqu’aux méthodes génératives (génération de visages, de maillage, d’animations, de textures, etc.) plus ou moins guidé par l’utilisateur.
<p style="text-align:justify;">Il s'agit d'une UE optionnelle de la 2ère année du Master d'Informatique parcours IA et ID3D de l'Université Lyon 1. Les cours ont lieu au semestre 1 (automne). L'objectif de l'UE est de donner les bases en apprentissage machine (notamment apprentissage profond) pour les problèmes d'images. Le cours présentera d'abord les problèmes classiques liés à l’image comme la classification, l'extraction d'informations, la reconnaissance de formes, le suivi, la segmentation, etc. Un large panel des différents types de réseaux (CNN, auto-encoder, LTSM, GAN, etc.) sera donné, ainsi que leurs applications à des problèmes élaborés allant de l’édition (super-résolution, transfert de motifs, de palettes) jusqu’aux méthodes génératives (génération de visages, de maillage, d’animations, de textures, etc.) plus ou moins guidées par l’utilisateur.
</p>
[Les slides de la présentation des options sont ici.](doc/MLImage_PresOption.pdf)
......@@ -28,7 +28,7 @@ Volume horaire : 30h (CM/TP)
### Deep learning génératif et deep learning géometrique (J. Digne)
* Génération d'images: GANs et Réseaux de diffusion
* Apprentissage pour les données géometriques:
* Apprentissage pour les données géométriques :
* Nuages de points (pointNet, etc.)
* Maillages (MeshConv, etc.)
* Diffusion sur les surfaces
......@@ -44,7 +44,7 @@ Volume horaire : 30h (CM/TP)
## Emploi du temps : automne 2023
Les cours sont le Jeudi après-midi entre octobre et fin janvier.
Les cours sont le jeudi après-midi entre octobre et fin janvier.
![MLImage_all.jpg](images/MLImage_edt.jpg)
......
# Partie (III) Synthèse d'une image de posture d'une personne guidée par un squelette
# Partie (IV) Synthèse d'une image de posture d'une personne guidée par un squelette
Ce TP vise à implémenter avec PyTorch le transfert de mouvement d'une vidéo source vers une personne cible, en suivant un papier de XX etal présenté à ICCV 2019 : [Everybody Dance Now](https://openaccess.thecvf.com/content_ICCV_2019/papers/Chan_Everybody_Dance_Now_ICCV_2019_paper.pdf). Cette approche a été choisie pour faire une intriduction au GAN, mais le sujet passe d'abord par une approche qui recherche la donnée la plus proche pour comprendre le passage entre les données et la généralisation qu'offre les réseaux.
Ce TP vise à implémenter avec PyTorch le transfert de mouvement d'une vidéo source vers une personne cible, en suivant un papier de XX etal présenté à ICCV 2019 : [Everybody Dance Now](https://openaccess.thecvf.com/content_ICCV_2019/papers/Chan_Everybody_Dance_Now_ICCV_2019_paper.pdf). Cette approche a été choisie pour faire une introduction au GAN, mais le sujet passe d'abord par une approche qui recherche la donnée la plus proche pour comprendre le passage entre les données et la généralisation qu'offrent les réseaux.
## Principe
En entrée, il faut une vidéo de la personne cible effectuant quelques mouvements. Remarque : des approches récentes peuvent se contenter d'une seul image mais l'idée ici est de pratiquer, pas d'être sur le dernier papier existant.
En entrée, il faut une vidéo de la personne cible effectuant quelques mouvements. Remarque : des approches récentes peuvent se contenter d'une seule image, mais l'idée ici est de pratiquer, pas d'être sur le dernier papier existant.
A partir d'une 2e vidéo d'une personne source, l'objectif est de faire effectuer les mouvements de la personne source à la personne cible. Ceci se fait en produisant une nouvelle vidéo, image par image de la personne cible avec la pose/squelette extrait de la vidéo source. Pour extraire le squelette des vidéos, nous utilisons un réseau pré-entrainé avec la bibliothèque [Mediapipe](https://mediapipe-studio.webapps.google.com/studio/demo/pose_landmarker). Le code donné fait déjà ce travail.
À partir d'une 2e vidéo d'une personne source, l'objectif est de faire effectuer les mouvements de la personne source à la personne cible. Ceci se fait en produisant une nouvelle vidéo, image par image de la personne cible avec la pose/squelette extrait de la vidéo source. Pour extraire le squelette des vidéos, nous utilisons un réseau pré-entraîné avec la bibliothèque [Mediapipe](https://mediapipe-studio.webapps.google.com/studio/demo/pose_landmarker). Le code donné fait déjà ce travail.
Le modèle de machine learning doit apprendre à partir des images de la vidéo comment produire une nouvelle image de cette personne dans une nouvelle posture donné en paramètre. Si la vidéo de cette personne est suffisament riche, et contient toutes les postures possibles, on pourrait simplement rechercher l'image dont le squelette est "similaire" (question 1). Ensuite, on va plutôt chercher à avoir un réseau qui va généraliser. Il sera capable de produire une image, même avec une posture qui n'a jamais vraiment été vue. Nous allons essayer un réseau direct, puis un GAN.
Le modèle de machine learning doit apprendre à partir des images de la vidéo comment produire une nouvelle image de cette personne dans une nouvelle posture donnée en paramètre. Si la vidéo de cette personne est suffisamment riche, et contient toutes les postures possibles, on pourrait simplement rechercher l'image dont le squelette est "similaire" (question 1). Ensuite, on va plutôt chercher à avoir un réseau qui va généraliser. Il sera capable de produire une image, même avec une posture qui n'a jamais vraiment été vue. Nous allons essayer un réseau direct, puis un GAN.
## Le code de départ
Dans la classe `VideoSkeleton` le coeur du problème est la fonction
Dans la classe `VideoSkeleton` le cœur du problème est la fonction
``` def generator(self, ske): ```
qui renvoie l'image de la personne cible avec comme posture le squelette `ske` recu en paramètre.
......@@ -28,4 +28,3 @@ qui renvoie l'image de la personne cible avec comme posture le squelette `ske` r
## GAN
......@@ -35,5 +35,6 @@ description: "Partie A. Meyer"
## Les TP
1. [Installation](tp_installation)
2. [Partie Classification](tp_classification) (si vous maitrisé déjà la classification, CNN, passez à la question suivante)
3. [Partie transfert de style](tp_style)
3. [Partie transfert de style entre images](tp_style)
4. [Partie transfert de geste et génération d'images de personne](tp_dance)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment