[PYTHON] [Einführung in StyleGAN2] Unabhängiges Lernen mit 10 Anime-Gesichtern ♬

Nach StyleGAN habe ich auch versucht, Anime-Gesichter in StyleGAN2 zu lernen. Zusammenfassend konnte ich config-a lernen, aber config-b bis config-f befinden sich nicht in einer guten Umgebung. Das heißt, ich habe den Code fast gesehen, also werde ich ihn einmal zusammenfassen. Besonders dieses Mal habe ich versucht zu lernen, wie viel mit nur 10 Anime-Gesichtern. 【Referenz】 ①NVlabs/stylegan2So lernen Sie Ihr eigenes Modell mit stylegan2

Was ich getan habe

·Umgebung ・ Lerne mit 10 Anime-Gesichtern ・ Versuchen Sie auszugeben ・ Ausgabebild und Originalbild

·Umgebung

Die Umgebung von StyleGAN2 ist wie folgt

Requirements
- Sowohl Linux als auch Windows werden unterstützt. 
・ Linux wird aus Gründen der Leistung und Kompatibilität empfohlen.
・ 64-bit Python 3.6 installation. We recommend Anaconda3 with numpy 1.14.3 or newer.
・ TensorFlow 1.14 or 1.15 with GPU support. The code does not support TensorFlow 2.0.
・ Unter Windows, you need to use TensorFlow 1.14 — TensorFlow 1.15 will not work.
・ Ein oder mehrere hoch-end NVIDIA GPUs, NVIDIA drivers, CUDA 10.0 toolkit and cuDNN 7.5.・ Zur Reproduktion der im Papier angegebenen Ergebnisse, 
     you need an NVIDIA GPU with at least 16 GB of DRAM.
・ Docker-Benutzer: use the provided Dockerfile to build an image with the required library dependencies.

・ StyleGAN2 basiert auf benutzerdefinierten TensorFlow-Operationen, die mithilfe von NVCC im laufenden Betrieb kompiliert werden. 
To test that your NVCC installation is working correctly, run:
nvcc test_nvcc.cu -o test_nvcc -run
| CPU says hello.
| GPU says hello.
・ Unter Windows, the compilation requires Microsoft Visual Studio to be in PATH. 
We recommend installing Visual Studio Community Edition and adding into PATH 
using "C:\Program Files (x86)\Microsoft
VisualStudio\2019\Community\VC\Auxiliary\Build\vcvars64.bat".

Als ich jedoch dachte, es sei fertig, mit Ausnahme von config -a, wurde es mit dem folgenden Fehler gestoppt.

 File "C:\Users\user\Anaconda3\envs\keras-gpu\lib\site-packages\tensorflow\python\framework\tensor_shape.py", line 185, in __init__
    self._value = int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Tensor'

・ Lerne mit 10 Anime-Gesichtern

Also habe ich diesmal versucht, mit config-a, also StyleGAN, zu lernen. Zunächst als Vorbereitung ⓪ Wählen Sie 10 Anime-Gesichter und Custom_dataset-r02.tfrecords wie zuvor erstellen.

Der Code lautet wie folgt und wird so geändert, dass er mit 1060 funktioniert. Der gesamte Code ist unten. StyleGAN2/run_training.py / Die Hauptteile der Änderung sind wie folgt ① Zielauflösung = 64 Wenn Sie mit dem folgenden Code lesen, kann auch das Bild der Größe (128, 128) eingelesen werden (64, 64), und es ist das der StyleGAN-Netzwerkstruktur.

run_training.py


    dataset_args = EasyDict(tfrecord_dir=dataset, resolution=64)  #, resolution=64

(2) Die anfängliche Auflösung beträgt ebenfalls 64 Dies liegt daran, dass StyleGAN pGAN ist. Mit fortschreitendem Lernen nimmt die Dimension allmählich zu, aber diesmal funktioniert es nicht gut. Deshalb habe ich dies übernommen, weil es zu konvergieren begann, als ich es von Anfang an mit der Zielauflösung von 64 versuchte.

run_training.py


sched.lod_initial_resolution = 64 #8

Weitere Änderungen an run_training.py finden Sie im gesamten obigen Code (3) Wenn dies alles ist, wird ein Speicherfehler ausgelöst und gestoppt. Ändern Sie daher den folgenden Teil von dataset.py. StyleGAN2/training/dataset.py

training/dataset.py


# Load labels.
        assert max_label_size == 'full' or max_label_size >= 0
        #self._np_labels = np.zeros([1<<30, 0], dtype=np.float32)
        self._np_labels = np.zeros([1<<20, 0], dtype=np.float32)

④ Am Ende dauert das Lernen einige Zeit und der Festplattenspeicher scheint nicht ausreichend zu sein. Wechseln Sie daher jedes Mal zur Ausgabe StyleGAN2/training/training_loop.py

training/training_loop.py


    image_snapshot_ticks    = 1,  #50     # How often to save image snapshots? None = only save 'reals.png' and 'fakes-init.png'.
    network_snapshot_ticks  = 1, #50      # How often to save network snapshots? None = only save 'networks-final.pkl'.
