[PYTHON] [Einführung in StyleGAN] Ich habe mit "Eine Frau verwandelt sich in Mayuyu" gespielt ♬

Sie können jetzt den Stilvektor des latenten Mapping-Raums Ihres eigenen Bildes lernen. Also spielte ich mit "Eine Frau verwandelt sich in Mayuyu". Dieses Mal war es notwendig, dlib für das Lernen von Selbstbildern zu installieren, und ich konnte es sicher installieren, indem ich der Referenz ① folgte. Als Ergebnis konnte der Stilvektor $ w $ des latenten Raums von Mayuyu erhalten werden, und das folgende Transformationsvideo wurde erstellt. simple_method10_1_dr1024.gif

【Referenz】 ① Wenn Sie mit der Installation von dlib unter Windows nicht weiterkommen

Was ich getan habe

・ Installation von dlib ・ Vorverarbeitung mit align_images.py ・ Mayuyu und Mischen ・ Versuchen Sie "eine Frau verwandelt sich in Augenbrauen"

・ Installation von dlib

StyleGAN erfordert vor dem Lernen eine Bildvorverarbeitung. Der Code in align_images.py enthält die folgende Beschreibung.

Extracts and aligns all faces from images using DLib 
and a function from original FFHQ dataset preparation step
    python align_images.py /raw_images /aligned_images

Dies bedeutet, dass alle Gesichtsbilder in align_images.py vorverarbeitet werden müssen. Und es war schwierig, diese Dlib zu installieren. Wie in Referenz ① oben gezeigt, funktionierte es jedoch mit dem folgenden Verfahren einwandfrei.

・ Vorverarbeitung mit align_images.py

Sie müssen lediglich die Rohdaten in / raw_imges ablegen und den folgenden Befehl ausführen:

python align_images.py /raw_images /aligned_images

Infolgedessen wird das folgende ausgerichtete Bild ausgegeben.

raw_image aligned_image
Größe 250x235 1024x1024
Bild mayuyu250px.jpg mayuyu250px_01.png

In diesem Stadium wird der Gesichtsteil des Bildes ausgeschnitten und auf 1024 x 1024 vergrößert. Unter Verwendung dieses Bildes wird der Stilvektor mayuyu.npy des latenten Mapping-Raums durch den folgenden Befehl gelernt und in latent / gespeichert.

python encode_images.py aligned_images/ generated_images/ latent/

・ Mayuyu und Mischen

Mit dem Stilvektor dieses latenten Raums können Sie wie beim letzten Mal mit verschiedenen Bildern mischen. Siehe unten für den Code. StyleGAN/mayuyu_mix.py Die Änderungen an $ w $ in StyleGAN lauten jedoch wie folgt.

style_ranges=[range(1,18)]+[range(2,18)]+[range(3,18)]+[range(4,18)]+[range(5,18)]+[range(6,18)]

Die Ergebnisse sind wie folgt. mayuyu250px-style-mixing_case5_6.jpg Es ist interessant, dass eine hübsche schöne Frau erscheint, indem sie sich mit einem Mann verabredet. Insgesamt werden Männer unterhalb der Reichweite (4,18) weiblich, und andere Menschen haben allmählich mehr Mayuyu-Nebenmerkmale als das Original. Mit anderen Worten, der Bereich (0,3) übernimmt in Mayuyu eine beträchtliche Anzahl globaler Merkmale.

・ Versuchen Sie "eine Frau verwandelt sich in Augenbrauen"

Am Ende werde ich also versuchen, zu mischen, anstatt auszutauschen. Die Hauptteile des Codes sind: Das Ganze ist unten platziert. StyleGAN/simple_dlatents_mixing2.py

