2020年01月13日
stylegan2で独自モデルの学習方法
![]() | Tweet |
![]() |
StyleGAN2は 1) 生成画像の水滴様ノイズはインスタンス正規化が原因だと特定、代わりに重みを正規化 2) Perceptual Path Lengthが生成品質と高い相関があり、その最適化として生成器のヤコビアンで正則化 3) Progressive Growingを使わない https://t.co/vniJLOACyc https://t.co/zZ2EaDYMnC
— Daisuke Okanohara (@hillbig) 2019年12月25日
stylegan2も、githubにNVIDIAのオフィシャルコードがあるので、これを使えばいいです。
git clone https://github.com/NVlabs/stylegan2.git
nvcc test_nvcc.cu -o test_nvcc -runを実行して、このように表示される環境が必要です。
CPU says hello.
GPU says hello.
styleganの時と同様に、まず画像をTFRecords形式に変換する必要があります。
Traceback (most recent call last):これは、ディレクトリ内に違うサイズの画像があるからだと思います。
File "dataset_tool.py", line 643, in
execute_cmdline(sys.argv)
File "dataset_tool.py", line 638, in execute_cmdline
func(**vars(args))
File "dataset_tool.py", line 527, in create_from_images
tfr.add_image(img)
File "dataset_tool.py", line 78, in add_image
assert img.shape == self.shape
AssertionError
学習は、例えばこのようにします。
やはりメモリが足りなくなりそうなのですが、 ソースコードにbatch_size が、ハードコーディングされてます...
sizeの整合が取れてないと、こうなると思います。
学習が進めば、このように表示されて来ると思います。
途中経過出力画像が、多数の画像を連結していて巨大であることが気になりますが...
run_generatorで画像生成のやり方はgithubに書いている通り、 networkのパラメータですが、モデルファイルを直に指定します。
python run_training.py --num-gpus=1 --total-kimg=100 --data-dir=datasets --config=config-e --dataset=custom-dataset --mirror-augment=true
File "stylegan2/training/training_loop.py", line 141, in training_loopこれは、TFRecordsデータが無いかパスが違うかしていると思います。
training_set = dataset.load_dataset(data_dir=dnnlib.convert_path(data_dir), verbose=True, **dataset_args)
File "stylegan2/training/dataset.py", line 192, in load_dataset
dataset = dnnlib.util.get_obj_by_name(class_name)(**kwargs)
File "stylegan2/training/dataset.py", line 53, in __init__
assert os.path.isdir(self.tfrecord_dir)
AssertionError
やはりメモリが足りなくなりそうなのですが、 ソースコードにbatch_size が、ハードコーディングされてます...
sizeの整合が取れてないと、こうなると思います。
File "stylegan2/training/training_loop.py", line 271, in training_loop
assert sched.minibatch_size % (sched.minibatch_gpu * num_gpus) == 0
AssertionError
学習が進めば、このように表示されて来ると思います。
tick 0 kimg 0.1 lod 0.00 minibatch 32 time 1m 02s sec/tick 61.9 sec/kimg 483.90 maintenance 0.0 gpumem 8.4
途中経過出力画像が、多数の画像を連結していて巨大であることが気になりますが...
run_generatorで画像生成のやり方はgithubに書いている通り、 networkのパラメータですが、モデルファイルを直に指定します。
python run_generator.py generate-images --network=networks/stylegan2-ffhq-config-f.pkl --seeds=6600-6625 --truncation-psi=0.5