Skip to content
Snippets Groups Projects
Commit 898aab89 authored by Benyahia Mohammed Oussama's avatar Benyahia Mohammed Oussama
Browse files

Edit README.md

parent 5bb76717
No related branches found
No related tags found
No related merge requests found
# TD 2 : GAN & Diffusion
MSO 3.4 Apprentissage Automatique
## MSO 3.4 Apprentissage Automatique
## Overview
### Overview
Ce projet explore les modèles génératifs pour les images, en mettant l'accent sur les Generative Adversarial Networks (GANs) et les modèles de Diffusion. L'objectif est de comprendre leur implémentation, d'analyser des architectures spécifiques et d'appliquer différentes stratégies d'entraînement pour la génération d'images, avec et sans conditionnement.
## Part 1: DC-GAN
Dans cette partie, nous étudions les bases des Generative Adversarial Networks à travers un DCGAN. Nous nous appuyons sur le tutoriel suivant : [DCGAN Tutorial](https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html).
Nous générons des chiffres manuscrits en utilisant le dataset MNIST disponible dans le package `torchvision` : [MNIST Dataset](https://pytorch.org/vision/stable/generated/torchvision.datasets.MNIST.html#torchvision.datasets.MNIST).
### Modifications Implémentées
- Adaptation du code du tutoriel pour fonctionner avec le dataset MNIST.
- Affichage des courbes de perte du générateur et du discriminateur en fonction des étapes de gradient.
- Comparaison des images générées avec les images du dataset MNIST.
#### Exemples d'images générées :
(Insérer ici des images d'exemples de chiffres générés par le DCGAN)
## Question : Comment contrôler le chiffre généré ?
Pour contrôler quel chiffre le générateur doit produire, nous implémentons un Conditional GAN (cGAN) avec les modifications suivantes :
### Modifications du Générateur
- Au lieu d'utiliser uniquement du bruit aléatoire, nous concaténons un label de classe (one-hot encodé ou intégré) avec le vecteur de bruit.
- Le générateur apprend ainsi à produire des chiffres spécifiques en fonction du label fourni.
### Modifications du Discriminateur
- Plutôt que de seulement distinguer le vrai du faux, le discriminateur est modifié pour classifier les images en chiffres 0-9 ou en images générées (fake).
- Il produit une distribution de probabilité sur 11 classes (10 chiffres + 1 pour les images générées).
### Mise à Jour du Processus d'Entraînement
- Le générateur est entraîné pour tromper le discriminateur tout en générant des images correspondant au label de classe correct.
- Une perte par entropie croisée catégorielle est utilisée pour le discriminateur au lieu d'une perte binaire, puisqu'il effectue une classification multi-classes.
- La fonction de perte encourage le générateur à produire des chiffres bien classifiés.
#### Exemples d'images générées par le cGAN :
(Insérer ici des images d'exemples de chiffres générés conditionnellement)
## Bonus : Implémentation d'un cGAN avec Discriminateur Multi-Class
Pour améliorer la génération d'images et éviter les ambiguïtés entre certains chiffres (ex: 3 vs 7), nous avons mis en place un discriminateur multi-classes qui classifie les images générées en l'une des 10 catégories de chiffres ou comme une image générée.
### Comparaison des Algorithmes
| Modèle | Description | Résultat |
|--------|------------|----------|
| **cGAN** | Le générateur apprend à produire des images conditionnées sur le label de classe. Le discriminateur ne fait que distinguer le vrai du faux. | Peut générer des chiffres réalistes mais parfois ambiguës (ex: confusion entre 3 et 7). |
| **cGAN avec Discriminateur Multi-Class** | Le générateur produit des chiffres conditionnés sur le label, et le discriminateur apprend à classifier les images dans une des 10 catégories de chiffres ou comme fausses. | Améliore la qualité des images générées et réduit l’ambiguïté entre les chiffres. |
#### Exemples d'images générées par le cGAN avec Discriminateur Multi-Class :
(Insérer ici des images d'exemples)
## Conclusion
- Les GANs permettent de générer des chiffres manuscrits réalistes.
- L'ajout d'un conditionnement via un cGAN permet de contrôler le chiffre généré.
- L'utilisation d'un discriminateur multi-classes améliore la différenciation entre les chiffres et réduit les ambiguïtés.
### Références
- [Tutoriel DCGAN](https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html)
- [Dataset MNIST](https://pytorch.org/vision/stable/generated/torchvision.datasets.MNIST.html#torchvision.datasets.MNIST)
This project explores generative models for images, specifically focusing on Generative Adversarial Networks (GANs) and Diffusion models. The goal is to understand their implementation, analyze specific architectures, and apply different training strategies for image generation, both with and without conditioning.
---
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment