StyleGAN2 依赖于使用NVCC即时编译的自定义 TensorFlow 操作。要测试您的 NVCC 安装是否正常工作,请运行:
nvcc test_nvcc.cu -o test_nvcc -run
| CPU says hello.
| GPU says hello.
在 Windows 上,编译需要 Microsoft Visual Studio 在PATH
. 我们建议安装Visual Studio Community Edition并添加到PATH
using "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
.
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
预训练网络作为*.pkl
文件存储在StyleGAN2 Google Drive 文件夹中。下面,您可以使用语法直接引用它们gdrive:networks/<filename>.pkl
,也可以手动下载它们并通过文件名引用。
# Generate uncurated ffhq images (matches paper Figure 12)
python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
--seeds=6600-6625 --truncation-psi=0.5
# Generate curated ffhq images (matches paper Figure 11)
python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
--seeds=66,230,389,1518 --truncation-psi=1.0
# Generate uncurated car images
python run_generator.py generate-images --network=gdrive:networks/stylegan2-car-config-f.pkl \
--seeds=6000-6025 --truncation-psi=0.5
# Example of style mixing (matches the corresponding video clip)
python run_generator.py style-mixing-example --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
--row-seeds=85,100,75,458,1500 --col-seeds=55,821,1789,293 --truncation-psi=1.0
结果放在results/<RUNNING_ID>/*.png
. 您可以使用 更改位置--result-dir
。例如,--result-dir=~/my-stylegan2-results
。
您可以使用 将网络导入您自己的 Python 代码中pickle.load()
。为此,您需要将dnnlib
源目录包含在其中PYTHONPATH
并通过调用创建一个默认的 TensorFlow 会话dnnlib.tflib.init_tf()
。有关示例,请参见run_generator.py和pretrained_networks.py。
数据集存储为多分辨率 TFRecords,类似于原始的 StyleGAN。每个数据集由存储在一个公共目录下的多个文件组成*.tfrecords
,例如~/datasets/ffhq/ffhq-r*.tfrecords
. 在以下部分中,使用--dataset
和--data-dir
参数的组合引用数据集,例如--dataset=ffhq --data-dir=~/datasets
.
总部。要将Flickr-Faces-HQ数据集下载为多分辨率 TFRecords,请运行:
pushd ~
git clone https://github.com/NVlabs/ffhq-dataset.git
cd ffhq-dataset
python download_ffhq.py --tfrecords
popd
python dataset_tool.py display ~/ffhq-dataset/tfrecords/ffhq
LSUN。从LSUN 项目页面以 LMDB 格式下载所需的 LSUN 类别。要将数据转换为多分辨率 TFRecords,请运行:
python dataset_tool.py create_lsun_wide ~/datasets/car ~/lsun/car_lmdb --width=512 --height=384
python dataset_tool.py create_lsun ~/datasets/cat ~/lsun/cat_lmdb --resolution=256
python dataset_tool.py create_lsun ~/datasets/church ~/lsun/church_outdoor_train_lmdb --resolution=256
python dataset_tool.py create_lsun ~/datasets/horse ~/lsun/horse_lmdb --resolution=256
自定义。通过将所有训练图像放在一个目录下来创建自定义数据集。图像必须是方形的,并且它们必须具有相同的二次方。要将图像转换为多分辨率 TFRecords,请运行:
python dataset_tool.py create_from_images ~/datasets/my-custom-dataset ~/my-custom-images
python dataset_tool.py display ~/datasets/my-custom-dataset
要为一组图像找到匹配的潜在向量,请运行:
# Project generated images
python run_projector.py project-generated-images --network=gdrive:networks/stylegan2-car-config-f.pkl \
--seeds=0,1,5
# Project real images
python run_projector.py project-real-images --network=gdrive:networks/stylegan2-car-config-f.pkl \
--dataset=car --data-dir=~/datasets
要重现表 1 和表 3 中配置 F 的训练运行,请运行:
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
--dataset=ffhq --mirror-augment=true
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
--dataset=car --total-kimg=57000
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
--dataset=cat --total-kimg=88000
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
--dataset=church --total-kimg 88000 --gamma=100
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
--dataset=horse --total-kimg 100000 --gamma=100
其他配置见python run_training.py --help
。
我们已经验证了在使用 1、2、4 或 8 个 GPU 进行训练时,结果与论文相符。请注意,以 1024×1024 分辨率训练 FFHQ 需要至少具有 16 GB 内存的 GPU。下表列出了使用 NVIDIA DGX-1 和 8 个 Tesla V100 GPU 的典型训练时间:
与使用 8 个 GPU 的原始 StyleGAN 相比,FFHQ 配置 F (StyleGAN2) 的训练曲线:
训练后,生成的网络可以像官方预训练网络一样使用:
# Generate 1000 random images without truncation
python run_generator.py generate-images --seeds=0-999 --truncation-psi=1.0 \
--network=results/00006-stylegan2-ffhq-8gpu-config-f/networks-final.pkl
要重现表 1 和表 3 中配置 F 的数字,请运行:
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
--metrics=fid50k,ppl_wend --dataset=ffhq --mirror-augment=true
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-car-config-f.pkl \
--metrics=fid50k,ppl2_wend --dataset=car
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-cat-config-f.pkl \
--metrics=fid50k,ppl2_wend --dataset=cat
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-church-config-f.pkl \
--metrics=fid50k,ppl2_wend --dataset=church
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-horse-config-f.pkl \
--metrics=fid50k,ppl2_wend --dataset=horse
其他配置见StyleGAN2 Google Drive 文件夹。
请注意,指标每次都使用不同的随机种子进行评估,因此结果会因运行而异。在论文中,我们报告了每个指标运行 10 次的平均结果。下表列出了可用指标及其预期运行时间和随机变化:
请注意,某些指标会在磁盘上缓存特定于数据集的数据,并且它们在首次运行时会花费更长的时间。
[/hidecontent]