Es fühlt sich an wie ein Sud, aber ich werde ein Modell der automatischen Generation von Pokemon lernen. Wenn Sie es nachschlagen, haben einige Leute es bereits versucht, basierend auf dem neuesten Modell, StyleGAN2. Der eigentliche Code, der Datensatz und die Implementierung wurden jedoch nicht veröffentlicht, daher möchte ich dies in einem Artikel zusammenfassen.
StyleGAN2 ist ein von NVIDIA angekündigtes Bilderzeugungsmodell. Es handelt sich um ein Generationsmodell, das durch die Verwendung der Stilkonvertierung gekennzeichnet ist. Es ist ein leistungsstarkes Modell, das derzeit SOTA für mehrere Aufgaben ist.
Offizielle Implementierung von StyleGAN2 Trends bei den Methoden zur Bilderzeugung
Als ich untersuchte, ob es einen guten Datensatz gab, gab es eine Person, die 15.000 Daten im Voraus sammelte und öffentlich machte, also habe ich diese verwendet. MonsterGAN
Außerdem Kaggles Pokemon-Image-Dataset und [One-Shot-Pokemon-Images](https: // www. kaggle.com/aaronyin/oneshotpokemon) ist ebenfalls ein Kandidat. One-Shot-Pokemon-Images enthält einen Pokemon-Kartendatensatz, der eine sehr große Datenmenge enthält. [Pokemon-Kartengenerierungsaufgabe](https://devopstar.com/2019/05/21/ Es scheint, dass es auf stylegan-pokemon-card-generator angewendet wird).
Es scheint, dass Michael Friese begeistert versucht, Pokemon mit StyleGAN / StyleGAN2 zu generieren. Es scheint, dass StyleGAN bereits ein ziemlich gutes Ergebnis hinterlassen hat.
Wenn das Transferlernen von einem trainierten Modell wie einer Katze oder einem Pferd durchgeführt wird, funktioniert das Lernen selbst gut und das erzeugte Bild scheint die Atmosphäre der Domäne vor dem Transfer widerzuspiegeln. Es ist wirklich emo.
Transfer vom Pferd
Transfer von Katze
Transfer vom Auto
Das Generierungsergebnis mit StyleGAN2 wurde erst zur Hälfte veröffentlicht. Dies ist das Ergebnis des Lernens von bis zu 540 kg. Da ich gerade lerne, habe ich das Gefühl, dass es ziemlich viele Variationen gibt, abgesehen von der Qualität.
Ich bin noch im Lernprozess, aber ich werde Ihnen den Fortschritt des Lernens mit StyleGAN2 zeigen. Da wir mit RTX1070 trainieren, ist ein unordentliches Modell aufgrund der Speichergröße nicht möglich. Dieses Mal habe ich die Größe aller Datensätze auf 64 x 64 geändert.
Modellübersicht
G Params OutputShape WeightShape
--- --- --- ---
latents_in - (?, 512) -
labels_in - (?, 0) -
lod - () -
dlatent_avg - (512,) -
G_mapping/latents_in - (?, 512) -
G_mapping/labels_in - (?, 0) -
G_mapping/Normalize - (?, 512) -
G_mapping/Dense0 262656 (?, 512) (512, 512)
G_mapping/Dense1 262656 (?, 512) (512, 512)
G_mapping/Dense2 262656 (?, 512) (512, 512)
G_mapping/Dense3 262656 (?, 512) (512, 512)
G_mapping/Dense4 262656 (?, 512) (512, 512)
G_mapping/Dense5 262656 (?, 512) (512, 512)
G_mapping/Dense6 262656 (?, 512) (512, 512)
G_mapping/Dense7 262656 (?, 512) (512, 512)
G_mapping/Broadcast - (?, 10, 512) -
G_mapping/dlatents_out - (?, 10, 512) -
Truncation/Lerp - (?, 10, 512) -
G_synthesis/dlatents_in - (?, 10, 512) -
G_synthesis/4x4/Const 8192 (?, 512, 4, 4) (1, 512, 4, 4)
G_synthesis/4x4/Conv 2622465 (?, 512, 4, 4) (3, 3, 512, 512)
G_synthesis/4x4/ToRGB 264195 (?, 3, 4, 4) (1, 1, 512, 3)
G_synthesis/8x8/Conv0_up 2622465 (?, 512, 8, 8) (3, 3, 512, 512)
G_synthesis/8x8/Conv1 2622465 (?, 512, 8, 8) (3, 3, 512, 512)
G_synthesis/8x8/Upsample - (?, 3, 8, 8) -
G_synthesis/8x8/ToRGB 264195 (?, 3, 8, 8) (1, 1, 512, 3)
G_synthesis/16x16/Conv0_up 2622465 (?, 512, 16, 16) (3, 3, 512, 512)
G_synthesis/16x16/Conv1 2622465 (?, 512, 16, 16) (3, 3, 512, 512)
G_synthesis/16x16/Upsample - (?, 3, 16, 16) -
G_synthesis/16x16/ToRGB 264195 (?, 3, 16, 16) (1, 1, 512, 3)
G_synthesis/32x32/Conv0_up 2622465 (?, 512, 32, 32) (3, 3, 512, 512)
G_synthesis/32x32/Conv1 2622465 (?, 512, 32, 32) (3, 3, 512, 512)
G_synthesis/32x32/Upsample - (?, 3, 32, 32) -
G_synthesis/32x32/ToRGB 264195 (?, 3, 32, 32) (1, 1, 512, 3)
G_synthesis/64x64/Conv0_up 2622465 (?, 512, 64, 64) (3, 3, 512, 512)
G_synthesis/64x64/Conv1 2622465 (?, 512, 64, 64) (3, 3, 512, 512)
G_synthesis/64x64/Upsample - (?, 3, 64, 64) -
G_synthesis/64x64/ToRGB 264195 (?, 3, 64, 64) (1, 1, 512, 3)
G_synthesis/images_out - (?, 3, 64, 64) -
G_synthesis/noise0 - (1, 1, 4, 4) -
G_synthesis/noise1 - (1, 1, 8, 8) -
G_synthesis/noise2 - (1, 1, 8, 8) -
G_synthesis/noise3 - (1, 1, 16, 16) -
G_synthesis/noise4 - (1, 1, 16, 16) -
G_synthesis/noise5 - (1, 1, 32, 32) -
G_synthesis/noise6 - (1, 1, 32, 32) -
G_synthesis/noise7 - (1, 1, 64, 64) -
G_synthesis/noise8 - (1, 1, 64, 64) -
images_out - (?, 3, 64, 64) -
--- --- --- ---
Total 27032600
D Params OutputShape WeightShape
--- --- --- ---
images_in - (?, 3, 64, 64) -
labels_in - (?, 0) -
64x64/FromRGB 2048 (?, 512, 64, 64) (1, 1, 3, 512)
64x64/Conv0 2359808 (?, 512, 64, 64) (3, 3, 512, 512)
64x64/Conv1_down 2359808 (?, 512, 32, 32) (3, 3, 512, 512)
64x64/Skip 262144 (?, 512, 32, 32) (1, 1, 512, 512)
32x32/Conv0 2359808 (?, 512, 32, 32) (3, 3, 512, 512)
32x32/Conv1_down 2359808 (?, 512, 16, 16) (3, 3, 512, 512)
32x32/Skip 262144 (?, 512, 16, 16) (1, 1, 512, 512)
16x16/Conv0 2359808 (?, 512, 16, 16) (3, 3, 512, 512)
16x16/Conv1_down 2359808 (?, 512, 8, 8) (3, 3, 512, 512)
16x16/Skip 262144 (?, 512, 8, 8) (1, 1, 512, 512)
8x8/Conv0 2359808 (?, 512, 8, 8) (3, 3, 512, 512)
8x8/Conv1_down 2359808 (?, 512, 4, 4) (3, 3, 512, 512)
8x8/Skip 262144 (?, 512, 4, 4) (1, 1, 512, 512)
4x4/MinibatchStddev - (?, 513, 4, 4) -
4x4/Conv 2364416 (?, 512, 4, 4) (3, 3, 513, 512)
4x4/Dense0 4194816 (?, 512) (8192, 512)
Output 513 (?, 1) (512, 1)
scores_out - (?, 1) -
--- --- --- ---
Total 26488833
Es tut mir leid, dass ich vergessen habe, die Rastereinstellungen von Snapshot zu ändern, und es ist durcheinander. .. .. Es ist schwer zu lernen, deshalb habe ich es nicht noch einmal versucht.
Beispiel für einen Datensatz (reals.png)
Generierungsergebnis (288 kimg: 19 Stunden) Die Konturen wurden nach und nach gebildet, und der Umriss des Pokémon, der wie ein Mensch oder ein Tier aussieht, wurde erstellt.
Frechet Inception Distance (FID) wird ausgegeben, um zu überwachen, ob das Lernen ordnungsgemäß verläuft. Bisher läuft es gut. Die offizielle Seite sagt, dass die FID eine einstellige Zahl ist, aber es ist zu teuer, so viel zu lernen, dass ich aufhören werde zu lernen, wenn das erzeugte Bild mit meinen eigenen Augen gut aussieht.
network-snapshot- time 19m 34s fid50k 278.0748
network-snapshot- time 19m 34s fid50k 382.7474
network-snapshot- time 19m 34s fid50k 338.3625
network-snapshot- time 19m 24s fid50k 378.2344
network-snapshot- time 19m 33s fid50k 306.3552
network-snapshot- time 19m 33s fid50k 173.8370
network-snapshot- time 19m 30s fid50k 112.3612
network-snapshot- time 19m 31s fid50k 99.9480
network-snapshot- time 19m 35s fid50k 90.2591
network-snapshot- time 19m 38s fid50k 75.5776
network-snapshot- time 19m 39s fid50k 67.8876
network-snapshot- time 19m 39s fid50k 66.0221
network-snapshot- time 19m 46s fid50k 63.2856
network-snapshot- time 19m 40s fid50k 64.6719
network-snapshot- time 19m 31s fid50k 64.2135
network-snapshot- time 19m 39s fid50k 63.6304
network-snapshot- time 19m 42s fid50k 60.5562
network-snapshot- time 19m 36s fid50k 59.4038
network-snapshot- time 19m 36s fid50k 57.2236
Dieses Mal untersuchte ich den Datensatz und die Präzedenzfälle und schrieb bis zu dem Punkt, an dem ich tatsächlich mit dem Lernen fortfuhr. Der Code, der in meiner Umgebung funktioniert hat, und das generierte Ergebnis nach mehr Lernen werden zu einem späteren Zeitpunkt im zweiten Teil des Artikels zusammengefasst.
Teil 2 → Erstellen eines unbekannten Pokémon mit StyleGAN2 [Teil 2]
640kimg Eine einzigartige und ähnliche Sache wurde geboren
Als das Lernen so weit fortgeschritten war, lief ich auf dem Laufwerk C, sodass die Datenkapazität unzureichend wurde und das Modell leer gespeichert wurde und verschwand ... Denken Sie darüber nach, verschieben Sie es auf Kosten der Lesegeschwindigkeit auf die hinzugefügte Festplatte und führen Sie es erneut aus. Es ist zu schmerzhaft ... die Ergebnisse von zwei Tagen Lernen ...
Es tut mir leid, dass ich an nichts gedacht habe, aber es tut mir leid für diejenigen, die mit mir sympathisieren ...
Beim Speichern des Modells war ich besorgt über die Kapazität und habe jedes Mal nur die neueste überschrieben, aber das schlug fehl. Ich werde das Modell sorgfältig auf der Festplatte speichern.
Recommended Posts