Dieses Mal habe ich versucht, StarGAN zu implementieren. Grundsätzlich werden wir es basierend auf dem auf github veröffentlichten Code implementieren. Auf dieser Seite erklären und implementieren wir ein Light Paper. Ich möchte es das nächste Mal tun, wenn ich es mit meinem eigenen Datensatz anwende.
Es ist einfach, aber ich werde es anhand der beiden oben genannten Punkte erklären.
Papier: https://arxiv.org/abs/1711.09020
** StarGAN ** ist eine Art generatives Adversarial Netwok (GAN), das die Konvertierung zwischen verschiedenen Domänen ** CycleGAN ** und GAN mit mehrklassigem Klassifizierungslernen ** AC-GAN ermöglicht Es ist eine Kombination von **.
** CycleGAN ** kann nur Domänenkonvertierungen zwischen zwei Domänen durchführen. Um eine Domänenkonvertierung zwischen zwei oder mehr k Domänen zu erreichen, müssen k (k-1) Generatoren trainiert werden. Das ist praktisch möglich, aber nervig. Dieses Bild stammt aus dem Papier, aber wenn k = 4 ist, bedeutet dies, dass 4 * 3 = 12 Generatoren benötigt werden.
Um ein solches Problem zu lösen, hat StarGAN einen Algorithmus eingeführt, der mehrere Domänen mit einem Generator konvertiert. Wenn Sie 5 Domains haben, sehen diese wie im Bild oben aus. Es hat eine Sternform. Deshalb ist es StarGAN. Irgendwie kannst du dein Herz kitzeln.
Es gab eine höfliche Erklärung andere Artikel, also werde ich sie teilen. (Mehr kann ich nicht erklären)
Öffentlicher Code https://github.com/yunjey/StarGAN
Montageumgebung
Klonen Sie git zunächst in ein beliebiges Verzeichnis. Wechseln Sie dann in das Verzeichnis StarGAN /. Dieses Mal werden wir den CelebA-Datensatz und den RaFD-Datensatz herunterladen, die ebenfalls in diesem Artikel verwendet wurden.
$ git clone https://github.com/yunjey/StarGAN.git
$ cd StarGAN/
$ bash download.sh celeba
Der Download ist abgeschlossen.
.
.
.
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
Dieser Datensatz namens CelebA-Datensatz ist hier ) Ist veröffentlicht.
Dieser Datensatz enthält 202.599 Promi-Gesichtsbilder mit einer Größe von 178 x 218 Pixel. Zusätzlich werden jedem Bild 40 Arten von Attributen zugewiesen. Zum Beispiel Black_Hair, Blonde_Hair, Brown_Hair, Male, Young usw. Weitere Informationen finden Sie unter hier.
Das Download-Verzeichnis enthält ein Bild wie das obige und eine txt-Datei namens "list_attr_celeba.txt" mit den Attributen für jedes Bild. Der Inhalt hier ist
[Name des Bildordners] 1 1 -1 1 -1 1 1 ... 1 -1
Es ist geworden. Es gibt 1 oder -1 für die Anzahl der Attribute (40). Wenn es 1 ist, bedeutet dies, dass es das Attribut ist, und wenn es -1 ist, bedeutet dies, dass es nicht das Attribut ist. Beachten Sie, dass dies beim Training mit Ihrem eigenen Datensatz generiert werden muss.
Lassen Sie uns zunächst StarGAN mithilfe des CelebA-Datensatzes lernen.
$ 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
Beschreibt den Befehl.
--mode
: Modus
--dataset
: Zu verwendender Datensatz
--image_size
: Bildgröße
--c_dim
: Anzahl der Attributklassen
--sample_dir
: Ordner, in dem das Sample gespeichert ist
--log_dir
: Ordner zum Speichern von Protokollen
--model_save_dir
: Ordner zum Speichern des Modells
--result_dir
: Ordner zum Speichern der Ergebnisse
--selected_attrs
: Attribut, das Sie lernen möchten
Es ist wie es ist.
Als nächstes werden wir testen.
$ 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
Es ist einfach zu machen.
Als nächstes wollte ich auch RaFD-Daten herunterladen, musste mich aber bewerben. Selbst wenn Sie sich bewerben können, können Sie es möglicherweise auch nicht auf dieser Seite veröffentlichen.
Für diejenigen, die Schwierigkeiten beim Lernen haben, werden wir das gelernte Netzwerk herunterladen.
$ bash download.sh pretrained-celeba-128x128
Das heruntergeladene Modell wird in . / Stargan_celeba_128 / models
gespeichert.
Verwenden Sie als Nächstes den folgenden Befehl, um die Bildkonvertierung mithilfe des trainierten Netzwerks durchzuführen.
$ 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'
Es ist super einfach.
Das konvertierte Bild wird in . / Stargan_celeba_128 / results
gespeichert.
Damit ist eine einfache Implementierung in einem öffentlichen Dataset abgeschlossen.
Das nächste Mal werde ich es auf den von mir vorbereiteten Datensatz anwenden.
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 Ändern! Ändern Sie Ihr Gesicht mit AI: https://qiita.com/uyuutosa/items/5dd9b2b80a9aaca67050
Recommended Posts