Démystifier les DiscoGANs | Vers l'IA

DiscoGANs Network, Génération de sacs correspondants à partir d'images de chaussures et vice-versa

introduction

Discovery GAN (DiscoGAN) est un réseau contradictoire génératif qui génère des images de produits du domaine B à partir de l’image de domaine A. Il transfère les éléments stylistiques d’une image à l’autre, transférant ainsi la texture et la décoration d’un article de mode un autre article de mode tel qu'une paire de chaussures. Ce GAN a de nombreuses applications dans l'industrie du jeu et de la mode et mérite d'être exploré davantage pour le lecteur intéressé.

GAN standard (Goodfellow et al., 2014)GAN avec une perte de reconstructionLe modèle proposé (DiscoGAN) conçu pour découvrir les relations entre deux jeux de données non appariés et non étiquetés

Schéma d’architecture de haut niveau de DiscoGAN

Schéma d’architecture de haut niveau de DiscoGAN

DiscoGAN aura deux générateurs, un pour la cartographie des sacs à main (noté A) aux chaussures (noté B), un autre pour le contraire.

  • Le premier générateur mappe l’image d’entrée du domaine A au domaine B,
  • Le second générateur reconstruit l'image du domaine B au domaine A.
  • Les images générées dans le domaine B ressemblent aux images du domaine A dans leur style et leur motif. Cette relation peut être apprise sans coupler explicitement les images des deux domaines au cours de la formation.
  • DiscoGANs essaie d'apprendre deux fonctions génératrices G (ab) et G (ba). Lorsqu'une image xA passe par le générateur G (ab), elle génère une image xAB, qui a une apparence réaliste dans le domaine B.
  • Lorsque cette image xAB passe par l’autre réseau générateur G (ba), elle doit produire une image xABA qui devrait idéalement être identique à l’image originale xA.
  • Cette relation peut être apprise sans coupler explicitement les images des deux domaines au cours de la formation. Cette fonctionnalité est assez puissante, étant donné que l’appariement d’éléments prend beaucoup de temps.

Mathématiquement, cela peut être représenté comme suit

En ce qui concerne la fonction Generator, la relation suivante devrait être vraie

Il n’est pas possible que les fonctions de générateur G (ab) et G (ba) s’inversent pratiquement, nous devons donc minimiser la perte entre l’image reconstruite et l’image originale. À cette fin, nous pouvons utiliser la régularisation L1 ou L2.

  • La régularisation L1 est la somme de l'erreur absolue pour chaque point de données.
  • La régularisation L2 est la somme de la perte au carré pour chaque point de données.
  • Nous pouvons montrer la fonction de perte de régularisation L2 pour une seule image comme suit.
  • Réduire au minimum la perte normée en L2 ne sera pas suffisant. Nous devons nous assurer que l'image xB créée est réaliste dans le domaine B. Comme si nous cartographions des sacs du domaine A avec des chaussures du domaine B, nous devrions nous assurer que xB ressemble à une chaussure.
  • Un discriminateur Db sur le domaine B détectera xB comme faux si l'image n'est pas suffisamment réaliste en tant que chaussure, cette perte doit être prise en compte.
  • Lors de la formation, les images générées (xAB = G (ab) (xA)) et les images originales (yB) du domaine B seront alimentées en entrée du discriminateur afin qu’il puisse apprendre à classer les images réelles à partir de fausses images.
  • La perte générée par le mappage d'une image xA du domaine A sur une image du domaine B peut être écrite comme indiqué ci-dessous.
  • Et les pertes de reconstruction sous la norme L2 peuvent être écrites comme indiqué ci-dessous.

Le générateur tente de transformer une image xAB en une image réaliste pour le discriminateur.

Le discriminateur essaie de marquer l'image transformée en tant que fausse image. Générateur G (ab) doit donc générer une image xAB de manière à ce que la perte de journal en tant que fausse image soit la plus petite possible.

Si le discriminateur D (b) dans le domaine B identifie 1 pour les images réelles et 0 pour les fausses images. La probabilité qu'une image soit réelle est donnée par D (b) (.).

Ensuite, le générateur essaie de rendre l’image xAB très probable comme étant réelle sous le réseau de discriminateurs. Cela signifie que l’ générateur tente de rendre D (b) (xB) = D (b) (G (ab) (xA)) aussi proche de 1 possible.

En termes de perte de log, le générateur devrait minimiser le log négatif de la probabilité, ce qui nous donne C (D (ab)), comme écrit ci-dessous.

En combinant la fonction ci-dessus, nous pouvons obtenir le coût total du générateur C_GAB du mappage d'une image du domaine A au domaine B.

Le générateur G (ba) mappe les images du domaine B au domaine A. Une image xB du domaine B transformée par le générateur G (ba) en une image xBA et le discriminateur du domaine A est donnée par D (a), puis la fonction de coût associée. avec une telle transformation est donnée par ce qui suit.

La perte de générateur pour toutes les images des deux domaines serait donnée par ce qui suit.

Fonction de coût du discriminateur

Les discriminateurs des deux domaines tentent de discriminer les images réelles des fausses images. Le discriminateur G (b) tente donc de minimiser le coût C_D (b), comme indiqué ci-dessous.

De même, le discriminateur D (a) essaie de minimiser le coût C_DA comme indiqué ci-dessous.

Le coût total du discriminateur est donné par C (d) comme suit.

Similarité entre CycleGAN et DiscoGAN

  • CycleGAN et DiscoGAN sont presque similaires. Il y a un changement dans CycleGANs, il a un hyperparamètre supplémentaire pour ajuster la contribution de la perte de reconstruction / cohérence du cycle dans la fonction de perte globale. Cette flexibilité détermine le poids à attribuer à la perte de reconstruction par rapport à la perte de GAN ou à la perte attribuée au discriminant.
  • Cet hyper-paramètre compense les pertes pour aider le réseau à converger plus rapidement pendant l'entraînement.
  • Le reste de la mise en œuvre d'un CycleGAN est identique à celui des DiscoGAN.

Le cahier jupyter accompagné de ce message est disponible sur Github.

Conclusion

L'une des applications les plus intéressantes de DiscoGAN est le transfert de décoration d'un article de mode tel qu'un sac à un autre article de mode tel qu'une paire de chaussures.

J'espère que cet article vous a aidé à commencer à construire vos propres DiscoGAN. Je pense que cela fournira au moins une bonne explication et une bonne compréhension des DiscoGANs.