simple_dlatents_mixing2.py


    # Pick latent vector.
    rnd = np.random.RandomState(6) #5
    latents1 = rnd.randn(1, Gs.input_shape[1])
    print(latents1.shape)
    # Generate image.
    dlatents1 = Gs.components.mapping.run(latents1, None) # [seed, layer, component]
    images = Gs.components.synthesis.run(dlatents1, randomize_noise=False, **synthesis_kwargs)

    src_dlatents = np.load('./latent/mayuyu250px_01.npy')
    src_dlatents = src_dlatents.reshape(1,18,512)
    src_images = Gs.components.synthesis.run(src_dlatents, randomize_noise=False, **synthesis_kwargs)
    
    for i in range(1,101,4):
        dlatents = i/100*dlatents1+(1-i/100)*src_dlatents
        # Generate image.
        images = Gs.components.synthesis.run(dlatents, randomize_noise=False, **synthesis_kwargs)
        # Save image.
        os.makedirs(config.result_dir, exist_ok=True)
        png_filename = os.path.join(config.result_dir, 'example{}.png'.format(i))
        PIL.Image.fromarray(images[0], 'RGB').save(png_filename)

Die einzigen Änderungen an diesem Code seit dem letzten Mal sind: Die Form der Eingabedaten src_dlatents wird angepasst.

    src_dlatents = np.load('./latent/mayuyu250px_01.npy')
    src_dlatents = src_dlatents.reshape(1,18,512)

Auf diese Weise wurde das oben gepostete Video erhalten. Vorerst werde ich es unten erneut veröffentlichen. Dieses Video ist ebenfalls umgekehrt, sodass das Video kontinuierlich ist und Sie Mayuyu etwas langsam ansehen können.

1 simple1_.png
simple3_.png simple_method10_1_dr.gif

Das vergrößerte Bild in diesem Video ist übrigens unten angehängt. Aber wissen Sie, welches das echte ist?

1 2 3
example5.png example1.png example9.png

Zusammenfassung

・ Lernte den Stilvektor des abbildenden latenten Raums des eigenen Bildes "Mayuyu" ・ Ich habe versucht, mit dem erhaltenen npy zu mischen ・ Ich habe versucht "eine Frau verwandelt sich in Augenbrauen"

・ Lass uns endlich Anime-Charaktere lernen ・ Machen wir ein bewegendes Video

Recommended Posts

[Einführung in StyleGAN] Ich habe mit "Eine Frau verwandelt sich in Mayuyu" gespielt ♬
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
[Einführung in StyleGAN] Ich habe mit style_mixing "Frau, die die Brille abnimmt" ♬ gespielt
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
[Einführung in sinGAN-Tensorflow] Ich habe mit der hochauflösenden "Challenge Big Imayuyu" ♬ gespielt
[Einführung in Matplotlib] Achsen 3D-Animation: Ich habe mit 3D-Lisaju-Figuren gespielt ♬
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
[Einführung in RasPi4] Ich habe mit "Hiroko / Hiromis giftigem Zungengespräch" gespielt ♪
[Einführung in AWS] Ich habe mit Polly und Transcribe male mit Männer- und Frauenstimmen gespielt
Ich möchte einen DataFrame in MSSQL einfügen
[Einführung in StyleGAN2] Unabhängiges Lernen mit 10 Anime-Gesichtern ♬
Ich möchte ein Spiel mit Python machen
Ich habe mit Diamond gespielt, einem Tool zum Sammeln von Metriken
Ich möchte mit Python in eine Datei schreiben
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Ich habe mit Wordcloud gespielt!
Ich möchte eine Zeichenkette mit Hiragana teilen
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
Ich möchte manuell eine Legende mit matplotlib erstellen
Ich möchte einen Quantencomputer mit Python betreiben
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
Ich möchte eine lokale Variable mit Lambda binden
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
[Markov-Kette] Ich habe versucht, die Zitate in Python einzulesen.
Ich habe versucht, das Problem der Kombinationsoptimierung mit Qiskit zu lösen
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich habe versucht, englische Untertitel mit Udemy gewaltsam ins Japanische zu übersetzen
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Einführung in die nichtlineare Optimierung (I)
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Ein Memorandum beim automatischen Erwerb mit Selen
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
Ich wollte mein Gesichtsfoto in einen Yuyu-Stil umwandeln.
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe ein Skript geschrieben, mit dem Sie mit hoher Geschwindigkeit mit AtCoder beginnen können!
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 1
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Fühlen wir uns wie ein Materialforscher mit Python [Einführung in Pymatgen]
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
[Einführung in Style GAN] Einzigartiges Lernen von Animation mit Ihrer eigenen Maschine ♬
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen