PC & Mobile

Générateur d'images – Dessiner des dessins avec des réseaux contradictoires génératifs

Générateur d'images - Dessiner des dessins avec des réseaux contradictoires génératifs


Puisque nous allons nous occuper des données d'image, nous devons trouver un moyen de les représenter efficacement. Il peut être réalisé avec Réseaux de neurones convolutionnels profonds, ainsi le nom - DCGAN.

Modèle

Dans notre projet, nous allons utiliser une architecture modèle bien testée de Radford et al., 2015, que vous pouvez voir ci-dessous.

Vous pouvez trouver ma mise en œuvre TensorFlow de ce modèle ici dans le discriminateur et Générateur les fonctions.

Comme vous pouvez le voir dans la visualisation ci-dessus. Generator et Discriminator ont presque les mêmes architectures, mais réfléchies. Nous n'approfondirons pas l'aspect CNN de ce sujet, mais si vous êtes plus curieux des aspects sous-jacents, n'hésitez pas à consulter l'article suivant.

Fonctions de perte

Pour que notre discriminateur et notre générateur apprenne au fil du temps, nous devons fournir des fonctions de perte permettant la rétropropagation.

Bien que les déclarations de perte ci-dessus correspondent aux explications théoriques du chapitre précédent, vous remarquerez peut-être deux choses supplémentaires:

  1. Le bruit gaussien ajouté à l’entrée réelle dans ligne 4.
  2. Lissage unilatéral des étiquettes pour les images réelles reconnues par le discriminateur dans ligne 12.

Vous remarquerez que la formation des GAN est notoirement difficile en raison des deux fonctions de perte (pour le générateur et le discriminateur) et trouver un équilibre entre eux est la clé des bons résultats.

Comme il est très courant que le discriminateur devienne trop puissant par rapport au générateur, nous devons parfois affaiblir le discriminateur et nous le faisons avec les modifications ci-dessus. Nous aborderons d’autres techniques permettant d’atteindre l’équilibre ultérieurement.

Optimiseurs

Nous allons optimiser nos modèles avec les optimiseurs Adam suivants.

De la même manière que les déclarations des fonctions de perte, nous pouvons également équilibrer le discriminateur et le générateur avec des vitesses d'apprentissage appropriées.

LR_D = 0.00004
LR_G = 0.0004
BETA1 = 0,5

Comme les hyperparamètres ci-dessus sont très spécifiques à un cas d’utilisation, n’hésitez pas à les modifier, mais souvenez-vous également que les GAN sont très sensibles aux modifications de la vitesse d’apprentissage, aussi réglez-les avec soin.

Entraînement

Enfin, nous pouvons commencer la formation.

La fonction ci-dessus contient un protocole de formation standard en apprentissage automatique. Nous divisons notre ensemble de données en lots d'une taille spécifique et effectuons un entraînement pour un nombre donné d'époques.

La partie de formation de base est en lignes 20-23 où nous formons discriminateur et générateur. Comme pour les fonctions de perte et les vitesses d’apprentissage, c’est aussi un lieu possible pour équilibrer le discriminateur et le générateur. Certains chercheurs ont constaté que la modification du rapport entre les cycles de formation discriminant et générateur pouvait bénéficier aux résultats. Dans mon cas, le ratio 1: 1 donnait les meilleurs résultats, mais n'hésitez pas à jouer avec.

De plus, j’ai utilisé les hyperparamètres suivants, mais ils ne sont pas gravés dans la pierre, n’hésitez pas à les modifier.

IMAGE_SIZE = 128
NOISE_SIZE = 100
BATCH_SIZE = 64
EPOCHS = 300

Il est très important de surveiller régulièrement les fonctions de perte du modèle et ses performances. Je recommande de le faire à chaque époque, comme dans l'extrait de code ci-dessus. Voyons quelques exemples générés pendant la formation.

Nous pouvons clairement voir que notre modèle s’améliore et apprend à générer des Simpsons plus réalistes.

Concentrons-nous sur le personnage principal, l’homme de la maison, Homer Simpson.

Homer Simpson évolue avec le temps

Résultats finaux

En fin de compte, après 300 périodes d’entraînement qui ont duré environ 8 heures sur NVIDIA P100 (Google Cloud), nous pouvons constater que nos Simpsons générés artificiellement ont réellement commencé à ressembler aux vrais! Jetez un coup d'œil aux échantillons suivants sélectionnés.

Comme on pouvait s'y attendre, il y avait aussi quelques visages mal formés.

Et après?

Si la génération d’images GAN s’est avérée très fructueuse, ce n’est pas la seule application possible des réseaux d’adversaire génératif. Par exemple, jetez un coup d’œil à la traduction image à image suivante avec CycleGAN.

(source: https://junyanz.github.io/CycleGAN/)

Incroyable, non?

Je vous encourage à aller plus loin dans le domaine des GAN, car il reste encore beaucoup à explorer!

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

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

Close
Close