PyTorch-StudioGAN

GitHub
3.5k 343 中等 3 次阅读 昨天NOASSERTION数据工具开发框架图像
AI 解读 由 AI 自动生成,仅供参考

StudioGAN 是一个基于 PyTorch 的开源库,致力于提供代表性生成对抗网络(GAN)的实现方案,支持条件与非条件图像生成。它主要为了解决机器学习研究中不同 GAN 模型实现细节不一致、难以公平对比的问题。通过统一的环境和模块化设计,StudioGAN 让研究人员能专注于算法创新而非底层代码调试。

StudioGAN 功能丰富,内置了 7 种主流 GAN 架构、9 种条件生成方法及多种评估指标,并提供了涵盖 GAN、自回归模型和扩散模型的大规模基准测试数据。用户只需通过 YAML 配置文件即可灵活组合不同的损失函数、正则化模块和增强策略,极大提升了实验效率。同时,StudioGAN 支持从单 GPU 到多节点分布式训练等多种加速方式,并开放了部分预训练模型和训练日志。

StudioGAN 特别适合深度学习研究人员、算法工程师以及需要复现或改进图像生成模型的技术开发者。无论是进行新想法的快速验证,还是开展全面的模型性能分析,StudioGAN 都能提供稳定且可复现的实验环境,助力生成式 AI 领域的探索与发展。

使用场景

某电商公司算法团队正在研发虚拟试衣系统,急需对比多种生成对抗网络在商品图合成任务上的表现。

没有 PyTorch-StudioGAN 时

  • 需要从零手写多种 GAN 架构代码,工程师需花费数周时间重复造轮子。
  • 不同模型依赖库版本混乱,导致训练环境不一致,结果难以公平对比。
  • 缺乏标准化的评估流程,无法量化生成图像的真实度与多样性差异。
  • 调试过程中常因隐藏的技巧或参数设置问题,导致实验结果无法复现。

使用 PyTorch-StudioGAN 后

  • 直接集成 7 种主流 GAN 架构实现,无需编写底层网络结构代码。
  • 通过 YAML 配置文件灵活组合模块,轻松切换不同变体进行横向对比。
  • 内置 IS、FID 等 8 种评估指标及多骨干网络,自动输出标准化性能报告。
  • 提供预训练模型与统一计算环境,确保实验结果高度可复现且训练高效。

PyTorch-StudioGAN 将工程负担转化为配置选择,让研究人员能专注于算法创新本身,大幅缩短模型选型周期。

运行环境要求

操作系统
  • 未说明
GPU

需要 NVIDIA GPU,CUDA 11.6+, 显存未说明

内存

未说明

依赖
notes推荐使用官方提供的 Docker 镜像 (alex4727/experiment:pytorch113_cuda116),运行容器时建议设置共享内存 (--shm-size 128g)。预训练模型和日志可在 Hugging Face Hub 下载。
python未说明
torch>=1.7
torchvision
kornia
timm
wandb
pandas
scikit-learn
scipy
matplotlib
PyYaml
PyTorch-StudioGAN hero image

快速开始


StudioGAN 是一个 PyTorch 库,提供了代表性生成对抗网络(Generative Adversarial Networks, GANs)的实现,用于条件/无条件图像生成。StudioGAN 旨在为现代 GANs 提供一个统一的实验平台,以便机器学习研究人员能够轻松比较和分析新想法。

此外,StudioGAN 提供了一个前所未有的生成模型基准测试。该基准包括来自 GANs(BigGAN-Deep, StyleGAN-XL)、自回归模型(auto-regressive models, MaskGIT, RQ-Transformer)和扩散模型(Diffusion models, LSGM++, CLD-SGM, ADM-G-U)的结果。

新闻

  • StudioGAN 论文于 2023 年被 IEEE 模式分析与机器智能汇刊(IEEE Transactions on Pattern Analysis and Machine Intelligence, TPAMI)接收。
  • 我们提供了所有使用的检查点(checkpoints):请访问 Hugging Face Hub
  • 我们的新论文 "StudioGAN: A Taxonomy and Benchmark of GANs for Image Synthesis" 已在 arXiv 上公开。
  • StudioGAN 提供了 7 种 GAN 架构、9 种条件设置方法、4 种对抗损失、13 种正则化模块、3 种可微分增强、8 种评估指标和 5 种评估骨干网络的实现。
  • StudioGAN 同时支持标准指标和架构友好型指标(IS, FID, PRDC, IFID),并配有全面的基准测试。
  • StudioGAN 提供 wandb 日志和预训练模型(即将就绪)。

