[PYTHON] Versuchen Sie, wav2pix auszuführen, um ein Gesichtsbild aus der Sprache zu generieren (es gibt auch eine animierte Gesichtsgenerierung).

Einführung

Die Welt des Deep Learning, insbesondere der Generative Adversarial Networks (GAN), ist in den letzten Jahren dramatisch gewachsen, und ich denke, dass die Forschung in verschiedenen Bereichen wie Text-zu-Bild, Sprachkonvertierung und Trennung von Tonquellen Fortschritte macht.

In diesem Vortrag werde ich lose über wav2pix schreiben, das aus der Stimme Gesichtsbilder erzeugt.

Paper: WAV2PIX: SPEECH-CONDITIONED FACE GENERATION USING GENERATIVEADVERSARIAL NETWORKS

Grobe Übersicht

無題45.png https://imatge-upc.github.io/wav2pix/

Das vorgeschlagene Modell besteht aus den folgenden drei Modulen.

Ich werde jedes Modul kurz erklären.

Zunächst scheint in Bezug auf den Sprachcodierer der Decodierer des SEGAN (Speech Enhancement Generative Adversarial Network) verwendet zu werden. SEGAN ist ein End-to-End-Modell zur Sprachverbesserung mithilfe von GAN. Ich werde die ausführliche Erklärung weglassen, aber bitte beziehen Sie sich auf diese Demo.

Als nächstes scheinen das Generator-Netzwerk und das Diskriminator-Netzwerk von LSGAN (Least Squares Generative Adversarial Networks) inspiriert zu sein. LSGAN vertiefte sein Verständnis auf dieser Website.

Quick Start Von nun an werden wir die Beispielausführung von wav2pix erklären.

Ausführungsumgebung

Die Umgebung, die ich dieses Mal ausprobiert habe, ist wie folgt. OS: Ubuntu 18.04 LTS CPU: i3-4130 3.40GHz Speicher: 16 GB GPU: GeForce GTX 1660 Ti (6GB)

Docker Version: Docker version 19.03.8

1. Holen und erstellen Sie Dockerfile

imatge-upc / wav2pix beschreibt die Ausführung, aber ich habe meine eigene Docker-Datei für diejenigen erstellt, die Probleme bei der Vorbereitung der Ausführungsumgebung haben. Dieses Mal werde ich also hauptsächlich die Operation mit Docker schreiben.

Lassen Sie uns zuerst die Docker-Datei holen, die ich erstellt habe. ★ Bitte beachten Sie folgende Punkte!

Gastgeber


$ git clone https://github.com/Nahuel-Mk2/docker-wav2pix.git
$ cd docker-wav2pix/
$ docker build . -t docker-wav2pix

Wenn Sie fertig sind, stellen Sie sicher, dass Sie ein Bild haben.

Gastgeber


$ docker images
REPOSITORY          TAG                               IMAGE ID            CREATED             SIZE
docker-wav2pix      latest                            8265bc421f7a        4 hours ago         5.36GB

2. Starten Sie Docker / Train / Test

2.1 Starten Sie Docker

Starten wir Docker.

Gastgeber


$ docker run -it --rm --gpus all --ipc=host docker-wav2pix

2.2. Train Fügen Sie einige Anstrengungen hinzu, bevor Sie mit dem Zug fahren. Überschreiben Sie den erforderlichen Pfad in der Konfigurationsdatei und speichern Sie ihn. ★ Wenn Sie dies nicht tun, wird bei Training und Test zur Laufzeit ein Fehler ausgegeben. Seien Sie also vorsichtig!

Container


$ echo -e "# training pickle files path:\n"\
"train_faces_path: /home/user/wav2pix/pickle/faces/train_pickle.pkl\n"\
"train_audios_path: /home/user/wav2pix/pickle/audios/train_pickle.pkl\n"\
"# inference pickle files path:\n"\
"inference_faces_path: /home/user/wav2pix/pickle/faces/test_pickle.pkl\n"\
"inference_audios_path: /home/user/wav2pix/pickle/audios/test_pickle.pkl" > /home/user/wav2pix/config.yaml

Wenn Sie das oben genannte tun können, lassen Sie uns Train ausführen.

Container


$ cd wav2pix
$ python runtime.py

★ In meiner Umgebung dauerte es ungefähr 3 Stunden, bis der Zug fertig war. Wenn Sie geduldig warten oder die Laufzeit-Epoche wie folgt angeben, endet sie vorzeitig. ★ Sie können den Visdom-Fehler ignorieren.

Container


$ python runtime.py --epochs 100

--epochs: Geben Sie die Anzahl der Epochen an (Standard 200).

2.3. Test Wenn der Zug fertig ist, führen Sie Test aus. Da das trainierte Modell aufgerufen werden muss, muss ein zusätzliches Argument als beim Ausführen von Train geschrieben werden.

Container


$ python runtime.py --pre_trained_disc /home/user/wav2pix/checkpoints/disc_200.pth --pre_trained_gen /home/user/wav2pix/checkpoints/gen_200.pth --inference

--pre_trained_disc: Ausgebildeter Diskriminatorpfad --pre_trained_gen: Ausgebildeter Generatorpfad --inference: Inferenzausführungsflag

Wenn Sie fertig sind, überprüfen Sie das generierte Bild.

Gastgeber


