Intelligence artificielle

Cette robe n’existe pas – Vers la science des données

Cette robe n’existe pas - Vers la science des données


Exemples d'images de 4 jours de formation SR StyleGAN

Cet article a été publié à l'origine sur Blog de Shoprunner Engineering n'hésitez pas à y jeter un coup d'œil et à d'autres travaux de nos équipes.

Notre équipe ShopRunner Data Science permet à tous les membres de tenir une semaine de piratage trimestrielle. Il est important que les équipes de science des données continuent à innover. Ainsi, une fois par trimestre, les membres de l’équipe sont autorisés à consacrer une semaine à des projets plus spéculatifs de leur choix. Pour ma semaine de hack Q9 2019, j'ai décidé de construire une série de modèles de générateurs pour tenter de créer de faux produits. Les modèles de générateur sont des modèles couramment formés pour créer des images ou du texte réalistes basés sur des exemples réels. Ce projet peut sembler assez étrange, mais c’est mon idée générale: si nous pouvions créer de puissants modèles de générateurs capables de capturer la diversité de notre catalogue de produits, nous pourrions utiliser ces générateurs pour augmenter les classes de basses fréquences de notre catalogue des projets d'apprentissage tels que la classification taxonomique ou le balisage d'attributs.

Les deux réseaux que j’ai décidé d’utiliser sont le petit modèle à paramètres GPT-2 117M d’OpenAI pour la génération de texte et le StyleGAN de Nvidia pour la génération d’images. J'ai ensuite adapté ces paramètres aux jeux de données internes de ShopRunner. Pour les deux modèles, j’ai trouvé que l’utilisation des implémentations Tensorflow d’origine était le meilleur chemin à suivre car les ports vers d’autres frameworks n’avaient pas les fonctionnalités dont j’avais besoin ou n’étaient pas aussi bien conçus.

Les deux modèles ont été formés sur une carte graphique Nvidia 2080 TI.

En février 2019, OpenAI a annoncé son nouveau modèle de langage, GPT-2. GPT-2 est formé sur 40 Go de texte Internet, mais OpenAI a limité la publication du modèle à des versions beaucoup plus petites en raison de problèmes de comportement malveillant. Une grande partie de la construction de cet ensemble de données de haute qualité prenait reddit de meilleure qualité. A l'état brut, GPT-2 est excellent pour générer un texte à la sonorité réaliste, mais le texte a tendance à tomber dans le dialogue de style reddit ou dans la description de style wikipedia. Donc, pour tirer le meilleur parti de GPT-2 en tant que générateur de produits contrefaits, nous devons l'adapter à notre cas d'utilisation spécifique, dans ce cas.

Le référentiel fourni par nshepperd pour un réglage précis fournit une série de scripts et d’instructions pour un réglage précis. Pour effectuer un réglage précis, nous avons simplement besoin de formater un jeu de données texte pour une utilisation par GPT-2. Pour cela, j’ai fini par écrire des descriptions de produits de 100 Ko sur leur propre ligne dans un fichier .txt avec un fichier spécifique à GPT-2. jeton ajouté à la fin pour que GPT-2 apprenne à mettre fin aux descriptions de produits et, espérons-le, à les structurer de manière plus réaliste.

GPT-2 s'est entraîné assez rapidement, donnant de bons résultats après 15 000 lots / étapes, ce qui a pris quelques heures.

Nous avons peaufiné GPT-2 sur les données ShopRunner pour un pas de 15K, conduisant à ce que nous appelons SR GPT-2. Après un réglage précis, SR GPT-2 est capable de générer des descriptions de produits assez réalistes, notamment des sauts de ligne et un formatage. Celles-ci sont également assez amusantes à lire.

====================================== SAMPLE 1 ======== ================================
WATERDOG | COLLECTION ROSE HALSTON. La veste à capuche en soie mélangée noire de HALSTON est tellement impressionnante que HONG KONG est confectionnée à la main à partir de laine légère provenant de deux pays situés dans les régions de l'Arctic Circle et de l'alimentation hydroélectrique Wye.
- FIT EN LAINE HALSTON, EN LAINE ET JERRY
- Tissu: 90% laine, 10% laine crêpe; 12% viscose, 8% polyester et 5% nylon
- Lavable, nettoyage à sec recommandé
- Importé
SKU: HU18-17FBCTISSU ET SOINSLaver à la machine à l'eau froide avec des couleurs similairesRéchauffer avec du blancLaver à l'eau froide et suspendre pour sécher
====================================== SAMPLE 2 ======== ================================
Robe t-shirt raccourcie en laine et coton avec imprimé floral Boho - Noir Cette robe t-shirt présente un devant imprimé Boho Floral, un ourlet à manches courtes et un ourlet asymétrique à volants. Une pièce en édition limitée de notre capsule New York Fashion Show.
New York Fashion célèbre le 20e anniversaire de sa populaire robe t-shirt en 2011. La robe t-shirt est un corsage ample découpé en crêpe de Chine noir avec une taille ajustée. La robe a un décolleté en V, des manches longues, deux poches fendues devant et une taille drapée.100% soieNettoyage à sec uniquementImportéSI38S-F18Taille et coupeLe mannequin porte une taille 6Dimensions du modèle: Hauteur: 5ft 9in; Poitrine-buste: 33 pouces; Taille: 23,6 pouces; Hanches: 34.5inÀ propos du SI38S-F18Le designer et expert renommé de Sieviast, James Simone, a lancé sa collection polyvalente de prêt-à-porter et d’accessoires pour femmes en 2008. Les vêtements de la marque ont été nommés les pièces maîtresses de la mode de l’année et les lignes deviendront sûrement un été agrafe.