发布说明 (v.0.4.0)

  • 我们检查了已实现 GANs 的可复现性。
  • 我们提供了 Baby、Papa 和 Grandpa ImageNet 数据集,其中图像使用抗锯齿和高精度重采样器进行处理。
  • StudioGAN 在标准数据集(CIFAR10, ImageNet, AFHQv2, 和 FFHQ)上提供了专门建立的基准测试。
  • StudioGAN 支持 InceptionV3, ResNet50, SwAV, DINO, 和 Swin Transformer 骨干网络用于 GAN 评估。

功能特性

  • 覆盖范围: StudioGAN 是一个自包含的库,提供了 7 种 GAN 架构、9 种条件设置方法、4 种对抗损失、13 种正则化模块、6 种增强模块、8 种评估指标和 5 种评估骨干网络。基于这些配置,我们构建了 30 种代表性的 GANs。
  • 灵活性: 每个模块化选项都通过配置文件系统管理,该系统通过 YAML 文件工作,因此用户可以通过混合搭配不同的选项来训练大量组合的 GANs。
  • 可复现性: 使用 StudioGAN,用户可以在统一的计算环境中比较和调试各种 GANs,而无需担心隐藏的细节和技巧。
  • 丰富性: StudioGAN 提供了大量的预训练 GAN 模型、训练日志和评估结果。
  • 多功能性: StudioGAN 支持 5 种加速方法,配合同步批归一化(batch normalization)进行训练:单 GPU 训练、数据并行训练(data-parallel training, DP)、分布式数据并行训练(distributed data-parallel training, DDP)、多节点分布式数据并行训练(multi-node distributed data-parallel training, MDDP)和混合精度训练(mixed-precision training)。

已实现的生成对抗网络 (GAN)

方法 发表场合 架构 GC (生成器条件) DC (判别器条件) 损失函数 EMA (指数移动平均)
DCGAN arXiv'15 DCGAN/ResNetGAN1 N/A N/A 标准
InfoGAN NIPS'16 DCGAN/ResNetGAN1 N/A N/A 标准
LSGAN ICCV'17 DCGAN/ResNetGAN1 N/A N/A 最小二乘
GGAN arXiv'17 DCGAN/ResNetGAN1 N/A N/A 铰链
WGAN-WC ICLR'17 ResNetGAN N/A N/A 瓦瑟斯坦
WGAN-GP NIPS'17 ResNetGAN N/A N/A 瓦瑟斯坦
WGAN-DRA arXiv'17 ResNetGAN N/A N/A 瓦瑟斯坦
ACGAN-Mod2 - ResNetGAN cBN AC 铰链
PDGAN ICLR'18 ResNetGAN cBN PD 铰链
SNGAN ICLR'18 ResNetGAN cBN PD 铰链
SAGAN ICML'19 ResNetGAN cBN PD 铰链
TACGAN Neurips'19 BigGAN cBN TAC 铰链
LGAN ICML'19 ResNetGAN N/A N/A 标准
Unconditional BigGAN ICLR'19 BigGAN N/A N/A 铰链
BigGAN ICLR'19 BigGAN cBN PD 铰链
BigGAN-Deep-CompareGAN ICLR'19 BigGAN-Deep CompareGAN cBN PD 铰链
BigGAN-Deep-StudioGAN - BigGAN-Deep StudioGAN cBN PD 铰链
StyleGAN2 CVPR' 20 StyleGAN2 cAdaIN SPD 逻辑
CRGAN ICLR'20 BigGAN cBN PD 铰链
ICRGAN AAAI'21 BigGAN cBN PD 铰链
LOGAN arXiv'19 ResNetGAN cBN PD 铰链
ContraGAN Neurips'20 BigGAN cBN 2C 铰链
MHGAN WACV'21 BigGAN cBN MH MH
BigGAN + DiffAugment Neurips'20 BigGAN cBN PD 铰链
StyleGAN2 + ADA Neurips'20 StyleGAN2 cAdaIN SPD 逻辑
BigGAN + LeCam CVPR'2021 BigGAN cBN PD 铰链
ReACGAN Neurips'21 BigGAN cBN D2D-CE 铰链
StyleGAN2 + APA Neurips'21 StyleGAN2 cAdaIN SPD 逻辑
StyleGAN3-t Neurips'21 StyleGAN3 cAaIN SPD 逻辑
StyleGAN3-r Neurips'21 StyleGAN3 cAaIN SPD 逻辑
ADCGAN ICML'22 BigGAN cBN ADC 铰链

