Cette fois, j'ai essayé d'implémenter StarGAN. Fondamentalement, nous allons l'implémenter en fonction du code publié sur github. Sur cette page, nous expliquerons et implémenterons un papier léger. J'aimerais le faire la prochaine fois que je l'appliquerai en utilisant mon propre ensemble de données.
--À propos de StarGAN Super facile --Implémentation sous Linux
C'est facile, mais je vais l'expliquer en fonction des deux éléments ci-dessus.
Papier: https://arxiv.org/abs/1711.09020
** StarGAN ** est un type de Generative Adversarial Netwok (GAN) qui permet la conversion entre différents domaines ** CycleGAN ** et GAN avec apprentissage de classification multi-classes ** AC-GAN C'est une combinaison de **.
** CycleGAN ** ne peut effectuer de conversion de domaine qu'entre deux domaines. Afin de réaliser une conversion de domaine entre deux ou plusieurs domaines k, k (k-1) générateurs doivent être formés. C'est pratiquement possible, mais ennuyeux. Cette image est tirée du papier, mais si k = 4, cela signifie que 4 * 3 = 12 générateurs sont nécessaires.
Pour résoudre un tel problème, StarGAN a introduit un algorithme qui convertit plusieurs domaines avec un seul générateur. Si vous avez 5 domaines, ils ressembleront à l'image ci-dessus. Il a une forme d'étoile. C'est pourquoi c'est StarGAN. D'une manière ou d'une autre, vous pouvez chatouiller votre cœur.
Il y avait une explication polie autres articles, donc je vais la partager. (Je ne peux plus expliquer)
Code public https://github.com/yunjey/StarGAN
Environnement de montage
Tout d'abord, clonez git dans n'importe quel répertoire.
Puis passez au répertoire StarGAN /
.
Cette fois, nous allons télécharger le jeu de données CelebA et le jeu de données RaFD qui ont également été utilisés dans l'article.
$ git clone https://github.com/yunjey/StarGAN.git
$ cd StarGAN/
$ bash download.sh celeba
Le téléchargement est terminé.
.
.
.
inflating: ./data/celeba/images/072137.jpg
inflating: ./data/celeba/images/027742.jpg
inflating: ./data/celeba/images/188764.jpg
inflating: ./data/celeba/list_attr_celeba.txt
Cet ensemble de données appelé ensemble de données CelebA est ici Est publié.
Cet ensemble de données contient 202 599 images faciales en couleur de célébrités mesurant 178 x 218 pixels. En plus de cela, 40 types d'attributs sont attribués à chaque image. Par exemple, Black_Hair, Blonde_Hair, Brown_Hair, Male, Young, etc. Pour plus d'informations, veuillez consulter ici.
Le répertoire de téléchargement contiendra une image comme celle ci-dessus et un fichier txt appelé list_attr_celeba.txt
avec les attributs de chaque image.
Le contenu ici est
[Nom du dossier d'images] 1 1 -1 1 -1 1 1 ... 1 -1
Il est devenu. Il y a 1 ou -1 pour le nombre d'attributs (40). Quand il vaut 1, cela signifie que c'est l'attribut, et quand il vaut -1, cela signifie que ce n'est pas l'attribut. Gardez à l'esprit que cela doit être généré lors de l'entraînement avec votre propre ensemble de données.
Tout d'abord, apprenons StarGAN à l'aide de l'ensemble de données CelebA.
$ python main.py --mode train --dataset CelebA --image_size 128 --c_dim 5 \
--sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs \
--model_save_dir stargan_celeba/models --result_dir stargan_celeba/results \
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young
Décrit la commande.
--mode
: mode
--dataset
: ensemble de données à utiliser
--image_size
: taille de l'image
--c_dim
: Nombre de classes d'attribut
--sample_dir
: dossier dans lequel l'échantillon est enregistré
--log_dir
: dossier pour enregistrer les journaux
--model_save_dir
: Dossier pour enregistrer le modèle
--result_dir
: dossier pour enregistrer les résultats
--selected_attrs
: attribut que vous voulez apprendre
C'est comme ça.
Ensuite, nous allons tester.
$ python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 \
--sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs \
--model_save_dir stargan_celeba/models --result_dir stargan_celeba/results \
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young
C'est facile à faire.
Ensuite, je voulais également télécharger les données RaFD, mais je devais postuler. Peut-être que même si vous pouvez postuler, vous ne pourrez pas non plus le publier sur cette page.
Pour ceux qui ont du mal à apprendre, nous téléchargerons le réseau appris.
$ bash download.sh pretrained-celeba-128x128
Le modèle téléchargé est enregistré dans . / Stargan_celeba_128 / models
.
Ensuite, utilisez la commande suivante pour effectuer la conversion d'image à l'aide du réseau formé.
$ python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 \
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young \
--model_save_dir='stargan_celeba_128/models' \
--result_dir='stargan_celeba_128/results'
C'est super facile.
L'image convertie est enregistrée dans . / Stargan_celeba_128 / results
.
Ceci complète une implémentation simple sur un ensemble de données public.
La prochaine fois, je l'appliquerai à l'ensemble de données que j'ai préparé.
Papier: https://arxiv.org/pdf/1703.10593.pdf Github:https://github.com/yunjey/StarGAN CelebA:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html 7 Changez! Changez de visage avec l'IA: https://qiita.com/uyuutosa/items/5dd9b2b80a9aaca67050
Recommended Posts