$ docker cp 89c8d43b0765:/home/user/wav2pix/results/ .

★ Wenn Sie die CONTAINER-ID nicht kennen, führen Sie "docker ps" aus, um sie zu überprüfen.

Gastgeber


$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
89c8d43b0765        docker-wav2pix      "/bin/bash"         4 hours ago         Up 4 hours                              vigilant_murdock

3. Aus Audio erzeugtes Bild (Teilauszug)

←: Generiertes Bild Reales Bild: → ←: Generiertes Bild Reales Bild: → jaimealtozano_1550.jpg1550_2.png    jaimealtozano_1600.jpg1560_2.png

javiermuniz_1250.jpg1250_2.png    javiermuniz_1300.jpg1300_2.png

Für die beiden Personen in diesem Beispieldatensatz wurden meiner Meinung nach die generierten Bilder erstellt, die zeigen, dass es sich um relativ Gesichter handelt. Ich habe auch festgestellt, dass ich meine Persönlichkeit bis zu einem gewissen Grad verstehe. In dem Papier wurde jedoch darauf hingewiesen, dass das Bild rau war.

Bonus

Bsp. 1 Erstellen des Datensatzes, der zum Generieren eines animierten Gesichtsbilds erforderlich ist

Von hier aus möchte ich mit dieser wav2pix ein animiertes Gesichtsbild erzeugen. Es gibt jedoch keinen Datensatz, der Audio- und animierte Gesichtsbilder enthält. Sie müssen also Ihre eigenen erstellen. Aus diesem Grund erstellen wir ein VTuber-Dataset (Virtual YouTuber) unter Bezugnahme auf das im Dokument erstellte YouTuber-Dataset.

Die folgende Abbildung zeigt, wie der in diesem Dokument erläuterte Datensatz erstellt wird. Der Ablauf besteht darin, dass das YouTuber-Video für Video und Sprache getrennt verarbeitet und schließlich als Datenpaar erstellt wird. Die Hauptänderung ist nur die Gesichtserkennungskaskadendatei. Die verwendete Kaskadendatei ist hier.

無題50.png

Die Videos, die zum Erstellen der Daten mit den diesmal anvisierten VTubers verwendet werden, sind wie folgt. Für Audio wird der Abschnitt ohne Hintergrundmusik oder SE als Daten verwendet. (Titel weggelassen)

image.png

[Rundfunkunfälle werden so ausgegeben, wie sie sind! ] Vielen Dank für 1 Million Menschen LIVE Lieferung! !! [Live-Übertragung] Wir haben alle über Anime gesprochen!

--Katze image.png Um ein virtueller Youtuber zu werden [Live008]

Bsp. 2 Aus Audio erzeugtes Bild (animiertes Gesicht)

Zuerst werde ich das animierte Gesichtsbild zeigen, das für jede Epoche erzeugt wurde.

Aus jeder Epochennummer ist ersichtlich, dass in Epoche 10 ein ähnliches Gesichtsbild erzeugt wurde, aber mit zunehmender Anzahl spiegelt sich die Individualität deutlich im erzeugten Bild wider. Schauen wir uns nun die folgenden zwei Arten von Vergleichen an, um zu sehen, wie nahe das erzeugte Bild an der Realität liegt.

◆ Vergleich zwischen erzeugtem Bild (epoch200) und real

part1                  part2

←: Generiertes Bild Reales Bild: → ←: Generiertes Bild Reales Bild: → image.pngimage.png    image.pngimage.png image.pngimage.png    image.pngimage.png image.pngimage.png    image.pngimage.png

Aus Teil 1 wurde bestätigt, dass aus jeder VTuber-Stimme ein Bild erzeugt wurde, das die Individualität fest lernen konnte. Ich dachte jedoch, es sollte beachtet werden, dass Teil 2 Bilder erzeugen kann, die sich von den realen unterscheiden.

Zusammenfassung

Dieses Mal erklärte ich wav2pix, das aus der Stimme ein Gesichtsbild erzeugt, und führte ein Beispiel aus. Ich habe auch versucht, ein animiertes Gesichtsbild durch Ändern des Datensatzes zu erzeugen. Was das animierte Gesichtsbild betrifft, konnte ich etwas greifbareres als erwartet erzeugen, daher ist es möglicherweise sinnvoll, die Auflösung in Zukunft zu erhöhen. Ich muss mich auch fragen, ob es in Zukunft möglich ist, Illustrationen aus Audio zu generieren, wenn es verschiedene Gesichtsbilder gibt.

Referenzseite

SPEECH-CONDITIONED FACE GENERATION USING GENERATIVE ADVERSARIAL NETWORKS Ich habe maschinell gelernt, um die Stimmen von Kizunaai und Nekomasu auszutauschen Unable to write to file </torch_18692_1954506624> Docker-Ausführungsreferenz

Recommended Posts

Versuchen Sie, wav2pix auszuführen, um ein Gesichtsbild aus der Sprache zu generieren (es gibt auch eine animierte Gesichtsgenerierung).
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
Erstellen eines Gesichtsbilddatensatzes für maschinelles Lernen (3: Gesichtsbildgenerierung aus Kandidatenbildern Teil 1)
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
Versuchen Sie, mit Talking Head Anime aus einem einzigen Bild zu verschönern [Python-Vorbereitung]
So generieren Sie ein Python-Objekt aus JSON
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.