← 开源
Zhendong-Wang

Diffusion-GAN

Official PyTorch implementation for paper: Diffusion-GAN: Training GANs with Diffusion

Model DevelopmentArchitecturePython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
709
Star
75
Fork
+0
本周
2
贡献者
创建于 2022-06-15 · 更新于 2026-10-09 · 今日第 14714 名
主要开发者
Zhendong-WangJegZheng

Zhendong-Wang/Diffusion-GAN 排名第 14,714,有 709 个星标。

同类别比较

Zhendong-Wang/Diffusion-GAN 排名第 14,714,此处有 8 个同类条目;MarioSieg/magnetron 排名第 14,713。

同类别比较
名称排名指标
kendricktan/suiron14,707
语言:
Python
星标数:
710
分叉数:
77
简介:
Machine Learning for RC Cars
szq0214/DSOD14,711
语言:
Python
星标数:
710
分叉数:
204
简介:
DSOD: Learning Deeply Supervised Object Detectors from Scratch. In ICCV 2017.
titu1994/DenseNet14,712
语言:
Python
星标数:
710
分叉数:
291
简介:
DenseNet implementation in Keras
MarioSieg/magnetron14,713
语言:
C
星标数:
709
分叉数:
39
简介:
A zero-dependency ML framework in C with a modern Python API for full control over execution and memory.
chainer/chainer-chemistry14,715
语言:
Python
星标数:
709
分叉数:
132
简介:
Chainer Chemistry: A Library for Deep Learning in Biology and Chemistry
facebookresearch/QuaterNet14,717
语言:
Jupyter Notebook
星标数:
709
分叉数:
85
简介:
Proposes neural networks that can generate animation of virtual characters for different actions.
kwsong0113/diffusion-forcing-transformer14,719
语言:
Python
星标数:
709
分叉数:
41
简介:
[ICML 2025] Official PyTorch Implementation of "History-Guided Video Diffusion"
pymc-devs/pymc414,721
语言:
Jupyter Notebook
星标数:
709
分叉数:
112
简介:
(Deprecated) Experimental PyMC interface for TensorFlow Probability. Official work on this project has been discontinued.
关键参数与规格
关键参数与规格
参数值
语言Python
类别Model Development
子类别Architecture
关键词Image production
星标数709
分叉数75
贡献者2
创建日期2022-06-15
更新日期2026-10-09
1 天星标数0
7 天星标数0
排名14,714
上次排名14,559
排名变化-155
7 天星标排名14,617
上次 7 天星标排名17,645
7 天星标排名变化3,028
总星标排名14,744
上次总星标排名14,719
总星标排名变化-25
国家China
README 摘录

Diffusion-GAN — Official PyTorch implementation **Diffusion-GAN: Training GANs with Diffusion** Zhendong Wang, Huangjie Zheng, Pengcheng He, Weizhu Chen and Mingyuan Zhou Abstract: *For stable training of generative adversarial networks (GANs), injecting instance noise into the input of the discriminator is considered as a theoretically sound solution, which, however, has not yet delivered on its promise in practice. This paper introduces Diffusion-GAN that employs a Gaussian mixture distribution, defined over all the diffusion steps of a forward diffusion

chain, to inject instance noise. A random sample from the mixture, which is diffused from an observed or generated data, is fed as the input to the discriminator. The generator is updated by backpropagating its gradient through the forward diffusion chain, whose length is adaptively adjusted to control the maximum noise-to-data ratio allowed at each training step. Theoretical analysis verifies the soundness of the proposed Diffusion-GAN, which provides model- and domain-agnostic differentiable augmentation. A rich set

of experiments on diverse datasets show that DiffusionGAN can provide stable and data-efficient GAN training, bringing consistent performance improvement over strong GAN baselines for synthesizing photorealistic images. * ToDos [x] Initial code release [x] Providing pretrained models Build your Diffusion-GAN Here, we explain how to train general GANs with diffusion. plug-in as simple as a data augmentation method; b. training GANs on diffusion chains with a timestep-dependent discriminator. Currently, we didn't find significant empirical differences of the

two approaches, while the second approach has stronger theoretical guarantees. We suspect when advanced timestep-dependent structure is applied in the discriminator, the second approach could become better, and we left that for future study. Simple Plug-in Design a proper diffusion process based on the (example) file Apply diffusion on the inputs of discriminators, Add adaptiveness of diffusion into your training iterations Full Version Add diffusion timestep as an input for discriminators . You may need some modifications in your

