Louis-François Bouchard

View Original

⏩ Comment l'IA génère de nouvelles images : les GAN en termes simples

L'architecture du générateur d'un réseau GAN.

Pour générer de nouvelles images, nous utilisons une architecture appelée Generative Adversarial Networks ou Réseaux antagonistes génératifs. Il fonctionne avec un générateur composé d'un encodeur et d'un décodeur et d'un discriminateur. Pour le générateur, l'encodeur et le décodeur sont tous deux des réseaux de neurones convolutifs, mais le décodeur fonctionne à l'envers. Voici comment cela fonctionne : L'encodeur reçoit une image, l'encode en une représentation condensée. Le décodeur utilise cette représentation pour créer une nouvelle image en changeant le style de l'image.

Comment fonctionne le générateur d'un réseau GAN.

Ceci est répété plusieurs fois avec toutes les images que nous avons dans notre ensemble de données d'entraînement afin que l'encodeur et le décodeur apprennent à maximiser les résultats de la tâche que nous voulons réaliser pendant l'entraînement.

Une architecture GAN classique aura un générateur entraîné pour générer l'image et un discriminateur utilisé pour mesurer la qualité des images générées en devinant s'il s'agit d'une image réelle provenant de l'ensemble de données ou d'une fausse image générée par le générateur. Les deux réseaux sont généralement composés de réseaux de neurones convolutifs, dont j'ai parlé dans un article précédent. Comme nous l'avons déjà évoqué, le générateur ressemble à ceci (voir ci-dessous), principalement composé de sous-échantillonnage de l'image en utilisant des convolutions pour l'encoder. Ensuite, il suréchantillonne à nouveau l'image en utilisant des convolutions pour générer une nouvelle version de l'image avec le même style en fonction de l'encodage. Son objectif est de générer des images réalistes.

Le générateur créant de fausses images.

Ensuite, le discriminateur prend l'image générée, ou une image de votre ensemble de données et essaie de déterminer si elle est réelle ou générée, appelée fausse. Ceci est répété plusieurs fois avec toutes les images que nous avons dans notre ensemble de données d'entraînement. Il utilise également un réseau de neurones convolutifs, mais uniquement la partie encodage, car il essaie de prendre une image et de la comprendre.

Le discriminateur essaie de dire si l'image qu'il reçoit est réelle ou fausse.

Les GANs sont un moyen intelligent d'entraîner un modèle génératif (le générateur) en définissant le problème comme un problème avec deux sous-modèles : le modèle générateur que nous entraînons pour générer de nouveaux exemples et le modèle discriminateur qui essaie de classer les exemples comme réels (du domaine visé) ou faux (généré). Les deux modèles sont entraînés ensemble dans un jeu à somme nulle, l’un contre l’autre, jusqu'à ce que le modèle discriminateur soit dupé environ la moitié du temps, ce qui signifie que le modèle générateur génère des exemples plausibles. Dans ce cas, la somme nulle signifie que lorsque le discriminateur identifie avec succès les échantillons réels et faux, aucun changement n'est nécessaire aux paramètres du modèle, mais le générateur est pénalisé par de grandes mises à jour des paramètres du modèle (dans le cas d'une fausse image identifiée comme faux puisque le générateur a échoué dans sa tâche). En variante, lorsque le générateur trompe le discriminateur, aucun changement n'est nécessaire aux paramètres du modèle, mais le discriminateur est pénalisé et ses paramètres de modèle sont mis à jour. L'important est qu'un seul des deux réseaux soit pénalisé à chaque étape. De cette façon, les deux modèles sont améliorés ensemble et le générateur produit des images plus réalistes au fil du temps.

Comme illustré ci-dessus, nous pouvons considérer le générateur comme un faussaire, essayant de faire de la fausse monnaie, et le discriminateur comme étant comme la police, essayant d'autoriser l'argent légitime et d'attraper de la fausse monnaie. Pour réussir à ce jeu, le contrefacteur doit apprendre à rendre l'argent indiscernable de l'argent véritable. Ainsi, le réseau de générateurs doit apprendre à créer des échantillons à partir de la même distribution que les données d'entraînement, afin qu'ils se ressemblent et trompent la police avec de la fausse monnaie.

Une fois la formation terminée, vous pouvez envoyer une image à l'encodeur, et il effectuera le même processus, générant une nouvelle image inédite en fonction de vos besoins. Cela fonctionnera de la même manière, quelle que soit la tâche, qu'il s'agisse de traduire une image d'un visage dans un autre style, comme un “cartoonifificateur”, ou de créer un beau paysage à partir d'un brouillon rapide.

Merci d’avoir lu cet article!

Regardez les vidéos sous-titrées en anglais:

Venez discuter avec nous dans notre communauté Discord: ‘Learn AI Together’ et partagez vos projets, vos articles, vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle et plus encore!

Si vous aimez mon travail et que vous souhaitez rester à jour avec l'IA, vous devez absolument me suivre sur mes autres médias sociaux (LinkedIn, Twitter) et vous abonner à ma newsletter hebdomadaire sur l'IA!

Pour supporter mon travail:

  • La meilleure façon de me soutenir est de souscrire à ma newsletter tel que mentionné précédemment ou de vous abonner à ma chaîne sur YouTube si vous aimez le format vidéo en anglais.

  • Soutenez mon travail financièrement sur Patreon