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
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.
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
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
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
←: Generiertes Bild Reales Bild: → ←: Generiertes Bild Reales Bild: →
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.
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.
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)
[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 Um ein virtueller Youtuber zu werden [Live008]
Zuerst werde ich das animierte Gesichtsbild zeigen, das für jede Epoche erzeugt wurde.
epoch10
epoch50
epoch100
epoch200
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: →
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.
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.
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