discriminator architecture. The other steps are the same as Simple Plug-in. Note that since discriminator depends on timesteps, you need to collect . Train our Diffusion-GAN Requirements In each folder, we provide a for preparing the running environments. Note here to fit newest PyTorch versions, I made some change in folder. The performance might have some small perturbations due to different versions of PyTorch. The provided checkpoints were trained on old environment inherited from StyleGAN2-ADA, and the old

environment is detailed as follows: 64-bit Python 3. Data Preparation In our paper, we trained our model on CIFAR-10 (32 x 32), STL-10 (64 x 64), LSUN (256 x 256), AFHQ (512 x 512) and FFHQ (1024 x 1024). You can download the datasets we used in our paper at their respective websites. To prepare the dataset at the respective resolution, run for example Training We show the training commands that we used below. In most cases

, the training commands are similar, so below we use CIFAR-10 dataset as an example: For Diffusion-GAN, For Diffusion

常见问题

记录了多少星标和分叉?

Zhendong-Wang/Diffusion-GAN 有 709 个星标和 75 个分叉。

仓库排名是多少?

Zhendong-Wang/Diffusion-GAN 排名第 14,714。

记录的语言和类别是什么?

Zhendong-Wang/Diffusion-GAN 有 709 个星标,语言为 Python,类别为 Model Development。

哪个仓库排名最接近?

Zhendong-Wang/Diffusion-GAN 与 MarioSieg/magnetron 比较,后者排名第 14,713,有 709 个星标。

README

Diffusion-GAN — Official PyTorch implementation

Diffusion-GAN: Training GANs with Diffusion

Zhendong Wang, Huangjie Zheng, Pengcheng He, Weizhu Chen and Mingyuan Zhou

https://arxiv.org/abs/2206.02262

Abstract: For stable training of generative adversarial networks (GANs), injecting instance noise into the input of the discriminator is considered as a theoretically sound solution, which, however, has not yet delivered on its promise in practice. This paper introduces Diffusion-GAN that employs a Gaussian mixture distribution, defined over all the diffusion steps of a forward diffusion chain, to inject instance noise. A random sample from the mixture, which is diffused from an observed or generated data, is fed as the input to the discriminator. The generator is updated by backpropagating its gradient through the forward diffusion chain, whose length is adaptively adjusted to control the maximum noise-to-data ratio allowed at each training step. Theoretical analysis verifies the soundness of the proposed Diffusion-GAN, which provides model- and domain-agnostic differentiable augmentation. A rich set of experiments on diverse datasets show that DiffusionGAN can provide stable and data-efficient GAN training, bringing consistent performance improvement over strong GAN baselines for synthesizing photorealistic images.

ToDos

  • [x] Initial code release
  • [x] Providing pretrained models

Build your Diffusion-GAN

Here, we explain how to train general GANs with diffusion. We provide two ways: a. plug-in as simple as a data augmentation method; b. training GANs on diffusion chains with a timestep-dependent discriminator. Currently, we didn't find significant empirical differences of the two approaches, while the second approach has stronger theoretical guarantees. We suspect when advanced timestep-dependent structure is applied in the discriminator, the second approach could become better, and we left that for future study.

Simple Plug-in

  • Design a proper diffusion process based on the diffusion.py (example) file
  • Apply diffusion on the inputs of discriminators, logits = Discriminator(Diffusion(gen/real_images))
  • Add adaptiveness of diffusion into your training iterations
if update_diffusion:  # batch_idx % ada_interval == 0
    adjust = np.sign(sign(Discriminator(real_images)) - ada_target) * C  # C = (batch_size * ada_interval) / (ada_kimg * 1000)
    diffusion.p = (diffusion.p + adjust).clip(min=0., max=1.)
    diffusion.update_T()

Full Version

  • Add diffusion timestep t as an input for discriminators logits = Discriminator(images, t). You may need some modifications in your discriminator architecture.
  • The other steps are the same as Simple Plug-in. Note that since discriminator depends on timesteps, you need to collect t.
diffused_images, t = Diffusion(images)
logits = Discrimnator(diffused_images, t)

Train our Diffusion-GAN

Requirements

In each folder, we provide a environment.yml for preparing the running environments. Note here to fit newest PyTorch versions, I made some change in torch_utils folder. The performance might have some small perturbations due to different versions of PyTorch. The provided checkpoints were trained on old environment inherited from StyleGAN2-ADA, and the old environment is detailed as follows:

  • 64-bit Python 3.7 and PyTorch 1.7.1/1.8.1. See https://pytorch.org/ for PyTorch install instructions.
  • CUDA toolkit 11.0 or later.
  • Python libraries: pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3.

Data Preparation