Cependant, en utilisant GPT-2, nous pouvons également générer des exemples basés sur le contexte.

Voici un exemple généré avec le contexte “robe asymétrique rouge sans manches

DétailsCet ajustement asymétrique et évasé est coupé dans une coupe slim. Coupe ajustée et décontractée.- encolure ronde. 
- Sans manches.
- Un centre avant, deux centraux.
- 100% Polyester.
- Lavage en machine.
- Importé.
- Le mannequin mesure 178 cm et un buste de 32 "". Elle porte une taille US 2.

Cet exemple semble assez réaliste et raisonnable. Une des choses qui me plaisait, c’est qu’en plus de générer une description réaliste, c’est que des mots comme «asymétrique" et "Sans manches”Qui ont été utilisés dans la phrase d'entrée apparaissent également dans la description générée.

Sur une note moins sérieuse, parfois avec un contexte moins sonnant à la mode, nous pouvons toujours obtenir une partie de l’ancien entraînement GPT-2 et du saignement de la structure.

Pour le contexte “robe de viande”Inspiré par Lady Gaga

Dans le même contexte, la robe de viande ci-dessous présente deux exemples générés. Lorsque SR GPT-2 génère un échantillon, il prend en compte les mots avec la probabilité la plus élevée de suivre le contexte donné. Cependant, le processus est quelque peu aléatoire, de sorte que les résultats peuvent être obtenus de manière très différente. Le premier exemple génère une description du produit d'aspect assez raisonnable. Le second SR GPT-2 revient un peu dans l’entraînement de type plus de définition de GPT-2


Robe de viande: notre touche italienne, confectionnée dans un tissu en crêpe avec une finition extensible et froissée. Comprend des détails tissés à la main et un motif floral brodé.
- Ceinture ajustable, à enfiler
- Fente latérale
- Ceinture ajustable à la coupe décontractée
- Le tissu a été ramolli en se lavant à la main
- 95% de mélange de rayonne, 5% d'élasthanne; doublure: crêpe de Chine 100% polyester
- lavable
- Importé

robe en gabardine de viande, os et légumes. En l'honneur de l'American Heart Foundation.

Les réseaux d’adversaire génératif (GAN) sont un domaine d’apprentissage approfondi intéressant dans lequel le processus de formation implique deux réseaux, un générateur et un discriminateur. Le modèle de générateur commence à créer des images par lui-même, il part du bruit aléatoire tandis que le discriminateur fournit des informations en examinant les exemples d'apprentissage et la sortie du générateur, et prédit s'ils sont «réels» ou «faux». En temps supplémentaire, ces informations aident le générateur à créer des images plus réalistes.

StyleGAN est un modèle publié par Nvidia vers la fin de 2018. Il s'agit d'une amélioration par rapport à un modèle précédent de Nvidia appelé ProGAN. ProGAN a été formé pour générer des images de haute qualité 1024x1024 en mettant en place un cycle d’entraînement progressif dans lequel il commence à entraîner les images en basse résolution (4x4) et augmente cette résolution au fil du temps en ajoutant des couches supplémentaires. La formation des images basse résolution a permis d’accélérer la formation et d’améliorer la qualité des images finales, les réseaux ayant pu apprendre d’importantes caractéristiques de bas niveau. Cependant, ProGAN a une capacité limitée à contrôler les images générées.

StyleGAN améliore ProGAN en donnant la possibilité de contrôler le «style» des sorties en permettant aux utilisateurs de manipuler les vecteurs d'espace latent d'une image générée. Chaque image générée par StyleGAN est représentée par un vecteur qui existe dans l’espace latent de StyleGAN. Par conséquent, si vous modifiez ce vecteur, vous pouvez ajuster les caractéristiques de l’image dans l’espace latent de StyleGAN pour créer une nouvelle image présentant les caractéristiques souhaitées.