...
            if network_snapshot_ticks is not None and (cur_tick % network_snapshot_ticks == 0 or done):
                #pkl = dnnlib.make_run_dir_path('network-snapshot-%06d.pkl' % (cur_nimg // 1000))
                pkl = dnnlib.make_run_dir_path('network-snapshot-.pkl')
                misc.save_pkl((G, D, Gs), pkl)

・ Versuchen Sie auszugeben

Versuchen Sie, Ausgabebeispiele zu mischen

# Example of style mixing (matches the corresponding video clip)
python run_generator.py style-mixing-example --network=./results/00007-stylegan2-custom_dataset-1gpu-config-a/network-final.pkl --row-seeds=85,100,75,458,1500 --col-seeds=55,821,1789,293 --truncation-psi=1.0

Ich habe wie folgt gelernt. grid.png Das vorherige StyleGAN-Mischen kann auch mit dem folgenden Code durchgeführt werden. example_256_4705_50_52x11.gif Als ich dann versuchte, 100 Blatt entsprechend auszugeben, wurde es wie folgt ausgegeben. example256_1000_100.gif StyleGAN2/pretrained_example.py

・ Ausgabebild und Originalbild

Schließlich ist es mein Hauptinteresse, das folgende Bild beizufügen, um die Frage zu interpretieren, ob sich das auf diese Weise erzeugte Bild vom Original unterscheidet.

Das Originalbild 0.png 1.png 2.png 3.png 4.png
Generiertes Bild example0_11.png example1_14.png example2_79.png example3_13.png example4_91.png
Das Originalbild 5.png 6.png 7.png 8.png 9.png
Generiertes Bild example5_2.png example6_1.png example7_21.png example8_78.png example9_51.png

Zusammenfassung

・ Ich konnte StyleGAN mit 10 Anime-Gesichtern lernen ・ Es kann interpretiert werden, dass das generierte Bild das Originalbild enthält.

・ Das nächste Mal möchte ich eine hohe Auflösung mit einer 1080-Maschine herausfordern.

Recommended Posts

[Einführung in StyleGAN2] Unabhängiges Lernen mit 10 Anime-Gesichtern ♬
[Einführung in Style GAN] Einzigartiges Lernen von Animation mit Ihrer eigenen Maschine ♬
Klassifizieren Sie Anime-Gesichter mit tiefem Lernen mit Chainer
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Einführung in das maschinelle Lernen
Klassifizieren Sie Anime-Gesichter durch Fortsetzung / Deep Learning mit Keras
[Lernmemorandum] Einführung in vim
Eine Einführung in das maschinelle Lernen
Einführung in RDB mit sqlalchemy Ⅰ
Einführung in Deep Learning ~ Lernregeln ~
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Super Einführung in das maschinelle Lernen
Einführung in Deep Learning ~ Backpropagation ~
Einführung in das maschinelle Lernen mit scikit-learn-Von der Datenerfassung bis zur Parameteroptimierung
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Einführung in das maschinelle Lernen Schreiben von Notizen
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Einführung in RDB mit sqlalchemy II
Einführung in Deep Learning ~ Codierungsvorbereitung ~
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
Einführung in Deep Learning ~ Dropout Edition ~
Einführung in Deep Learning ~ Forward Propagation ~
Einführung in Deep Learning ~ CNN Experiment ~
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 1
Einführung in Deep Learning (2) - Versuchen Sie Ihre eigene nichtlineare Regression mit Chainer-
[Einführung in StyleGAN] Ich habe mit "Eine Frau verwandelt sich in Mayuyu" gespielt ♬
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 2
[Einführung in WordCloud] Spielen Sie mit Scraping ♬
Einführung in das maschinelle Lernen: Funktionsweise des Modells
[Einführung in das maschinelle Lernen] Bis Sie den Beispielcode mit Chainer ausführen
Einführung in Deep Learning ~ Falten und Pooling ~
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Eine Einführung in OpenCV für maschinelles Lernen
[Einführung in Python] Verwenden wir foreach mit Python
[Einführung in Pytorch] Ich habe mit sinGAN ♬ gespielt
[Einführung in StyleGAN] Ich habe mit style_mixing "Frau, die die Brille abnimmt" ♬ gespielt
Eine Einführung in Python für maschinelles Lernen
Einführung in TensorFlow - Erläuterung der Begriffe und Konzepte des maschinellen Lernens
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 11 und 12 Einführung in Pandas Matplotlib
Einführung in das Testen statistischer Hypothesen mit Statistikmodellen
Einführung in die künstliche Intelligenz mit Python 1 "Genetic Algorithm-Theory-"
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Eine Einführung in maschinelles Lernen für Bot-Entwickler
Markov Chain Artificial Brainless mit Python + Janome (1) Einführung in Janome
Markov-Kette Künstlich Gehirnlos mit Python + Janome (2) Einführung in die Markov-Kette
Einführung in die künstliche Intelligenz mit Python 2 "Genetic Algorithm-Practice-"
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Einführung in den Formationsflug mit Tello edu (Python)
[Einführung zur Minimierung] Datenanalyse mit SEIR-Modell ♬
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Einführung in Python mit Atom (unterwegs)
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Einführung in Vector Self-Return-Modelle (VAR) mit Statistikmodellen
Einführung in das Generalized Linear Model (GLM) von Python
[Einführung in die Udemy Python3 + -Anwendung] 9. Drucken Sie zunächst mit print
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)