L’IA générative, et si on générait des fleurs de lotus ?

Dans cet article, j'explore le potentiel des réseaux génératifs dans le domaine de l'intelligence artificielle, soulignant leur capacité à créer de nouvelles données . Contrairement aux modèles d'IA traditionnels qui catégorisent ou prédisent, les réseaux génératifs "apprennent" à générer. Je montre un exemple de la création d'images de fleurs de lotus. J'approfondis également les Réseaux Génératifs Adversariaux (GANs) et leurs variantes, les WGANs, en expliquant leur fonctionnement et leurs avantages. découvrez mes résultats d'expériences.

Les Réseaux Génératifs

Dans le vaste monde de l’intelligence artificielle, les réseaux génératifs ont révolutionné notre façon de créer. Imaginez une machine capable de peindre des tableaux, de composer de la musique, de concevoir des vêtements, ou même d’inventer de nouvelles saveurs de boissons. Les réseaux génératifs ouvrent une porte vers ces possibilités.

L’Essence des Réseaux Génératifs

À la base, un réseau génératif est une forme avancée d’apprentissage automatique qui s’efforce de reproduire des données. Contrairement aux modèles classiques qui apprennent à catégoriser ou à prédire, les réseaux génératifs apprennent à générer. Ils étudient en profondeur les données dont ils disposent, comprennent leurs nuances, leurs motifs et leurs structures, puis essaient de produire des données nouvelles mais similaires.

Dans cet article nous allons étudier un modèle génératif en profondeur et je vous partagerai le modèle et mes propres résultats. Mais avant de commencer quelques explications.

Qu’est-ce qu’un Réseau Génératif ?

Un réseau génératif est une sorte de réseau neuronal artificiel conçu pour créer de nouvelles données qui ressemblent à certaines données d’entrée. Prenons un exemple simple : si nous alimentons un réseau génératif avec des milliers d’images de fleurs de lotus, il peut « apprendre » les caractéristiques typiques d’une fleur de lotus et, à la fin, générer des images de fleurs de lotus qui n’ont jamais existé auparavant.

Un robot peintre
Le générateur tente d’apprendre à dessiner une fleur de lotus
Les fleurs générées sont inspirées des images observées par le générateur

Les Réseaux Génératifs Adversariaux (GANs)

Avant de plonger dans le vif du sujet, il est essentiel de comprendre les GANs. Un GAN se compose de deux réseaux : le Générateur et le Discriminateur. Le générateur crée des images, tandis que le discriminateur essaie de distinguer les images générées des images réelles.

C’est une sorte de jeu entre un détective et un faussaire où le générateur tente de produire des faux toujours plus convaincants, et le discriminateur s’efforce de devenir meilleur détective.

Le discriminateur apprend à différencier les vraies des fausses images de lotus.


Cette étape s’appelle, l’entrainement. Une fois que nous considérons l’entrainement terminé, il est temps d’observer les productions du générateur.

Les Limitations des GANs

Bien que les GANs soient puissants, ils ne sont pas parfaits. Ils peuvent être instables durant l’entrainement, produisant des résultats indésirables ou se concentrant trop sur certaines caractéristiques au détriment d’autres.

Lors de mes tests avec les GANs, les modèles s’effondrent régulièrement et ne génèrent plus que des images extrêmement saturés où alors souvent la même on dit qu’il rentre en « mode Collapse ». Heureusement il y a des solutions.

WGAN : Une Amélioration

Une première amélioration est de modifier le rôle du discriminateur, il devient critique.

Les GANs Wasserstein, ou WGANs, sont une solution à certains des problèmes des GANs traditionnels. Au lieu d’utiliser la probabilité que l’image soit réelle ou fausse comme mesure de performance, les WGANs mesurent la distance entre la distribution des images générées et celle des images réelles. Cette mesure est plus stable et offre des avantages en termes de convergence et de qualité de génération.

Le distance de Wasserstein: Au lieu d’utiliser la divergence de Jensen-Shannon (comme dans les GANs traditionnels) pour mesurer la différence entre les distributions réelles et générées, les WGANs utilisent la distance de Wasserstein (également appelée distance de transport optimal de premier ordre). Cette distance donne une mesure plus significative de la différence entre deux distributions, même lorsque les supports des deux distributions ne se chevauchent pas.