In our paper, we trained our model on CIFAR-10 (32 x 32), STL-10 (64 x 64), LSUN (256 x 256), AFHQ (512 x 512) and FFHQ (1024 x 1024). You can download the datasets we used in our paper at their respective websites. To prepare the dataset at the respective resolution, run for example

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

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

Training

We show the training commands that we used below. In most cases, the training commands are similar, so below we use CIFAR-10 dataset as an example:

For Diffusion-GAN,

python train.py --outdir=training-runs --data="~/cifar10.zip" --gpus=4 --cfg cifar --kimg 50000 --aug no --target 0.6 --noise_sd 0.05 --ts_dist priority

For Diffusion-ProjectedGAN

python train.py --outdir=training-runs --data="~/cifar10.zip" --gpus=4 --batch 64 --batch-gpu=16 --cfg fastgan --kimg 50000 --target 0.45 --d_pos first --noise_sd 0.5

For Diffusion-InsGen

python train.py --outdir=training-runs --data="~/afhq-wild.zip" --gpus=8 --cfg paper512 --kimg 25000

We follows the config setting from StyleGAN2-ADA and refer to them for more details. The other major hyperparameters are listed and discussed below:

  • --target the discriminator target, which balances the level of diffusion intensity.
  • --aug domain-specific image augmentation, such as ADA and Differentiable Augmentation, which is used for evaluate complementariness with diffusion.
  • --noise_sd diffusion noise standard deviation, which is set as 0.05 in our case.
  • --ts_dist t sampling distribution, $\pi(t)$ in paper.

We evaluated two t sampling distribution ['priority', 'uniform'], where 'priority' denotes the Equation (11) in paper and 'uniform' denotes random sampling. In most cases, priority works slightly better, while in some cases, such as FFHQ, 'uniform' is better.

Sampling and Evaluation with our checkpoints

We provide our Diffusion-GAN checkpoints on our Hugging Face page. We copy and paste the links below for quick access.

Model Dataset Resolution FID Checkpoint
Diffusion-StyleGAN2 CIFAR-10 32x32 3.19 download
Diffusion-StyleGAN2 CelebA 64x64 1.69 download
Diffusion-StyleGAN2 STL-10 64x64 11.53 download
Diffusion-StyleGAN2 LSUN-Bedroom 256x256 3.65 download
Diffusion-StyleGAN2 LSUN-Church 256x256 3.17 download
Diffusion-StyleGAN2 FFHQ 1024x1024 2.83 download
Diffusion-ProjectedGAN CIFAR-10 32x32 2.54 download
Diffusion-ProjectedGAN STL-10 64x64 6.91 download
Diffusion-ProjectedGAN LSUN-Bedroom 256x256 1.43 download
Diffusion-ProjectedGAN LSUN-Church 256x256 1.85 download
Diffusion-InsGen AFHQ-Cat 512x512 2.40 download
Diffusion-InsGen AFHQ-Dog 512x512 4.83 download
Diffusion-InsGen AFHQ-Wild 512x512 1.51 download

To generate samples, run the following commands:

# Generate FFHQ with pretrained Diffusion-StyleGAN2
python generate.py --outdir=out --seeds=1-100 \
    --network=https://tsciencescu.blob.core.windows.net/projectshzheng/DiffusionGAN/diffusion-stylegan2-ffhq.pkl

# Generate LSUN-Church with pretrained Diffusion-ProjectedGAN
python gen_images.py --outdir=out --seeds=1-100 \
    --network=https://tsciencescu.blob.core.windows.net/projectshzheng/DiffusionGAN/diffusion-projectedgan-lsun-church.pkl

The checkpoints can be replaced with any pre-trained Diffusion-GAN checkpoint path downloaded from the table above.

Similarly, the metrics can be calculated with the following commands:

# Pre-trained network pickle: specify dataset explicitly, print result to stdout.
python calc_metrics.py --metrics=fid50k_full --data=~/datasets/ffhq.zip --mirror=1 \
    --network=https://tsciencescu.blob.core.windows.net/projectshzheng/DiffusionGAN/diffusion-stylegan2-ffhq.pkl

Citation

@article{wang2022diffusiongan,
  title     = {Diffusion-GAN: Training GANs with Diffusion},
  author    = {Wang, Zhendong and Zheng, Huangjie and He, Pengcheng and Chen, Weizhu and Zhou, Mingyuan},
  journal   = {arXiv preprint arXiv:2206.02262},
  year      = {2022},
  url       = {https://arxiv.org/abs/2206.02262}
}

Acknowledgements

Our code builds upon the awesome StyleGAN2-ADA repo, InsGen repo and ProjectedGAN repo, respectively by Karras et al, Ceyuan Yang et al and Axel Sauer et al.

排名相邻
同类项目