开源
StyleFlow :基于 StyleGAN 的人脸属性编辑算法
来源:元经纪     阅读:533
网站管理员
发布于 2023-03-06 08:24
查看主页

概述

我们在以前的项目中,介绍过StyleGAN,他能够通过人脸部分替换的形势,生成一张新的人脸;世界上不存在的人脸项目也流行一时;StyleFlow 就是基于 StyleGAN 的人脸属性编辑算法。

要求

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并添加到PATHusing "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.pypretrained_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]

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
努比亚Z60S Pro将成为价格最低的卫星通信旗舰手机
欧盟宣布对中国电动汽车最高加税35.3%:奔驰、宝马等车企发声 行为愚蠢
苹果全新iphone16系列即将发布
气温暴跌18℃以上!中央气象台多个黄色预警来了:寒潮、暴雪、大雾
中国制造获国际赛事青睐(关注体育产业)

首页

分类

定制方案

消息

我的