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/stylegan2 ② So lernen Sie Ihr eigenes Modell mit stylegan2
·Umgebung ・ Lerne mit 10 Anime-Gesichtern ・ Versuchen Sie auszugeben ・ Ausgabebild und Originalbild
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'
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, 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. Das vorherige StyleGAN-Mischen kann auch mit dem folgenden Code durchgeführt werden. Als ich dann versuchte, 100 Blatt entsprechend auszugeben, wurde es wie folgt ausgegeben. StyleGAN2/pretrained_example.py
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 | |||||
---|---|---|---|---|---|
Generiertes Bild |
Das Originalbild | |||||
---|---|---|---|---|---|
Generiertes Bild |
・ 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