Ceci est juste une brève description de StyleGAN pour plus d’informations, consultez le journal ou d’autres articles sur oNline.

J'ai fini par former SR StyleGAN pendant environ 4 jours et généré environ 2 millions d'images 512x512. En guise de point de départ pour l’initialisation du poids, j’ai utilisé un autre StyleGAN formé par l’animé. J'ai utilisé cet anime StyleGAN comme point de départ car le Nvidia StyleGAN d'origine a été formé pour générer des images 1024x1024, qui sont excellentes, mais qui sont également plus difficiles à utiliser car elles nécessitent davantage de puissance de calcul. L'animé StyleGAN en comparaison a été formé pour générer 512x512 images afin qu'il soit plus facile à gérer.

L'ensemble de données pour SR StyleGAN était d'environ 9 000, principalement des images de produits vestimentaires que j'ai élagués en fonction de quelques critères. Étape 1 Je l’ai fait avec quelques lignes de code, mais les trois dernières étapes étaient manuelles.

  1. Taille: j'ai jeté des images dont la largeur ou la hauteur était inférieure à 300. Si vous laissez des images de qualité médiocre dans le jeu de données, vous obtenez des images générées finales à l'aspect pixelisé.
  2. composition: pour des raisons de simplicité, j'ai essayé de conserver les images où le modèle / produit était situé au centre de l'image
  3. arrière-plan: élimine les arrière-plans trop complexes, car cela signifierait généralement beaucoup d'efforts supplémentaires de la part du modèle pour commencer à les générer correctement.
  4. Suppression des prises de vue autres que le produit: certaines images étaient soit des images vierges réservées, soit un zoom avant sur des prises de vue de motifs / tissus. Laisser de tels clichés dans l'ensemble de données que j'ai trouvé donne à StyleGAN un moyen facile de tricher et de générer des images «réalistes» pour tromper le discriminateur. Cependant, ce n'est pas vraiment le comportement le plus souhaitable, j'ai donc fait de mon mieux pour les supprimer.
Se promener dans l’espace latent de SR StyleGAN

Maintenant que nous avons parcouru certains des détails de la formation de SR StyleGAN, nous pouvons commencer à parler de la façon de générer ces produits à basse fréquence. Dans la vidéo suivante, vous voyez quelques secondes où des combinaisons sont générées, même si cet ensemble de données était principalement habillé. Donc, pour cette semaine de hack, j'ai utilisé des combinaisons comme exemple de classe de basse fréquence.

Cela montre quelques combinaisons

Une méthode rapide pour générer des échantillons supplémentaires de combinaison consiste à générer inconditionnellement un grand nombre d'images SR StyleGAN et à les rechercher pour trouver des exemples de la classe de basse fréquence qui nous tient à cœur.

Voici quelques exemples tirés manuellement de quelques centaines d’images StyleGAN générées. C'est bon? MAIS si nous pouvons déterminer exactement où se trouvent les combinaisons dans l'espace latent de SR StyleGAN, nous pourrons les générer à notre guise.

Chaque image est représentée par un vecteur de caractéristiques dans l’espace latent de SR StyleGAN. Donc, si nous combinons différents vecteurs, nous pourrons commencer à «mélanger les styles». Dans les deux ensembles de vidéos ci-dessous, l'image en haut à droite est mappée sur l'image en bas à gauche. Le mélange obtenu est dans l'image en bas à droite, qui devrait être dominée par les caractéristiques de l'image en haut à droite. Dans les deux vidéos, vous voyez les caractéristiques de l'image en haut à droite se modifier en réponse aux modifications de l'image en bas à gauche.

En haut à droite se mapper sur l'image en bas à gauche. Résultat affiché en bas à droite
En haut à droite, mappée en bas à gauche pour une image synthétisée, la robe en haut à droite ne change que dans la plupart des cas en réponse à la longueur

C’est cool, cela nous permet en quelque sorte de combiner deux images en combinant leurs vecteurs de caractéristiques dans l’espace latent de SR StyleGAN.

Dans la mesure où l'objectif était de générer de faux produits d'aspect réaliste, voici deux exemples d'images générées avec du texte généré de manière contextuelle. À partir de maintenant, le contexte de texte est généré manuellement, mais un projet futur pourrait consister à créer un modèle de sous-titrage ou simplement à utiliser des balises générées par des modèles d'attributs internes et de modèles de taxonomie sur lesquels l'équipe a travaillé. Ces balises générées peuvent être utilisées comme une sorte de substitut pour le titre du produit. Par exemple, les attributs potentiels de la robe suivante pourraient être «robe asymétrique rouge sans manches» et pourraient être intégrés à GPT-2 pour obtenir des descriptions de produit générées de manière contextuelle.

