Après StyleGAN, j'ai également essayé l'apprentissage original des visages d'anime dans StyleGAN2. En conclusion, j'ai pu apprendre config-a, mais config-b à config-f ne sont pas dans un bon environnement. Cela dit, j'ai presque vu le code, je vais donc le résumer une fois. Surtout cette fois, j'ai essayé d'apprendre combien avec seulement 10 visages d'anime. 【référence】 ①NVlabs/stylegan2 ② Comment apprendre votre propre modèle avec stylegan2
·environnement ・ Apprenez avec 10 visages d'anime ・ Essayez de sortir ・ Image de sortie et image originale
L'environnement de StyleGAN2 est le suivant
Requirements
-Les deux Linux et Windows sont pris en charge.
・ Linux est recommandé pour des raisons de performances et de compatibilité.
・ 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.
・ Sous Windows, you need to use TensorFlow 1.14 — TensorFlow 1.15 will not work.
・ Un ou plusieurs hauts-end NVIDIA GPUs, NVIDIA drivers, CUDA 10.0 toolkit and cuDNN 7.5.・ Pour reproduire les résultats rapportés dans l'article,
you need an NVIDIA GPU with at least 16 GB of DRAM.
・ Utilisateurs Docker: use the provided Dockerfile to build an image with the required library dependencies.
・ StyleGAN2 s'appuie sur des opérations TensorFlow personnalisées qui sont compilées à la volée à l'aide de NVCC.
To test that your NVCC installation is working correctly, run:
nvcc test_nvcc.cu -o test_nvcc -run
| CPU says hello.
| GPU says hello.
・ Sous 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".
Cependant, quand j'ai pensé qu'il était prêt, à l'exception de config -a, il s'est arrêté avec l'erreur suivante.
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'
Donc, cette fois, j'ai essayé d'apprendre avec config-a, c'est-à-dire StyleGAN. Tout d'abord, comme préparation ⓪ Sélectionnez 10 visages d'anime et Créer custom_dataset-r02.tfrecords comme auparavant
Le code est le suivant, en le modifiant pour qu'il fonctionne avec 1060. Le code complet est ci-dessous. StyleGAN2/run_training.py / Les principales parties du changement sont les suivantes ① Résolution cible = 64 Si vous le lisez avec le code suivant, l'image de taille (128,128) peut également être lue dans (64,64), et ce sera celle de la structure de réseau StyleGAN.
run_training.py
dataset_args = EasyDict(tfrecord_dir=dataset, resolution=64) #, resolution=64
(2) La résolution initiale est également de 64 C'est parce que StyleGAN est pGAN, donc au fur et à mesure que l'apprentissage progresse, la dimension augmente progressivement, mais cette fois cela ne fonctionne pas bien, j'ai donc adopté cela car il a commencé à converger lorsque je l'ai essayé avec la résolution cible de 64 depuis le début.
run_training.py
sched.lod_initial_resolution = 64 #8
Consultez l'intégralité du code ci-dessus pour d'autres modifications apportées à run_training.py (3) Si c'est tout, une erreur de mémoire sera générée et elle s'arrêtera, alors changez la partie suivante de 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)
④ À la fin, il faut du temps pour apprendre et la mémoire du disque dur semble être insuffisante, alors changez pour sortir à chaque fois 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)
Essayez de mélanger des exemples de sortie
# 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
J'ai appris ce qui suit. En outre, le mixage StyleGAN précédent pouvait être effectué avec le code suivant. Ensuite, lorsque j'ai essayé de produire 100 feuilles de manière appropriée, il a été produit comme suit. StyleGAN2/pretrained_example.py
Enfin, mon intérêt principal est de joindre l'image suivante pour aider à interpréter la question de savoir si l'image ainsi générée est différente de l'original.
L'image originale | |||||
---|---|---|---|---|---|
Image générée |
L'image originale | |||||
---|---|---|---|---|---|
Image générée |
・ J'ai pu apprendre StyleGAN avec 10 visages d'anime ・ Il peut être interprété que l'image générée contient l'image originale.
・ La prochaine fois, j'aimerais défier la haute résolution avec une machine 1080.
Recommended Posts