GC/DC 表示我们将标签信息注入生成器或判别器的方法。

EMA: 对生成器进行指数移动平均更新。 cBN : 条件批归一化。 cAdaIN: 自适应实例归一化的条件版本。 AC : 辅助分类器。 PD : 投影判别器。 TAC: 双辅助分类器。 SPD : 针对 StyleGAN 修改的 PD。 2C : 条件对比损失。 MH : 多铰链损失。 ADC : 辅助判别分类器。 D2D-CE : 数据到数据交叉熵。

评估指标

方法 发表场合 架构
Inception Score (IS) Neurips'16 InceptionV3
Frechet Inception Distance (FID) Neurips'17 InceptionV3
Improved Precision & Recall Neurips'19 InceptionV3
Classifier Accuracy Score (CAS) Neurips'19 InceptionV3
Density & Coverage ICML'20 InceptionV3
Intra-class FID - InceptionV3
SwAV FID ICLR'21 SwAV
Clean metrics (IS, FID, PRDC) CVPR'22 InceptionV3
Architecture-friendly metrics (IS, FID, PRDC) arXiv'22 Not limited to InceptionV3

训练与推理技术

方法 发表地 目标架构
FreezeD CVPRW'20 除 StyleGAN2 外
Top-K Training Neurips'2020 -
DDLS Neurips'2020 -
SeFa CVPR'2021 BigGAN

可复现性

我们通过将 StudioGAN 中实现的生成对抗网络(GANs)的 IS(Inception Score)和 FID(Fréchet Inception Distance)指标与原始论文中的结果进行比较,来检查其可复现性。我们发现我们的平台成功复现了大多数代表性 GAN,但 PD-GAN、ACGAN、LOGAN、SAGAN 和 BigGAN-Deep 除外。FQ 指 Flickr-Faces-HQ 数据集(FFHQ)。ImageNet、AFHQv2 和 FQ 数据集的分辨率分别为 128、512 和 1024。

环境要求

首先,安装符合您环境的 PyTorch(至少 1.7 版本):

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

然后,使用以下命令安装其余库:

pip install tqdm ninja h5py kornia matplotlib pandas sklearn scipy seaborn wandb PyYaml click requests pyspng imageio-ffmpeg timm

使用 Docker,您可以使用(更新于 2022 年 12 月 14 日):

docker pull alex4727/experiment:pytorch113_cuda116

这是我们创建名为 "StudioGAN" 容器的命令。

docker run -it --gpus all --shm-size 128g --name StudioGAN -v /path_to_your_folders:/root/code --workdir /root/code alex4727/experiment:pytorch113_cuda116 /bin/zsh

如果您的 NVIDIA 驱动程序版本不满足要求,可以尝试在上面的命令中添加以下内容。

--env NVIDIA_DISABLE_REQUIRE=true

数据集

data
└── ImageNet, Tiny_ImageNet, Baby ImageNet, Papa ImageNet, or Grandpa ImageNet
    ├── train
    │   ├── cls0
    │   │   ├── train0.png
    │   │   ├── train1.png
    │   │   └── ...
    │   ├── cls1
    │   └── ...
    └── valid
        ├── cls0
        │   ├── valid0.png
        │   ├── valid1.png
        │   └── ...
        ├── cls1
        └── ...

快速开始

开始之前,用户应使用个人 API 密钥登录 wandb(Weights & Biases)。

wandb login PERSONAL_API_KEY

从 0.3.0 版本起,您可以通过 -metrics 选项定义要使用哪些评估指标。未指定选项时默认仅计算 FID。 即 -metrics is fid 仅计算 IS 和 FID,而 -metrics none 跳过评估。

  • 使用 GPU 0 训练(-t)并评估 CONFIG_PATH 中定义的模型的 IS、FID、Prc、Rec、Dns、Cvg(-metrics is fid prdc)。
CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -metrics is fid prdc -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
  • 使用 PIL.LANCZOS 过滤器(--pre_resizer lanczos)对图像进行预处理以用于训练和评估。然后,使用 GPU 0 训练(-t)并评估 CONFIG_PATH 中定义的模型的友好型 IS、友好型 FID、友好型 Prc、友好型 Rec、友好型 Dns、友好型 Cvg(-metrics is fid prdc --post_resizer clean)。
CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -metrics is fid prdc --pre_resizer lanczos --post_resizer clean -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
  • 通过 DataParallel 使用 GPUs (0, 1, 2, 3) 训练(-t)并评估 CONFIG_PATH 中定义的模型的 FID。评估 FID 不需要(-metrics)参数!
CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
  • 通过 DistributedDataParallel 使用 GPUs (0, 1, 2, 3)Synchronized batch norm(同步批归一化)和 Mixed precision(混合精度)训练(-t)并跳过评估(-metrics noneCONFIG_PATH 中定义的模型。
export MASTER_ADDR="localhost"
export MASTER_PORT=2222
CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -metrics none -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -DDP -sync_bn -mpc 

尝试运行 python3 src/main.py 查看可用选项。

支持的训练/测试技术

  • 将全部数据加载到主内存中 (-hdf5 -l)

    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -hdf5 -l -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    
  • 分布式数据并行 (DistributedDataParallel) (请参阅 此处) (-DDP)

    ### NODE_0, 4_GPUs, All ports are open to NODE_1
    ~/code>>> export MASTER_ADDR=PUBLIC_IP_OF_NODE_0
    ~/code>>> export MASTER_PORT=AVAILABLE_PORT_OF_NODE_0
    ~/code/PyTorch-StudioGAN>>> CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -DDP -tn 2 -cn 0 -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    
    ### NODE_1, 4_GPUs, All ports are open to NODE_0
    ~/code>>> export MASTER_ADDR=PUBLIC_IP_OF_NODE_0
    ~/code>>> export MASTER_PORT=AVAILABLE_PORT_OF_NODE_0
    ~/code/PyTorch-StudioGAN>>> CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -DDP -tn 2 -cn 1 -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    
  • 混合精度训练 (-mpc)

    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -mpc -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    
  • 更改批归一化 (Batch Normalization) 统计信息

    # Synchronized batchNorm (-sync_bn)
    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -sync_bn -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    
    # Standing statistics (-std_stat, -std_max, -std_step)
    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -std_stat -std_max STD_MAX -std_step STD_STEP -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH
    
    # Batch statistics (-batch_stat)
    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -batch_stat -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH
    
  • 截断技巧

    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py --truncation_factor TRUNCATION_FACTOR -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH
    
  • DDLS (-lgv -lgv_rate -lgv_std -lgv_decay -lgv_decay_steps -lgv_steps)

    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -lgv -lgv_rate LGV_RATE -lgv_std LGV_STD -lgv_decay LGV_DECAY -lgv_decay_steps LGV_DECAY_STEPS -lgv_steps LGV_STEPS -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH
    
  • 冻结判别器 (Discriminator) (-freezeD)

    CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t --freezeD FREEZED -ckpt SOURCE_CKPT -cfg TARGET_CONFIG_PATH -data DATA_PATH -save SAVE_PATH
    

分析生成的图像

StudioGAN 支持 图像可视化、K 近邻分析、线性插值、频率分析、t-SNE 分析和语义因子分解。所有结果将保存在 SAVE_DIR/figures/RUN_NAME/*.png 中。

  • 图像可视化
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -v -cfg CONFIG_PATH -ckpt CKPT -save SAVE_DIR

  • K 近邻分析 (我们固定 K=7,第一列中的图像为生成的图像。)
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -knn -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH

  • 线性插值 (仅适用于条件 Big ResNet 模型)
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -itp -cfg CONFIG_PATH -ckpt CKPT -save SAVE_DIR

  • 频率分析
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -fa -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH

  • t-SNE 分析
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -tsne -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH

  • BigGAN 的语义因子分解
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -sefa -sefa_axis SEFA_AXIS -sefa_max SEFA_MAX -cfg CONFIG_PATH -ckpt CKPT -save SAVE_PATH

训练 GAN (生成对抗网络)

StudioGAN 支持从 DCGAN 到 StyleGAN3-r 的 30 种代表性 GAN 的训练。

我们根据数据集和模型使用了不同的脚本,如下所示:

CIFAR10

CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -hdf5 -l -std_stat -std_max STD_MAX -std_step STD_STEP -metrics is fid prdc -ref "train" -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --post_resizer "friendly" --eval_backbone "InceptionV3_tf"

使用 StyleGAN2/3 的 CIFAR10

CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -hdf5 -l -metrics is fid prdc -ref "train" -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --post_resizer "friendly" --eval_backbone "InceptionV3_tf"

Baby/Papa/Grandpa ImageNet 和 ImageNet

CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -hdf5 -l -sync_bn -std_stat -std_max STD_MAX -std_step STD_STEP -metrics is fid prdc -ref "train" -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer "lanczos" --post_resizer "friendly" --eval_backbone "InceptionV3_tf"

AFHQv2

export MASTER_ADDR="localhost"
export MASTER_PORT=8888
CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -metrics is fid prdc -ref "train" -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer "lanczos" --post_resizer "friendly" --eval_backbone "InceptionV3_tf"

FFHQ

export MASTER_ADDR="localhost"
export MASTER_PORT=8888
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python3 src/main.py -t -metrics is fid prdc -ref "train" -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer "lanczos" --post_resizer "friendly" --eval_backbone "InceptionV3_tf"

指标

StudioGAN 支持 Inception Score(IS,Inception 评分)、Frechet Inception Distance(FID,弗雷歇 Inception 距离)、Improved Precision and Recall(Prc, Rec,改进的精确率和召回率)、Density and Coverage(Dns, Cvg,密度和覆盖率)、Intra-Class FID(类内 FID)、Classifier Accuracy Score(分类器准确率分数)。用户可以使用 -iFID, -GAN_train, and -GAN_test 选项分别获取 Intra-Class FID(类内 FID), Classifier Accuracy Score(分类器准确率分数) 分数。

用户可以通过 --eval_backbone ResNet50_torch, SwAV_torch, DINO_torch, or Swin-T_torch 选项将评估 backbone(骨干网络)从 InceptionV3 更改为 ResNet50、SwAV、DINO 或 Swin Transformer。

此外,用户可以使用 --post_resizer clean or friendly 选项,通过干净的或架构友好的 resizer(重采样器)来计算指标。

1. Inception Score (IS)

Inception Score(IS,Inception 评分)是一种用于衡量 GAN 生成高保真度和多样性图像程度的指标。计算 IS 需要预训练的 Inception-V3 网络。注意,我们不会将数据集分成十折来计算十次 IS。

2. Frechet Inception Distance (FID)

FID(弗雷歇 Inception 距离)是广泛用于评估 GAN 模型性能的指标。计算 FID 需要预训练的 Inception-V3 网络,现代方法通常使用基于 Tensorflow 的 FID。StudioGAN 利用基于 PyTorch 的 FID 在相同的 PyTorch 环境中测试 GAN 模型。我们展示了基于 PyTorch 的 FID 实现提供了与 TensorFlow 实现 几乎相同的结果(参见 ContraGAN 论文 的附录 F)。

3. Improved Precision and Recall (Prc, Rec)

改进的精确率和召回率是为弥补精确率和召回率的缺点而开发的。与 IS、FID 一样,计算改进的精确率和召回率需要预训练的 Inception-V3 模型。StudioGAN 使用 密度和覆盖率分数的开发者提供的 PyTorch 实现

4. Density and Coverage (Dns, Cvg)

密度和覆盖率指标可以使用预训练的 Inception-V3 模型来估计生成图像的保真度和多样性。这些指标已知对异常值具有鲁棒性,并且可以检测真实和虚假分布是否相同。StudioGAN 使用 作者的官方 PyTorch 实现,并遵循作者关于超参数选择的建议。

基准测试

※ 如果您发现任何错误的实现、漏洞或报告的分数有误,我们始终欢迎您的贡献。

我们报告了 GAN 的最佳 IS、FID、改进的精确率 & 召回率,以及密度 & 覆盖率。

要下载 StudioGAN 中报告的所有检查点(checkpoints),请 点击这里(Hugging Face Hub)。

您可以通过添加 -ckpt CKPT_PATH 选项以及相应的配置路径 -cfg CORRESPONDING_CONFIG_PATH 来评估检查点。

1. StudioGAN 中的 GAN

CIFAR10、Baby ImageNet、Papa ImageNet、Grandpa ImageNet、ImageNet、AFHQv2 和 FQ 的分辨率分别为 32、64、64、64、128、512 和 1024。

对于 Frechet Inception Distance (FID)、Precision、Recall、Density 和 Coverage 的计算,我们使用与训练图像数量相同的生成图像数量。对于使用 Baby/Papa/Grandpa ImageNet 和 ImageNet 的实验,我们例外地使用 50k 张假图像,并以完整的训练集作为真实图像。

参考数据集的所有特征(features)和矩(moments)可以通过 特征 下载。

2. 其他生成模型

ImageNet-128 和 ImageNet 256 的分辨率分别为 128 和 256。

用于基准测试的所有图像可以通过 OneDrive 下载(即将上传)。

评估预保存的图像文件夹

  • 使用 GPU (0,...,N) 评估保存在 DSET1 和 DSET2 中的图像文件夹(已预处理)的 IS、FID、Prc、Rec、Dns、Cvg(-metrics is fid prdc)。
CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --dset1 DSET1 --dset2 DSET2
  • 使用预计算的特征(--dset1_feats DSET1_FEATS)、dset1 的矩(--dset1_moments DSET1_MOMENTS)以及 GPU (0,...,N) 评估保存在 DSET2 中的图像文件夹的 IS、FID、Prc、Rec、Dns、Cvg(-metrics is fid prdc)。
CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --dset1_feats DSET1_FEATS --dset1_moments DSET1_MOMENTS --dset2 DSET2
  • 通过 DistributedDataParallel(分布式数据并行) 使用 GPU (0,...,N) 评估保存在 DSET1 和 DSET2 中的图像文件夹的 friendly-IS、friendly-FID、friendly-Prc、friendly-Rec、friendly-Dns、friendly-Cvg(-metrics is fid prdc --post_resizer friendly)。
export MASTER_ADDR="localhost"
export MASTER_PORT=2222
CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --post_resizer friendly --dset1 DSET1 --dset2 DSET2 -DDP

StudioGAN 感谢以下仓库的代码共享

[MIT 许可证] 同步批归一化 (Synchronized BatchNorm): https://github.com/vacancy/Synchronized-BatchNorm-PyTorch

[MIT 许可证] 自注意力模块 (Self-Attention module): https://github.com/voletiv/self-attention-GAN-pytorch

[MIT 许可证] DiffAugment: https://github.com/mit-han-lab/data-efficient-gans

[MIT_许可证] PyTorch 改进的精确率和召回率 (Improved Precision and Recall): https://github.com/clovaai/generative-evaluation-prdc

[MIT_许可证] PyTorch 密度和覆盖率 (Density and Coverage): https://github.com/clovaai/generative-evaluation-prdc

[MIT 许可证] PyTorch clean-FID: https://github.com/GaParmar/clean-fid

[NVIDIA 源代码许可证] StyleGAN2: https://github.com/NVlabs/stylegan2

[NVIDIA 源代码许可证] 自适应判别器增强 (Adaptive Discriminator Augmentation): https://github.com/NVlabs/stylegan2

[Apache 许可证] PyTorch FID: https://github.com/mseitzer/pytorch-fid

许可证

PyTorch-StudioGAN 是一个基于 MIT 许可证 (MIT) 的开源库。然而,该库的部分内容遵循不同的许可条款:StyleGAN2、StyleGAN2-ADA 和 StyleGAN3 采用 NVIDIA 源代码许可证 授权,而 PyTorch-FID 采用 Apache 许可证 授权。

引用

StudioGAN 是出于以下研究项目而建立的。如果您使用 StudioGAN,请引用我们的工作。

@article{kang2023StudioGANpami,
  title   = {{StudioGAN: A Taxonomy and Benchmark of GANs for Image Synthesis}},
  author  = {MinGuk Kang and Joonghyuk Shin and Jaesik Park},
  journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI)},
  year    = {2023}
}
@inproceedings{kang2021ReACGAN,
  title   = {{Rebooting ACGAN: Auxiliary Classifier GANs with Stable Training}},
  author  = {Minguk Kang, Woohyeon Shim, Minsu Cho, and Jaesik Park},
  journal = {Conference on Neural Information Processing Systems (NeurIPS)},
  year    = {2021}
}
@inproceedings{kang2020ContraGAN,
  title   = {{ContraGAN: Contrastive Learning for Conditional Image Generation}},
  author  = {Minguk Kang and Jaesik Park},
  journal = {Conference on Neural Information Processing Systems (NeurIPS)},
  year    = {2020}
}

[1] Tiny ImageNet 上的实验使用 ResNet 架构而非 CNN 进行。

[2] 我们对 ACGAN (ICML'17) 的重新实现,并进行了轻微修改,这为使用 CIFAR10 的实验带来了显著的性能提升。

版本历史

v.0.4.02022/07/05
v.0.3.02021/11/05
v0.2.02021/02/23
v0.1.02020/12/07

常见问题

相似工具推荐

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 真正成长为懂上

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

ComfyUI

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

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

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

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

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