Robe générée par 3SR StyleGAN.

Contexte pour SR GPT-2: robe asymétrique rouge sans manches

DétailsCet ajustement asymétrique et évasé est coupé dans une coupe slim. Coupe ajustée et décontractée.- encolure ronde. 
- Sans manches.
- Un centre avant, deux centraux.
- 100% Polyester.
- Lavage en machine.
- Importé.
- Le mannequin mesure 178 cm et un buste de 32 "". Elle porte une taille US 2.

Un deuxième exemple utilisant une combinaison créée par SR StyleGAN, les étiquettes potentielles étant une «combinaison noire à manches courtes» donnant l’impression d’une description raisonnable ou d’un titre ennuyeux.

Combinaison générée par SR StyleGAN

Contexte SR GPT-2: combinaison noire à manches courtes.

Une silhouette ample et fluide confère une tenue confortable à tout look. Le dos sans boutons comporte un trou de serrure sur la poitrine.Matériel et soinInformations sur le matériau: 100% coton, doublure: 100% viscose, doublure: 100% polyester

Par la suite, j’ai nourri ces deux exemples par le biais de notre service interne de classification de la taxonomie, qui utilise des images et du texte, et a constaté que le service de taxonomie classe correctement les deux images en deux catégories: une «robe de femme» et une «combinaison».

Au cours de cette semaine de hack, j'ai passé beaucoup de temps à former des modèles et à examiner les images générées et les sorties de texte. Je pense toujours que même s’ils sont difficiles à utiliser, ces modèles de style générateur pourraient être potentiellement très utiles pour ajouter une valeur commerciale intéressante. J’ai tout d’abord évoqué des éléments tels que l’augmentation synthétique des données pour les classes de basse fréquence, mais d’autres idées émanant de l’équipe pourraient permettre aux utilisateurs de générer et de manipuler des éléments si nous pouvons trouver le moyen de localiser et de manipuler avec succès différentes caractéristiques de l’espace latent du GAN. Si les utilisateurs peuvent générer des éléments qu'ils souhaitent, nous pouvons effectuer des recherches visuelles plus standard dans notre catalogue, etc.

En ce qui concerne les notes sur les modèles.

GPT-2 semble aller bien et apprend rapidement, mais aussi rapidement sur-équipé… en l'alimentant dans un contexte approprié, il peut générer un texte raisonnable. Ce que nous utilisons comme contexte est vraiment la question. Les pensées seraient un modèle de sous-titrage basé sur une image réelle ou une image GAN. Un moyen plus simple serait simplement de saisir tous les attributs disponibles et les informations de taxonomie sous forme de texte brut et de voir comment cela se passe.

StyleGAN est décemment formé et pour obtenir de meilleurs résultats, il faudrait probablement que je l’entraîne à partir de zéro ou au moins à un stade beaucoup plus précoce de sa formation. J'ai intentionnellement fait démarrer StyleGAN à un point où il générait des images assez volumineuses. tout en utilisant ces poids anime.

Quelque chose que j’ai expérimenté mais n’ai pas eu beaucoup de succès, c’est la cartographie d’images dans et hors de l’espace latent de StyleGAN. L’idée générale est d’utiliser un réseau de pré-entraînement pour apprendre à trouver l’approximation la plus proche d’une image dans l’espace latent de StyleGAN en générant des vecteurs StyleGAN et en comparant la proximité de l’image par rapport à l’original. Si nous pouvons mapper avec succès des éléments dans l’espace latent de StyleGAN, nous pouvons combiner ces vecteurs pour mieux contrôler ce que nous modifions. Par exemple, nous pourrions cartographier un ensemble de combinaisons dans l’espace latent de StyleGAN et les mélanger pour créer de nouveaux échantillons. Une autre étape connexe consiste à rechercher où se trouvent certains attributs ou modèles dans l’espace latent.

Pour une formation complète, Nvidia indique une durée d’entraînement de 42 jours avec un seul processeur graphique. Vous pourriez probablement obtenir de bons résultats en une semaine ou deux d'entrainement puisque d'autres personnes qui ont essayé de s'entraîner à partir de rien rapportent que ces dernières semaines ont vraiment pour but d'obtenir des détails mineurs.

Si je continue sur cette idée de semaine de piratage, de nombreux travaux futurs consisteront probablement à manipuler les sorties SR StyleGAN et à localiser des éléments tels que la longueur de la robe / robe ou des couleurs et des motifs afin de permettre un contrôle plus fin des manipulations différentes. aspects des images générées.

Afficher plus

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.

Articles similaires

Laisser un commentaire

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

Bouton retour en haut de la page
Fermer