SynthÚse et édition d'images contrÎlées à l'aide du nouveau TL-GAN
Exemple de synthÚse contrÎlée dans mon modÚle TL-GAN (GAN transparent en espace latent, réseau génératif-contentif avec espace caché transparent)Tous les codes et les démos en ligne sont disponibles sur
la page du projet .
Nous formons l'ordinateur pour prendre des photos comme décrit
Tùches discriminantes et générativesIl est facile pour une personne de
décrire une image, nous apprenons à le faire dÚs le plus jeune ùge. Dans l'apprentissage automatique, c'est la tùche de la classification / régression
discriminante , c'est-à -dire prédiction des caractéristiques des images d'entrée. Les progrÚs récents des méthodes ML / AI, en particulier dans les modÚles d'apprentissage profond, commencent à exceller dans ces tùches, atteignant ou dépassant parfois les capacités humaines, comme le montrent des tùches telles que la reconnaissance visuelle d'objets (par exemple, d'AlexNet à ResNet selon la classification ImageNet) et la détection / segmentation objets (par exemple, de RCNN à YOLO dans le jeu de données COCO), etc.
Néanmoins, la tùche inverse de
créer des images réalistes à partir de la description est beaucoup plus compliquée et nécessite de nombreuses années de formation en conception graphique. Dans l'apprentissage automatique, il s'agit d'une tùche
générative , qui est beaucoup plus compliquée que les tùches discriminatoires, car le modÚle génératif devrait générer beaucoup plus d'informations (par exemple, une image complÚte à un certain niveau de détail et de variation) sur la base de données initiales plus petites.
Malgré la complexité de la création de telles applications,
les modĂšles gĂ©nĂ©ratifs (avec un certain contrĂŽle) sont extrĂȘmement utiles dans de nombreux cas:
- CrĂ©ation de contenu : imaginez qu'une sociĂ©tĂ© de publicitĂ© crĂ©e automatiquement des images attrayantes qui correspondent au contenu et au style de la page Web oĂč ces images sont insĂ©rĂ©es. Le crĂ©ateur cherche l'inspiration en commandant l'algorithme pour gĂ©nĂ©rer 20 patrons de chaussures associĂ©s aux signes «repos», «été» et «passionné». Le nouveau jeu vous permet de gĂ©nĂ©rer des avatars rĂ©alistes Ă partir d'une simple description.
- Retouche intelligente basée sur le contenu : le photographe modifie l'expression du visage, le nombre de rides et la coiffure de la photo en quelques clics. Un artiste d'un studio hollywoodien convertit les photos prises par une soirée nuageuse, comme si elles avaient été prises par une matinée lumineuse, avec la lumiÚre du soleil sur le cÎté gauche de l'écran.
- Augmentation des données : un développeur de drones peut synthétiser des vidéos réalistes pour un scénario d'accident spécifique afin d'augmenter l'ensemble de données de formation. Une banque peut synthétiser certains types de données de fraude mal présentées dans l'ensemble de données existant afin d'améliorer le systÚme anti-fraude.
Dans cet article, nous parlerons de notre travail récent appelé
Transparent Latent-space GAN (TL-GAN) , qui étend les fonctionnalités des modÚles les plus modernes, offrant une nouvelle interface. Nous travaillons actuellement sur un document qui aura plus de détails techniques.
Présentation des modÚles génératifs
La communautĂ© d'apprentissage en profondeur amĂ©liore rapidement les modĂšles gĂ©nĂ©ratifs. Trois types prometteurs peuvent ĂȘtre distinguĂ©s entre eux:
les modÚles autorégressifs , les
auto-encodeurs variationnels (VAE) et
les rĂ©seaux contradictoires gĂ©nĂ©ratifs (GAN) , illustrĂ©s dans la figure ci-dessous. Si vous ĂȘtes intĂ©ressĂ© par les dĂ©tails, veuillez lire l'excellent
article du blog OpenAI.
Comparaison des réseaux génératifs. Image du cours STAT946F17 à l'Université de Waterlooà l'heure actuelle, les images de la
plus haute qualitĂ© sont gĂ©nĂ©rĂ©es par les rĂ©seaux GAN (photorĂ©alistes et diversifiĂ©s, avec des dĂ©tails convaincants en haute rĂ©solution). Jetez un Ćil au magnifique rĂ©seau pg-GAN (
GAN à croissance progressive ) de Nvidia. Par conséquent, dans cet article, nous nous concentrerons sur les modÚles GAN.
Pg-GAN synthétique généré par Nvidia. Aucune des images n'est liée à la réalité.GAN Model Issue Management
Génération d'images aléatoires et contrÎléesLa version originale de GAN et de nombreux modÚles populaires basés sur elle (tels que
DC-GAN et
pg-GAN ) sont des modĂšles d'enseignement
sans professeur . AprÚs l'entraßnement, le réseau neuronal génératif prend du bruit aléatoire en entrée et crée une image photoréaliste qui se distingue à peine de l'ensemble de données d'apprentissage. Cependant, nous ne pouvons pas contrÎler en plus les fonctionnalités des images générées. Dans la plupart des applications (par exemple, dans les scénarios décrits dans la premiÚre section), les utilisateurs souhaitent créer des motifs avec
des attributs arbitraires (par exemple, l'ùge, la couleur des cheveux, l'expression du visage, etc.) Idéalement, configurez chaque fonction en douceur.
De nombreuses variantes de GAN ont Ă©tĂ© créées pour une telle synthĂšse contrĂŽlĂ©e. Ils peuvent ĂȘtre conditionnellement divisĂ©s en deux types: les rĂ©seaux de transfert de style et les gĂ©nĂ©rateurs conditionnels.
Réseaux de transfert de style
Les réseaux de transfert de style
CycleGAN et
pix2pix sont formés pour transférer une image d'une zone (domaine) à une autre: par exemple, d'un cheval à un zÚbre, d'un croquis à des images en couleur. En conséquence, nous ne pouvons pas changer en douceur un signe spécifique entre deux états discrets (par exemple, ajouter une petite barbe sur le visage). De plus, un réseau est conçu pour un type de transmission, donc dix réseaux neuronaux différents seront nécessaires pour configurer dix fonctions.
Générateurs de conditions
Les générateurs
conditionnels -
GAN conditionnel ,
AC-GAN et Stack-GAN - en cours de formation, Ă©tudient simultanĂ©ment les images et les Ă©tiquettes des objets, ce qui vous permet de gĂ©nĂ©rer des images avec le rĂ©glage des attributs. Lorsque vous souhaitez ajouter de nouvelles fonctionnalitĂ©s au processus de gĂ©nĂ©ration, vous devez recycler l'intĂ©gralitĂ© du modĂšle GAN, ce qui nĂ©cessite d'Ă©normes ressources de calcul et de temps (par exemple, de plusieurs jours Ă plusieurs semaines sur le mĂȘme GPU K80 avec un ensemble idĂ©al d'hyperparamĂštres). De plus, pour terminer la formation, il est nĂ©cessaire de s'appuyer sur un seul ensemble de donnĂ©es contenant toutes les Ă©tiquettes d'objets dĂ©finies par l'utilisateur, et de ne pas utiliser des Ă©tiquettes diffĂ©rentes de plusieurs ensembles de donnĂ©es.
Notre réseau concurrentiel génératif avec un espace caché transparent (
Transparent Latent-space GAN , TL-GAN) utilise une approche différente pour la génération contrÎlée - et résout ces problÚmes. Il offre la possibilité de
configurer de maniÚre transparente une ou plusieurs fonctionnalités à l'aide d'un seul réseau . De plus, vous pouvez ajouter efficacement de nouvelles fonctionnalités personnalisées en moins d'une heure.
TL-GAN: une approche nouvelle et efficace de la synthÚse et de l'édition contrÎlées
Faire de ce mystérieux espace caché transparent
Prenez le modÚle pvGAN de Nvidia, qui génÚre des images photoréalistes haute résolution de visages, comme indiqué dans la section précédente. Toutes les caractéristiques de l'image 1024 à 1024px générée sont déterminées exclusivement par le vecteur de bruit à 512 dimensions dans l'espace caché (en tant que représentation à faible dimension du contenu de l'image). Par conséquent,
si nous comprenons ce qui constitue un espace caché (c'est-à -dire le rendons transparent), nous pouvons alors contrÎler complÚtement le processus de génération .
Motivation TL-GAN: Comprendre l'espace caché pour gérer le processus de générationEn expérimentant avec le réseau pg-GAN pré-formé, j'ai trouvé que l'espace caché a en fait deux bonnes propriétés:
- Il est bien rempli, c'est-à -dire que la plupart des points de l'espace génÚrent des images raisonnables.
- Elle est assez continue, c'est-à -dire que l'interpolation entre deux points dans un espace caché conduit généralement à une transition en douceur des images correspondantes.
L'intuition dit que dans l'espace caché, il y a des directions qui prédisent les attributs dont nous avons besoin (par exemple, un homme / une femme). Si c'est le cas, alors les vecteurs unitaires de ces directions deviendront des axes de contrÎle du processus de génération (visage plus masculin ou plus féminin).
Approche: extension de l'axe des fonctionnalités
Pour trouver ces axes d'attributs dans un espace caché,
nous construisons une connexion entre le vecteur caché et étiquettes de balise utiliser la formation des enseignants par deux
. Maintenant, le problÚme est de savoir comment obtenir ces paires, car les ensembles de données existants ne contiennent que des images
et les étiquettes d'objets correspondantes
.
Façons d'associer un vecteur cachĂ© z Ă une Ă©tiquette de balise yApproches possibles:Une option consiste Ă calculer les vecteurs cachĂ©s correspondants des images Ă partir d'un ensemble de donnĂ©es existant avec des Ă©tiquettes qui nous intĂ©ressent . Cependant, le GAN ne fournit pas un moyen facile de calculer , ce qui rend difficile la mise en Ćuvre de cette idĂ©e.
La deuxiÚme option est de générer des images synthétiques en utilisant un GAN à partir d'un vecteur caché aléatoire comment . Le problÚme est que les images synthétiques ne sont pas balisées, il est donc difficile d'utiliser un ensemble accessible de données balisées.La principale innovation de notre modÚle TL-GAN est la
formation d'un extracteur séparé (classificateur pour étiquettes discrÚtes ou régresseur pour continu) avec le modÚle
en utilisant un ensemble existant de données balisées (
,
), puis lancer un groupe de générateurs GAN formés
avec réseau d'extraction de fonctionnalités
. Cela vous permet de prédire les étiquettes des entités.
images synthétiques
en utilisant un réseau d'extraction d'entités formé (extracteur). Ainsi, à travers des images synthétiques, un lien s'établit entre
et
comment
et
.
Maintenant, nous avons un vecteur caché et des fonctionnalités appariés. Vous pouvez former le modÚle de régresseur
pour ouvrir tout l'axe des entités pour contrÎler le processus de génération d'image.
Figure: L'architecture de notre modÚle TL-GANLa figure ci-dessus montre l'architecture du modÚle TL-GAN, qui comprend cinq étapes:
- L'étude de la distribution . Nous sélectionnons un modÚle GAN bien formé et un réseau génératif. J'ai pris le pg-GAN bien formé (de Nvidia), qui fournit la meilleure génération de visages de qualité.
- Classification . Nous sĂ©lectionnons un modĂšle prĂ©-formĂ© pour extraire des traits (l'extracteur peut ĂȘtre un rĂ©seau neuronal convolutionnel ou d'autres modĂšles de vision par ordinateur) ou nous formons notre propre extracteur Ă l'aide d'un ensemble de donnĂ©es Ă©tiquetĂ©es. J'ai formĂ© un simple rĂ©seau neuronal convolutif Ă l'aide du kit CelebA (plus de 30 000 visages avec 40 balises).
- Génération . Nous créons plusieurs vecteurs cachés aléatoires, passons par le générateur GAN entraßné pour créer des images synthétiques, puis utilisons l'extracteur d'entités entraßné pour générer des entités sur chaque image.
- Corrélation . Nous utilisons le modÚle linéaire généralisé (GLM) pour implémenter la régression entre les vecteurs cachés et les entités. La pente de la droite de régression devient l'axe des traits .
- Recherche . Nous commençons avec un vecteur caché, le déplaçons le long d'un ou plusieurs axes des signes et étudions comment cela affecte la génération d'images.
J'ai grandement optimisé le processus: sur un modÚle GAN pré-formé, l'identification des axes de fonctionnalités
ne prend qu'une heure sur une machine avec un GPU. Ceci est réalisé grùce à plusieurs astuces d'ingénierie, notamment le transfert de la formation, la réduction de la taille des images, la mise en cache préliminaire des images synthétiques, etc.
Résultats
Voyons comment fonctionne cette idée simple.
Déplacement d'un vecteur caché le long des axes des objets
Tout d'abord, j'ai vĂ©rifiĂ© si les axes de fonctionnalitĂ© dĂ©tectĂ©s peuvent ĂȘtre utilisĂ©s pour contrĂŽler la fonctionnalitĂ© correspondante de l'image gĂ©nĂ©rĂ©e. Pour ce faire, crĂ©ez un vecteur alĂ©atoire
dans l'espace caché du GAN et générer une image synthétique
en passant par un réseau génératif
. Ensuite, nous déplaçons le vecteur caché le long d'un axe d'entités
(un vecteur unitaire dans un espace caché, disons, correspondant au sexe du visage) à distance
Ă un nouveau poste
et générer une nouvelle image
. Idéalement, la caractéristique correspondante de la nouvelle image devrait changer dans la direction attendue.
Les résultats du déplacement d'un vecteur le long de plusieurs axes d'attributs (sexe, ùge, etc.) sont présentés ci-dessous. Cela fonctionne étonnamment bien! Vous pouvez
facilement transformer l' image entre un homme / une femme, un jeune / un vieil homme, etc.
Les premiers rĂ©sultats du dĂ©placement d'un vecteur cachĂ© le long d'axes d'entitĂ©s enchevĂȘtrĂ©sDĂ©mĂȘler les axes d'entitĂ©s corrĂ©lĂ©s
Dans les exemples ci-dessus, l'inconvénient de la méthode d'origine est visible, à savoir l'axe confus des attributs. Par exemple, lorsque vous devez réduire les poils du visage, les visages générés deviennent plus féminins, ce qui n'est pas le résultat attendu. Le problÚme est que le sexe et la barbe sont intrinsÚquement
corrélés . Un changement dans un trait entraßne un changement dans un autre. Des choses similaires se sont produites avec d'autres caractéristiques, telles que les cheveux et les cheveux bouclés. Comme le montre la figure ci-dessous, l'axe d'origine de l'attribut "barbe" dans l'espace caché n'est pas perpendiculaire à l'axe "sol".
Pour rĂ©soudre le problĂšme, j'ai utilisĂ© les techniques de l'algĂšbre linĂ©aire simple. En particulier, il a projetĂ© l'axe de la barbe dans une nouvelle direction, orthogonale Ă l'axe du sol, ce qui Ă©limine efficacement leur corrĂ©lation et, ainsi, peut potentiellement dĂ©mĂȘler ces deux signes sur les faces gĂ©nĂ©rĂ©es.
DĂ©mĂȘler les axes d'entitĂ©s corrĂ©lĂ©s avec des techniques d'algĂšbre linĂ©aireJ'ai appliquĂ© cette mĂ©thode Ă la mĂȘme personne. Cette fois, les axes de genre et d'Ăąge sont choisis comme supports, projetant tous les autres axes pour qu'ils deviennent orthogonaux au sexe et Ă l'Ăąge. Les faces sont gĂ©nĂ©rĂ©es en dĂ©plaçant le vecteur cachĂ© le long des axes de fonction nouvellement gĂ©nĂ©rĂ©s (comme illustrĂ© dans la figure ci-dessous). Comme prĂ©vu, les signes comme les coiffures et les barbes n'affectent plus le sol.
AmĂ©lioration du rĂ©sultat du dĂ©placement d'un vecteur cachĂ© le long d'axes d'entitĂ©s non emmĂȘlĂ©sMontage interactif flexible
Pour voir avec quelle flexibilité notre modÚle TL-GAN est capable de contrÎler le processus de génération d'image, j'ai créé une interface graphique interactive avec un changement en douceur des valeurs des objets sur différents axes, comme indiqué ci-dessous.
Montage interactif avec TL-GANEt encore une fois, le modÚle fonctionne étonnamment bien si vous changez l'image le long de l'axe des signes!
Résumé
Ce projet démontre une nouvelle méthode de gestion d'un modÚle génératif sans enseignant, comme le GAN (Generative adversarial network). à l'aide d'un générateur GAN pré-formé (pg-GAN de Nvidia), j'ai rendu transparent son espace caché en montrant les axes des caractéristiques significatives. Lorsqu'un vecteur se déplace le long d'un tel axe dans un espace caché, l'image correspondante est transformée le long de cette fonction, offrant une synthÚse et une édition contrÎlées.
Cette méthode présente des avantages évidents:
- Efficacité: pour ajouter un nouveau tuner de tag pour le générateur, vous n'avez pas besoin de recycler le modÚle GAN, donc l'ajout de tuners pour 40 tags prend moins d'une heure.
- Flexibilité: vous pouvez utiliser n'importe quel extracteur d'entités formé sur n'importe quel ensemble de données, ajoutant plus de fonctionnalités à un GAN bien formé.
Quelques mots sur l'éthique
Ce travail vous permet de contrÎler la génération d'images en détail, mais cela dépend encore largement des caractéristiques de l'ensemble de données. Une formation sur des photos de stars d'Hollywood signifie que le modÚle générera trÚs bien des photos de personnes principalement blanches et attrayantes. Cela conduira au fait que les utilisateurs pourront créer des visages représentant seulement une petite partie de l'humanité. Si vous déployez ce service en tant qu'application réelle, il est conseillé d'étendre l'ensemble de données d'origine pour prendre en compte la diversité de nos utilisateurs.
Bien que l'outil puisse grandement aider dans le processus de création, vous devez vous rappeler des possibilités de l'utiliser à des fins inconvenantes. Si nous créons des visages réalistes de tout type, dans quelle mesure pouvons-nous faire confiance à la personne que nous voyons à l'écran? Aujourd'hui, il est important de discuter de questions de ce type. Comme nous l'avons vu dans des exemples récents de technologie
Deepfake , l'IA progresse rapidement, il est donc vital pour l'humanité d'entamer une discussion sur la meilleure façon de déployer de telles applications.
Démo et code en ligne
Tous les codes et les démos en ligne de ce travail sont disponibles sur
la page GitHub .
Si vous voulez jouer avec le modĂšle dans le navigateur
Vous n'avez pas besoin de télécharger de code, de modÚle ou de données. Suivez simplement les instructions de
cette section Lisez
- moi. Vous pouvez changer les visages dans le navigateur comme indiqué dans la vidéo.
Si vous voulez essayer le code
Accédez simplement à la page Lisez-moi du référentiel GitHub. Code compilé sur Anaconda Python 3.6 avec Tensorflow et Keras.
Si vous souhaitez contribuer
Bienvenue N'hésitez pas à soumettre une demande de pool ou à signaler un problÚme sur GitHub.
Ă propos de moi
J'ai rĂ©cemment obtenu un doctorat en neurobiologie computationnelle et cognitive de l'UniversitĂ© Brown et une maĂźtrise en informatique, avec une spĂ©cialisation en apprentissage automatique. Dans le passĂ©, j'ai Ă©tudiĂ© comment les neurones du cerveau traitent collectivement les informations pour atteindre des fonctions de haut niveau telles que la perception visuelle. J'aime l'approche algorithmique de l'analyse, de la simulation et de la mise en Ćuvre de l'intelligence, ainsi que l'utilisation de l'IA pour rĂ©soudre des problĂšmes complexes du monde rĂ©el. Je suis activement Ă la recherche d'un emploi en tant que chercheur ML / AI dans l'industrie technologique.
Remerciements
Ce travail a été réalisé en trois semaines en tant que projet pour
le programme de bourses InSight AI . Je remercie le directeur du programme
Emmanuel Amaisen et
Matt Rubashkin pour la direction générale, en particulier Emmanuel pour ses suggestions et la rédaction de l'article. Je remercie également tous les employés d'Insight pour l'excellent environnement d'apprentissage et les autres participants au programme Insight AI dont j'ai beaucoup appris.
Un merci spécial à Rubin Xia pour les nombreux conseils et l'inspiration lorsque j'ai décidé dans quelle direction développer le projet, et pour l'énorme aide dans la structuration et l'édition de cet article.