Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

README.md

Blame
  • Forked from Dellandrea Emmanuel / MSO_3_4-TD2
    4 commits ahead of the upstream repository.
    README.md 4.71 KiB

    TD 2 : GAN & Diffusion

    MSO 3.4 Apprentissage Automatique

    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.

    Nous générons des chiffres manuscrits en utilisant le dataset MNIST disponible dans le package torchvision : MNIST Dataset.

    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