[PYTHON] [GAN] Ich sah die Dunkelheit versuchen, die endgültige Entwicklung von Pokemon weiterzuentwickeln

Pokemon Generation Modell

Lassen Sie uns das endgültige Evolutionssystem von Pokemon weiterentwickeln, indem wir das Pokemon-Generierungsmodell mit StyleGAN2 verwenden, das in [Vergangener Artikel] zusammengefasst ist (https://qiita.com/Takuya-Shuto-engineer/items/1e2750905f22a0b07287). Ich denke über das Schlechte nach. Diejenigen, die ich kürzlich implementiert habe, funktionieren oft und ich kam auf die Idee, als ich daran dachte, ein Gott zu werden.

Dieses Mal möchte ich die Geschichte, die die Entwicklung von Pokemon in Frage stellte, als Anwendungsbeispiel vorstellen und die zu verwendende Technologie etwas detaillierter erläutern.

Die spezifische Methode ist wie folgt. Dieses Mal stellte ich die Hypothese auf, dass die Pokémon, die sich auf einer geraden Linie entwickelt haben, in einer Reihe stehen. Pikachu → Raichu →? Ich werde unter der Annahme der Aktualisierung der endgültigen Entwicklung erklären.

--Laden Sie das trainierte StyleGAN2-Modell

evolution.png

Einführung verwandter Forschung

Image2StylyGAN Es ist bekannt, dass gut erlernte und ausdrucksstarke Generierungsmodelle wie PGGAN und StyleGAN neue Gesichter erzeugen, die im Datensatz nicht vorhanden sind. Das Konzept von Image2StyleGAN besteht darin, diese Eigenschaft zu verwenden, um latente Variablen zu schätzen, die beliebige Bilder in einem weiten Raum latenter Variablen erzeugen.

ss01.png

Es gibt zwei mögliche Methoden zum Schätzen der latenten Variablen, die einem bestimmten Bild entspricht.

Ersteres scheint empirisch nicht erfolgreich zu sein, und Image2StyleGAN verwendet die letztere Optimierungsmethode.

Der Wahrnehmungsverlust wird als Verlustfunktion verwendet, und die Ähnlichkeit zwischen Bildern wird als Verlust berechnet, indem die Merkmale verglichen werden, die durch Eingabe von Bildern in das von ImageNet trainierte VGG16-Modell erhalten werden. Durch die Optimierung des sensorischen Verlusts mit Adam ist es möglich, das erzeugte Bild zu finden, das den Wahrnehmungsmerkmalen von VGG16 entspricht. Zhang, 2018 scheint als Wahrnehmungsmodell berühmt zu sein, und ich werde es dieses Mal wieder verwenden.

Wenn Sie nur die Ähnlichkeit zwischen Bildern berechnen möchten, können Sie etwas FaceNet neu lernen, das für diesen Zweck trainiert wird, und Ihr eigenes Modell erstellen. Ich weiß es nicht.

Als Reproduktionsexperiment ersetzte ich das Modell durch ein trainiertes Modell von StyleGAN2 (config-f) und rekonstruierte Premierminister Abe.

shinzo.pngcompare.png

InterFaceGAN In dieser Studie geht es auch um das Verhalten von Bildern im latenten variablen Raum in einem gut trainierten Generationsmodell. Diese Studie legt nahe, dass es für ein bestimmtes Attribut eine separate Superebene im latenten Variablenraum gibt. Wenn die getrennte Hyperebene geschätzt werden kann, können ihre Attribute geändert werden, indem die latente Variable in Richtung ihres Normalenvektors bewegt wird.

ss02.png

Die Methode zur Schätzung der Trennungs-Superebene ist einfach und ziemlich schlammig. Führen Sie die folgenden Schritte aus. Betrachten Sie als Beispiel die Schätzung der Superplane der Brille.

Übrigens, als ich es durch das StyleGAN2-Modell ersetzte und die Attribute im Reproduktionsexperiment änderte, sah es so aus.

Sex gender.png

Alter age.png

Es ist lange her, aber dank dieser Forschung können wir sehen, dass die Trennungs-Superebene des Attributs beim Lernen im latenten variablen Raum gebildet wird. Mit anderen Worten, es scheint, dass die Entwicklung von Pokemon auch in einer bestimmten Dimensionsrichtung ausgedrückt wird. Im Gegensatz zu den Attributen des menschlichen Gesichts gibt es jedoch zu viele Arten von Pokémon, so dass ich denke, dass dies nur für die evolutionäre Linie einer Rasse gilt.

Versuchen

Das diesmal verwendete Modell lernte StyleGAN2 (config-f) mit dem Datensatz von MosnterGAN. Es ist ein Modell. Die Bildgröße beträgt 64 x 64, und für 1120 kimg werden ungefähr 15.000 Bilder gelernt.

Das erzeugte Bild sieht so aus fakes001200.png

Um ehrlich zu sein, ist die Qualität nicht gut, aber ich verwende sie, weil ich denke, dass es möglich ist, mit den im Datensatz enthaltenen Bildern umzugehen. (Da es mit einem FID-Wert von ungefähr 50 stagniert, werde ich hier aufhören)

Bildeinbettung mit Image2StyleGAN

Überprüfen Sie zunächst, ob es latente Variablen gibt, die Pikachu und Raichu reproduzieren können.

Pikachu pikachu_compare.png

Licht Chu raichu_compare.png

Es ist komplett Pachimon ... An diesem Punkt bin ich verzweifelt nach der geringen Ausdruckskraft des Modells, aber ich werde es bis zum Ende versuchen.

Bewegen Sie sich in die Dimensionsrichtung, die zwischen den beiden Punkten vor und nach der Evolution verläuft

Ich versuchte nach und nach eine lineare Komplementation von Pikachu in Richtung der Evolution.

pikachu_interp.png

Es wurden Ergebnisse erhalten, die sich wahrscheinlich um den bösen / elektrischen Typ herum entwickeln. Da die Form allmählich zusammenbricht, denke ich, dass sie den Bereich überschreitet, der im latenten variablen Raum ausgedrückt werden kann. Es ist mangelnde Ausdruckskraft.

Es ist frustrierend, aber seit ich so weit gekommen bin, habe ich verschiedene Dinge ausprobiert.

diguda_interp.png

pikusi_interp.png

Es ist fast wie ein hohes Maß an geistiger Verschmutzung ...

Zusammenfassung

Ich habe versucht, Pokemon mit dem Modell StyleGAN2 Pokemon zu entwickeln, das ich selbst gelernt habe, aber es endete mit einem subtilen Gefühl.

Als Lösung sollten wir erwägen, das Lernmodell zu verbessern. Aufgrund mangelnder Ausdruckskraft ist es möglich, dass die zum Erfassen verschiedener Pokémon erforderliche Datenmenge nicht erreicht wurde. Daher denke ich darüber nach, die Daten zu erweitern und das Gewicht des Datensatzes in Zukunft zu erhöhen.

Ich habe Daten mit unterschiedlichen Farben eingefügt, aber wenn unterschiedliche Farben zulässig sind, ist es meiner Meinung nach in Ordnung, viele Bilder einzufügen, bei denen das gesamte Bild farblich konvertiert wurde. Es war ein Thema, das ich noch einmal versuchen möchte, indem ich die Anzahl der Bilder durch Erweitern der Daten und Lernen auf etwa 50.000 erhöhe!

nuo-.png

Wenn Sie Ratschläge haben, wie diejenigen, die damit vertraut sind, werden wir gerne weinen!

Recommended Posts

[GAN] Ich sah die Dunkelheit versuchen, die endgültige Entwicklung von Pokemon weiterzuentwickeln
Die Geschichte des Versuchs, den Client wieder zu verbinden
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich kann die Uhrenquelle tsc nicht finden! ?? Die Geschichte des Versuchs, einen Kernel-Patch zu schreiben
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Was ich bei der Analyse der Daten des Ingenieurmarktes gesehen habe
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)