WGAN-GP : Une belle avancée pour les GANs

Le WGAN-GP ajoute une « Pénalité de Gradient » au WGAN. Cela garantit que le discriminateur (appelé critique dans le WGAN) reste « lisse » dans l’espace des images. Cette lissité est cruciale pour que le signal du discriminateur au générateur soit utile et stable. La pénalité de gradient empêche le discriminateur de devenir trop confiant, ce qui pourrait provoquer des instabilités.

La méthode de pénalisation du gradient pour les WGANs a été introduite dans le papier « Improved Training of Wasserstein GANs » par Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin et Aaron Courville. Ce papier a été publié en 2017.

A quoi ressemble mon réseau WGAN-GP

Je vais ajouter quelques éléments de contexte et des tailles techniques pour vous expliquer mes tests. Vous pouvez évidement les ignorer si ce n’est pas votre domaine.

Mon objectif est d’apprendre au générateur de produire des fleurs de lotus

Pour commencer, j’utilise un simple PC, sans GPU (Je ferai un article sur l’utilité des GPUs dans un prochain article). En raison de cette limitation, la taille du jeu données est très faible (68 images et non des millions) et la définition limitée.

Concernant le jeu de données, j’ai utilisé 68 images générées sur MidJourney. Bien-sur, elles ne sont pas réelles mais me suffisent dans le cadre de l’expérience.

Le programme est en Python, un des langages de prédilections pour les scientifiques de données. En particulier j’utilise la bibliothèque PyTorch pour cet exercice.

Le générateur est un réseau de neurones composés de 5 couches qui font de la transposition de convolutions (ou déconvolution par abus de langage).
Le réseau démarre en produisant un pixel, puis chacune des couches augmente la taille spatiale en réduisant le nombre de dimensions pour finir avec une image de 128*128 pixels. La fonction d’activation non linéaire utilisée sur les couches du réseau est ReLu: f(x)=max(0,x) . La dernière couche utilise la fonction Tanh.
La taille du noyau pour la déconvolution est de 4*4.

Le discriminateur est similaire mais il fait de la convolution. en d’autres terme il va réduire la taille spatiale des images de 128*128 pixels. L’image est aplatie et traitée par une couche entièrement connectée pour produire une valeur unique, qui indique si l’image est réelle ou générée.

Convolution
Convolution au sein du discriminateur.

Les résultats

Après deux bonnes nuits d’apprentissage, le réseau a réalisé près de 3000 epochs (Une epoch étant une série d’entrainements : il parcourt les données d’entrainement et génère des images qu’il évalue )

Voici les résultats obtenus aux différentes étapes de l’entrainement:

epoch 10
Epoch 10
Epoch 100
Epoch 500
Epoch 1500
Epoch 2520
Epoch 2835

Par la suite, la progression est beaucoup moins rapide. Pour mon test, j’ai doublé le nombre d’images analysées par le discriminateur à cette étape. La qualité continue de s’améliorer et les images générées restent variées malgré le faible nombre d’images qui ont été présentées.

Epoch 6514
Epoch 6515
Epoch 6516

En conclusion

Maintenant, je vais laisser la machine s’entrainer afin d’obtenir de meilleurs résultats, on peu constater en effet que le réseau WGAN-GP continue d’apprendre et de s’approcher de l’objectif qui est de dessiner une fleur de lotus.

Pour de meilleurs résultats, il faudrait diversifier le jeu de données, 68 images, ce n’est vraiment pas suffisant. Enfin, l’utilisation d’une machine avec des GPU plutôt qu’un simple CPU serait un plus indéniable pour accélérer les calculs de façon conséquente.

Ici, je me suis consacré uniquement à la génération de fleurs de lotus en raisons des limitations matérielles mais les wgan-gp peuvent accomplir pleins d’autres taches comme le dé-bruitage d’une photo, la colorisation, la génération de visages etc…

Toutefois, ce genre d’outils soulèvent des questions éthiques concernant l’utilisation des œuvres utilisées pour l’apprentissage ou sur les droits des images générées. Pour en savoir plus, lisez l’article : L’Intelligence Artificielle Générative et les Défis du Droit d’Auteur

Comme toujours, si l’article vous a plu ou si vous avez des questions n’hésitez pas à laisser un commentaire pour que je puisse vous répondre ou améliorer l’article.

Partagez votre amour

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *