stylegan2-ada-pytorch

GitHub
4.5k 1.2k 较难 1 次阅读 今天NOASSERTION图像开发框架
AI 解读 由 AI 自动生成,仅供参考

stylegan2-ada-pytorch 是英伟达官方推出的 StyleGAN2-ADA 模型的 PyTorch 版本,专注于在数据有限的情况下训练高质量的生成对抗网络(GAN)。传统 GAN 训练往往需要海量图片,一旦数据不足,判别器容易过拟合导致训练失败。该工具通过引入“自适应判别器增强”机制,有效稳定了小数据集上的训练过程,无需修改损失函数或网络架构,仅需几千张图像即可生成媲美原版 StyleGAN2 的高清结果,甚至在某些基准测试中刷新了纪录。

相比原有的 TensorFlow 版本,stylegan2-ada-pytorch 在保持结果一致性的同时,显著提升了训练与推理速度,并优化了显存占用和启动时间。它支持加载旧版模型,采用更通用的 ZIP/PNG 数据集格式,并兼容 TensorBoard 等主流工具,极大地方便了工程部署与实验复现。

这款工具特别适合 AI 研究人员、深度学习开发者以及需要利用少量定制数据生成高质量图像的设计师使用。无论是从零训练还是对现有模型进行微调,stylegan2-ada-pytorch 都能帮助用户轻松突破数据瓶颈,探索人脸、动物、艺术风格等多种领域的生成式应用。

使用场景

一家小型数字时尚初创公司试图利用仅有的 2000 张复古面料扫描图,训练一个能生成无限新花纹的 AI 模型以丰富其设计库。

没有 stylegan2-ada-pytorch 时

  • 模型训练崩溃:由于样本量远低于传统 GAN 所需的数万张,判别器迅速过拟合,导致生成器无法学习,训练过程早早发散失败。
  • 数据成本高昂:团队被迫花费数周时间和大量预算去采集或购买更多高清面料图片,严重拖慢了产品上线节奏。
  • 生成质量低劣:即使勉强训练,生成的图案也充满伪影、重复纹理严重,完全无法达到商业设计所需的清晰度和多样性标准。
  • 架构调整复杂:为了适应小数据,开发人员需要手动修改损失函数或网络结构,试错成本极高且缺乏理论保证。

使用 stylegan2-ada-pytorch 后

  • 小数据稳定训练:借助其自适应判别器增强机制,仅需现有的 2000 张图片即可稳定训练,有效防止了判别器过拟合。
  • 大幅降低门槛:无需额外收集数据,直接利用现有资产启动项目,将原本数周的数据准备期缩短为零。
  • 产出商用级素材:生成的面料纹理细节丰富、风格多样且无重复感,FID 指标显著优化,直接满足设计师的打样需求。
  • 开箱即用高效:无需修改任何网络架构或损失函数,直接复用官方配置即可在 PyTorch 环境中快速复现论文效果,训练速度还提升了约 30%。

stylegan2-ada-pytorch 通过自适应增强技术,彻底打破了生成式 AI 对海量数据的依赖,让中小企业也能用少量样本创造出高质量的定制内容。

运行环境要求

操作系统
  • Linux
  • Windows
GPU

必需,1-8 块高端 NVIDIA GPU(测试基于 Tesla V100),显存至少 12GB,CUDA Toolkit 11.0+(RTX 3090 需 11.1+)

内存

未说明

依赖
notesWindows 用户编译自定义 PyTorch 扩展时需要安装 Microsoft Visual Studio。不再支持 TFRecords 数据集,需转换为新的 ZIP/PNG 格式。默认禁用截断(Truncation)。建议使用 Anaconda3 2020.11 发行版。Docker 用户需要 NVIDIA 驱动版本 r455.23 或更高。
python3.7 (64-bit)
torch==1.7.1
click
requests
tqdm
pyspng
ninja
imageio-ffmpeg==0.4.3
stylegan2-ada-pytorch hero image

快速开始

StyleGAN2-ADA — 官方 PyTorch 实现

预告图

在数据有限的情况下训练生成对抗网络
特罗·卡拉斯、米卡·艾塔拉、扬内·赫尔斯特恩、萨穆利·莱内、雅科·莱蒂宁、蒂莫·艾拉
https://arxiv.org/abs/2006.06676

摘要:使用过少的数据训练生成对抗网络(GAN)通常会导致判别器过拟合,从而使得训练过程发散。我们提出了一种自适应的判别器增强机制,能够在数据量有限的情况下显著稳定训练过程。该方法无需修改损失函数或网络架构,既适用于从头开始训练,也适用于在另一个数据集上对现有 GAN 进行微调。我们在多个数据集上证明,现在仅需几千张训练图像就能获得良好的效果,甚至常常以比 StyleGAN2 少一个数量级的图像数量达到相似的效果。我们预计这将为 GAN 开辟新的应用领域。此外,我们还发现广泛使用的 CIFAR-10 实际上是一个数据量有限的基准测试,并将 FID 记录从 5.59 提升至 2.42。

如需商务合作,请访问我们的官网并提交表格:NVIDIA Research Licensing

发布说明

本仓库是对 StyleGAN2-ADA 在 PyTorch 中的忠实重实现,重点在于正确性、性能和兼容性。

正确性

  • 完全支持所有主要的训练配置。
  • 对图像质量、训练曲线和质量指标进行了与 TensorFlow 版本的广泛验证。
  • 预计结果在所有情况下都一致,但伪随机数和浮点运算的影响除外。

性能

  • 在 NVIDIA Tesla V100 GPU 上,训练速度通常比 TensorFlow 版本快 5%–30%。
  • 高分辨率下的推理速度可提升至 35%,但在低分辨率下可能会稍慢。
  • GPU 内存占用与 TensorFlow 版本相当。
  • 新建网络的启动时间更快(不到 50 秒),使用预训练网络时也只需不到 4 秒。
  • 新增了用于调整训练性能的命令行选项。

兼容性

  • 兼容使用 TensorFlow 版本创建的旧网络文件。
  • 新的基于 ZIP/PNG 的数据集格式,旨在实现与现有第三方工具的最大互操作性。
  • 不再支持 TFRecords 数据集——需要将其转换为新格式。
  • 日志、指标和训练曲线采用新的 JSON 格式。
  • 如果安装了 TensorBoard,则会同时以旧的 TFEvents 格式导出训练曲线。
  • 命令行语法基本保持不变,少数例外(例如 dataset_tool.py)。
  • 不再支持比较方法(--cmethod--dcap--cfg=cifarbaseline--aug=adarv)。
  • 截断功能现已默认关闭。

数据仓库

路径 描述
stylegan2-ada-pytorch 主目录托管在 Amazon S3 上
  ├  ada-paper.pdf 论文 PDF
  ├  images 使用预训练模型生成的精选示例图像
  ├  videos 精选的插值视频示例
  └  pretrained 预训练模型
    ├  ffhq.pkl FFHQ,分辨率为 1024×1024,由原始 StyleGAN2 训练而成
    ├  metfaces.pkl MetFaces,分辨率为 1024×1024,基于 FFHQ 使用 ADA 进行迁移学习
    ├  afhqcat.pkl AFHQ Cat,分辨率为 512×512,使用 ADA 从零开始训练
    ├  afhqdog.pkl AFHQ Dog,分辨率为 512×512,使用 ADA 从零开始训练
    ├  afhqwild.pkl AFHQ Wild,分辨率为 512×512,使用 ADA 从零开始训练
    ├  cifar10.pkl CIFAR-10,条件类别为 32×32
    ├  brecahad.pkl BreCaHAD,分辨率为 512×512,使用 ADA 从零开始训练
    ├  paper-fig7c-training-set-sweeps 图 7c 中使用的模型(训练集规模扫描)
    ├  paper-fig11a-small-datasets 图 11a 中使用的模型(小数据集与迁移学习)
    ├  paper-fig11b-cifar10 图 11b 中使用的模型(CIFAR-10)
    ├  transfer-learning-source-nets 作为迁移学习起点的模型
    └  metrics 质量指标所使用的特征检测器

系统要求

  • 支持 Linux 和 Windows,但出于性能和兼容性考虑,我们推荐使用 Linux。
  • 1–8 张高端 NVIDIA 显卡,每张显卡至少配备 12 GB 显存。我们所有的测试和开发都是在配备 8 张 Tesla V100 显卡的 NVIDIA DGX-1 上完成的。
  • 64 位 Python 3.7 和 PyTorch 1.7.1。PyTorch 的安装说明请参见 https://pytorch.org/
  • CUDA 工具包 11.0 或更高版本。如果使用 RTX 3090,建议至少使用 11.1 版本。(为什么需要单独安装 CUDA 工具包?请参阅 #2 中的评论。)
  • Python 库:pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3。我们使用 Anaconda3 2020.11 发行版,其中大部分库已默认安装。
  • Docker 用户:请使用提供的 Dockerfile 构建包含所需库依赖的镜像。

代码大量依赖于通过 NVCC 动态编译的自定义 PyTorch 扩展。在 Windows 上,编译需要 Microsoft Visual Studio。我们建议安装 Visual Studio Community Edition,并通过 "C:\Program Files (x86)\Microsoft Visual Studio\<VERSION>\Community\VC\Auxiliary\Build\vcvars64.bat" 将其添加到 PATH 中。

快速入门

预训练网络以 *.pkl 文件的形式存储,可以通过本地文件名或 URL 引用:


# 生成无截断的精选 MetFaces 图像(图10 左侧)
python generate.py --outdir=out --trunc=1 --seeds=85,265,297,849 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/metfaces.pkl

# 生成有截断的非精选 MetFaces 图像(图12 左上角)
python generate.py --outdir=out --trunc=0.7 --seeds=600-605 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/metfaces.pkl

# 生成条件类别的 CIFAR-10 图像(图17 左侧,汽车类别)
python generate.py --outdir=out --seeds=0-35 --class=1 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/cifar10.pkl

# 风格混合示例
python style_mixing.py --outdir=out --rows=85,100,75,458,1500 --cols=55,821,1789,293 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/metfaces.pkl

上述命令的输出文件将放置在 out/*.png 目录下,由 --outdir 参数控制。下载的网络模型文件会被缓存到 $HOME/.cache/dnnlib 目录中,可以通过设置环境变量 DNNLIB_CACHE_DIR 来覆盖该路径。默认的 PyTorch 扩展构建目录是 $HOME/.cache/torch_extensions,也可以通过设置 TORCH_EXTENSIONS_DIR 环境变量来更改。

Docker:您可以通过以下 Docker 命令运行上述精选图像示例:

docker build --tag sg2ada:latest .
./docker_run.sh python3 generate.py --outdir=out --trunc=1 --seeds=85,265,297,849 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/metfaces.pkl

注意:Docker 镜像需要 NVIDIA 驱动版本 r455.23 或更高版本。

旧版网络:上述命令可以加载大多数使用 TensorFlow 版本 StyleGAN2 和 StyleGAN2-ADA 创建的网络模型文件。然而,为了未来的兼容性,我们建议将这些旧版模型文件转换为 PyTorch 版本所使用的全新格式:

python legacy.py \
    --source=https://nvlabs-fi-cdn.nvidia.com/stylegan2/networks/stylegan2-cat-config-f.pkl \
    --dest=stylegan2-cat-config-f.pkl

将图像投影到潜在空间

要找到给定图像文件对应的潜在向量,可运行以下命令:

python projector.py --outdir=out --target=~/mytargetimg.png \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/ffhq.pkl

为获得最佳效果,目标图像应进行裁剪和对齐,类似于 FFHQ 数据集中的图像。上述命令会保存投影目标图像 out/target.png、结果图像 out/proj.png、潜在向量 out/projected_w.npz 以及渐进视频 out/proj.mp4。您可以使用 generate.py--projected_w 参数来渲染得到的潜在向量:

python generate.py --outdir=out --projected_w=out/projected_w.npz \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/ffhq.pkl

在 Python 中使用预训练网络

您可以在自己的 Python 代码中使用预训练网络,如下所示:

with open('ffhq.pkl', 'rb') as f:
    G = pickle.load(f)['G_ema'].cuda()  # torch.nn.Module
z = torch.randn([1, G.z_dim]).cuda()    # 潜在向量
c = None                                # 类别标签(本示例中未使用)
img = G(z, c)                           # NCHW, float32, 动态范围 [-1, +1]

上述代码需要 torch_utilsdnnlib 能够通过 PYTHONPATH 访问。它不需要网络本身的源代码——其类定义会通过 torch_utils.persistence 从 pickle 文件中加载。

pickle 文件包含三个网络:“G”和“D”是在训练过程中拍摄的即时快照,“G_ema”则是生成器权重在多个训练步骤上的移动平均值。这些网络都是标准的 torch.nn.Module 实例,在导入时所有参数和缓冲区都位于 CPU 上,并且默认情况下禁用了梯度计算。

生成器由两个子模块组成:“G.mapping”和“G.synthesis”,它们可以分别执行。此外,它们还支持多种附加选项:

w = G.mapping(z, c, truncation_psi=0.5, truncation_cutoff=8)
img = G.synthesis(w, noise_mode='const', force_fp32=True)

更多示例请参阅 generate.pystyle_mixing.pyprojector.py

准备数据集

数据集以未压缩的 ZIP 归档形式存储,其中包含未压缩的 PNG 文件和一个用于标签的元数据文件 dataset.json

自定义数据集可以从包含图像的文件夹创建;更多信息请参阅 python dataset_tool.py --help。或者,也可以直接将文件夹用作数据集,无需先通过 dataset_tool.py 处理,但这样做可能会导致性能不佳。

不支持旧版 TFRecords 数据集——有关如何将其转换的说明见下文。

FFHQ

步骤 1:下载 Flickr-Faces-HQ 数据集,格式为 TFRecords。

步骤 2:使用来自 TensorFlow 版本 StyleGAN2-ADAdataset_tool.py 从 TFRecords 中提取图像:

# 使用来自 https://github.com/NVlabs/stylegan2-ada/ 的 TensorFlow 版本中的 dataset_tool.py
python ../stylegan2-ada/dataset_tool.py unpack \
    --tfrecord_dir=~/ffhq-dataset/tfrecords/ffhq --output_dir=/tmp/ffhq-unpacked

步骤 3:使用本仓库中的 dataset_tool.py 创建 ZIP 归档:

# 原始 1024x1024 分辨率。
python dataset_tool.py --source=/tmp/ffhq-unpacked --dest=~/datasets/ffhq.zip

# 缩小至 256x256 分辨率。
#
# 注意:必须使用 --resize-filter=box 选项才能复现论文中展示的 FID 分数。如果您不需要完全匹配,最好省略此选项。

# 并默认使用 Lanczos 插值。参见 https://github.com/NVlabs/stylegan2-ada-pytorch/issues/283#issuecomment-1731217782
python dataset_tool.py --source=/tmp/ffhq-unpacked --dest=~/datasets/ffhq256x256.zip \
    --width=256 --height=256 --resize-filter=box

MetFaces:下载 MetFaces 数据集并创建 ZIP 压缩包:

python dataset_tool.py --source=~/downloads/metfaces/images --dest=~/datasets/metfaces.zip

AFHQ:下载 AFHQ 数据集并创建 ZIP 压缩包:

python dataset_tool.py --source=~/downloads/afhq/train/cat --dest=~/datasets/afhqcat.zip
python dataset_tool.py --source=~/downloads/afhq/train/dog --dest=~/datasets/afhqdog.zip
python dataset_tool.py --source=~/downloads/afhq/train/wild --dest=~/datasets/afhqwild.zip

CIFAR-10:下载 CIFAR-10 的 Python 版本并转换为 ZIP 压缩包:

python dataset_tool.py --source=~/downloads/cifar-10-python.tar.gz --dest=~/datasets/cifar10.zip

LSUN:从 LSUN 项目页面下载所需类别,并将其转换为 ZIP 压缩包:

python dataset_tool.py --source=~/downloads/lsun/raw/cat_lmdb --dest=~/datasets/lsuncat200k.zip \
    --transform=center-crop --width=256 --height=256 --max_images=200000

python dataset_tool.py --source=~/downloads/lsun/raw/car_lmdb --dest=~/datasets/lsuncar200k.zip \
    --transform=center-crop-wide --width=512 --height=384 --max_images=200000

BreCaHAD

步骤 1:下载 BreCaHAD 数据集

步骤 2:使用来自 StyleGAN2-ADA 的 TensorFlow 版本dataset_tool.py 提取 512×512 分辨率的裁剪图像:

# 使用来自 TensorFlow 版本的 dataset_tool.py
# https://github.com/NVlabs/stylegan2-ada/
python dataset_tool.py extract_brecahad_crops --cropsize=512 \
    --output_dir=/tmp/brecahad-crops --brecahad_dir=~/downloads/brecahad/images

步骤 3:使用本仓库中的 dataset_tool.py 创建 ZIP 压缩包:

python dataset_tool.py --source=/tmp/brecahad-crops --dest=~/datasets/brecahad.zip

训练新网络

以最基础的形式来说,训练新网络只需执行以下命令:

python train.py --outdir=~/training-runs --data=~/mydataset.zip --gpus=1 --dry-run
python train.py --outdir=~/training-runs --data=~/mydataset.zip --gpus=1

第一条命令是可选的;它会验证参数、打印出训练配置并退出。第二条命令则真正开始训练。

在本示例中,结果将保存到新创建的目录 ~/training-runs/<ID>-mydataset-auto1 中,该目录由 --outdir 控制。训练会定期导出网络快照文件(network-snapshot-<INT>.pkl)和示例图像(fakes<INT>.png),间隔时间由 --snap 控制。对于每个快照,还会评估 FID 指标(由 --metrics 控制),并将结果记录在 metric-fid50k_full.jsonl 文件中(如果安装了 TensorBoard,则同时生成 TFEvents 日志)。

输出目录的名称反映了训练配置。例如,00000-mydataset-auto1 表示基础配置auto1,即针对单 GPU 训练自动选择了超参数。基础配置由 --cfg 控制:

基础配置 说明
auto (默认) 根据分辨率和 GPU 数量自动选择合理的默认设置。这是新数据集的良好起点,但未必能带来最佳效果。
stylegan2 使用 1、2、4 或 8 个 GPU 复现 StyleGAN2 在 1024×1024 分辨率下的 F 配置结果。
paper256 使用 1、2、4 或 8 个 GPU 复现 FFHQ 和 LSUN Cat 数据集在 256×256 分辨率下的结果。
paper512 使用 1、2、4 或 8 个 GPU 复现 BreCaHAD 和 AFHQ 数据集在 512×512 分辨率下的结果。
paper1024 使用 1、2、4 或 8 个 GPU 复现 MetFaces 数据集在 1024×1024 分辨率下的结果。
cifar 使用 1 或 2 个 GPU 复现 CIFAR-10 数据集的优化配置结果。

训练配置还可以通过其他命令行选项进一步自定义:

  • --aug=noaug 禁用 ADA 增强。
  • --cond=1 启用条件式训练(需要带有标签的数据集)。
  • --mirror=1 通过水平翻转扩充数据集。即使启用了 ADA,这样做通常也有益处。
  • --resume=ffhq1024 --snap=10 从已在 1024×1024 分辨率下训练的 FFHQ 数据集进行迁移学习。
  • --resume=~/training-runs/<NAME>/network-snapshot-<INT>.pkl 继续之前的训练过程。
  • --gamma=10 覆盖 R1 正则化系数。我们建议为每个新数据集尝试几个不同的值。
  • --aug=ada --target=0.7 调整 ADA 目标值(默认为 0.6)。
  • --augpipe=blit 启用像素混合增强,但禁用其他所有增强方法。
  • --augpipe=bgcfnc 启用所有可用的增强方法(混合、几何变换、颜色调整、滤波、噪声和裁剪)。

完整选项列表请参阅 python train.py --help

预期训练时间

总的训练时间高度依赖于分辨率、GPU数量、数据集、期望的质量以及超参数。下表列出了达到不同训练阶段所需的预期壁挂时钟时间,单位为展示给判别器的真实图像千数(“kimg”):

分辨率 GPU数量 1000 kimg 25000 kimg 秒/kimg GPU显存 CPU内存
128x128 1 4小时05分 4天06小时 12.8–13.7 7.2 GB 3.9 GB
128x128 2 2小时06分 2天04小时 6.5–6.8 7.4 GB 7.9 GB
128x128 4 1小时20分 1天09小时 4.1–4.6 4.2 GB 16.3 GB
128x128 8 1小时13分 1天06小时 3.9–4.9 2.6 GB 31.9 GB
256x256 1 6小时36分 6天21小时 21.6–24.2 5.0 GB 4.5 GB
256x256 2 3小时27分 3天14小时 11.2–11.8 5.2 GB 9.0 GB
256x256 4 1小时45分 1天20小时 5.6–5.9 5.2 GB 17.8 GB
256x256 8 1小时24分 1天11小时 4.4–5.5 3.2 GB 34.7 GB
512x512 1 21小时03分 21天22小时 72.5–74.9 7.6 GB 5.0 GB
512x512 2 10小时59分 11天10小时 37.7–40.0 7.8 GB 9.8 GB
512x512 4 5小时29分 5天17小时 18.7–19.1 7.9 GB 17.7 GB
512x512 8 2小时48分 2天22小时 9.5–9.7 7.8 GB 38.2 GB
1024x1024 1 1天20小时 46天03小时 154.3–161.6 8.1 GB 5.3 GB
1024x1024 2 23小时09分 24天02小时 80.6–86.2 8.6 GB 11.9 GB
1024x1024 4 11小时36分 12天02小时 40.1–40.8 8.4 GB 21.9 GB
1024x1024 8 5小时54分 6天03小时 20.2–20.6 8.3 GB 44.7 GB

以上测量是在使用 NVIDIA Tesla V100 GPU 并采用默认设置(--cfg=auto --aug=ada --metrics=fid50k_full)的情况下进行的。“sec/kimg”显示了在 log.txt 中报告的原始训练性能的预期变化范围。“GPU mem”和“CPU mem”显示了观察到的最大内存消耗,不包括由 torch.backends.cudnn.benchmark 引起的初始峰值。

在典型情况下,需要 25000 kimg 或更多才能达到收敛,但大约 5000 kimg 时结果已经相当合理。1000 kimg 通常足以进行迁移学习,而迁移学习往往能显著加快收敛速度。下图展示了使用上述相同设置时,不同数据集随壁挂时间变化的示例收敛曲线:

训练曲线

注意:--cfg=auto 可作为超参数的一个合理初始猜测,但并不一定能够为特定数据集带来最佳效果。例如,在 1024×1024 分辨率下,对于 FFHQ-140k 数据集,--cfg=stylegan2 的 FID 值明显优于上文所示的结果。我们建议针对每个新数据集至少尝试几个不同的 --gamma 值。

质量指标

默认情况下,train.py 会在训练过程中自动计算每次导出的网络模型文件的 FID 值。我们建议定期检查 metric-fid50k_full.jsonl 文件(或 TensorBoard),以监控训练进度。如果需要,可以通过 --metrics=none 禁用自动计算,从而略微加快训练速度(约 3%–9%)。

此外,训练完成后还可以计算其他质量指标:

# 上一次训练运行:自动查找选项,将结果保存到 JSONL 文件。
python calc_metrics.py --metrics=pr50k3_full \
    --network=~/training-runs/00000-ffhq10k-res64-auto1/network-snapshot-000000.pkl

# 预训练网络模型文件:明确指定数据集,将结果输出到标准输出。
python calc_metrics.py --metrics=fid50k_full --data=~/datasets/ffhq.zip --mirror=1 \
    --network=https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/ffhq.pkl

第一个示例会自动查找训练配置,并执行与训练时指定了 --metrics=pr50k3_full 相同的操作。第二个示例则下载了一个预训练的网络模型文件,在这种情况下必须显式指定 --mirror--data 参数。

需要注意的是,许多指标在首次针对新数据集计算时会有较大的一次性开销(最长可达 30 分钟)。另外,每次评估都会使用不同的随机种子,因此多次计算同一指标可能会得到略有不同的结果。

我们在 ADA 论文中采用了以下指标。执行时间和 GPU 显存占用均基于一台 NVIDIA Tesla V100 GPU 在 1024×1024 分辨率下的情况:

指标 时间 GPU显存 描述
fid50k_full 13 分钟 1.8 GB 对完整数据集的 Fréchet inception 距离[1]
kid50k_full 13 分钟 1.8 GB 对完整数据集的 Kernel inception 距离[2]
pr50k3_full 13 分钟 4.1 GB 对完整数据集的精确率和召回率[3]
is50k 13 分钟 1.8 GB CIFAR-10 的 Inception 分数[4]

此外,还支持来自 StyleGANStyleGAN2 论文中的以下指标:

指标 时间 GPU显存 描述
fid50k 13 分钟 1.8 GB 对 5 万张真实图像的 Fréchet inception 距离
kid50k 13 分钟 1.8 GB 对 5 万张真实图像的 Kernel inception 距离
pr50k3 13 分钟 4.1 GB 对 5 万张真实图像的精确率和召回率
ppl2_wend 36 分钟 2.4 GB W 空间中端点至完整图像的感知路径长度[5]
ppl_zfull 36 分钟 2.4 GB Z 空间中完整路径裁剪后的感知路径长度
ppl_wfull 36 分钟 2.4 GB W 空间中完整路径裁剪后的感知路径长度
ppl_zend 36 分钟 2.4 GB Z 空间中端点裁剪后的感知路径长度
ppl_wend 36 分钟 2.4 GB W 空间中端点裁剪后的感知路径长度

参考文献:

  1. 通过双时间尺度更新规则训练的 GAN 收敛到局部纳什均衡,Heusel 等,2017 年
  2. 揭秘 MMD GAN,Bińkowski 等,2018 年
  3. 用于评估生成模型的改进精确率和召回率指标,Kynkäänniemi 等,2019 年
  4. 训练 GAN 的改进技术,Salimans 等,2016 年
  5. 面向生成对抗网络的基于风格的生成器架构,Karras 等,2018 年

许可证

版权所有 © 2021,NVIDIA Corporation。保留所有权利。

本作品根据 Nvidia 源代码许可证 提供。

引用

@inproceedings{Karras2020ada,
  title     = {有限数据下的生成对抗网络训练},
  author    = {Tero Karras、Miika Aittala、Janne Hellsten、Samuli Laine、Jaakko Lehtinen、Timo Aila},
  booktitle = {NeurIPS 会议论文集},
  year      = {2020}
}

开发

这是一个研究参考实现,被视为一次性代码发布。因此,我们不接受以拉取请求形式的外部代码贡献。

致谢

我们感谢 David Luebke 提出的有益意见;感谢 Tero Kuosmanen 和 Sabu Nadarajan 在计算基础设施方面的支持;以及感谢 Edgar Schönhfeld 在搭建无条件 BigGAN 方面提供的指导。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|今天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|昨天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

141.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|今天
开发框架图像Agent

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|今天
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|今天
开发框架图像Agent