Paper · 2023-04-17 · cs.CV, cs.AI, cs.CL, cs.LG
Synthetic Data from Diffusion Models Improves ImageNet Classification
Fine-tunes the Imagen text-to-image cascade on ImageNet-1K, prompting with class names, and samples synthetic training images. Author-reported: FID 1.76 and IS 239 at 256x256, CAS top-1 64.96 (256) and 69.24 (1024). Adding 1.2M synthetic images to real data raises ResNet-50 top-1 from 76.39 to 78.17.
Data augmentationDiffusion modelsClassifier-free guidancedata-augmentationdiffusion-modelsimage-classificationimagenettext-to-image
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Image generators can now make very convincing pictures from a text prompt. This paper asks whether those pictures are good enough to train another model that recognises objects. It takes a large general-purpose image generator, lightly retrains it on the ImageNet photo collection, and then asks it to draw pictures for each ImageNet category, using only the category name as the prompt.
The drawn pictures are then used as extra training examples for ordinary image classifiers. The authors report that the drawn pictures are judged better by standard generator scores, and that adding them to the real photos makes classifiers more accurate. The gain is bigger for larger drawings, and it stops helping once the synthetic set grows very large.
TL;DR
- Imagen (a text-to-image diffusion cascade) is fine-tuned on ImageNet-1K training images, with fixed class-name prompts §4.1 §4.
- Sampling settings (guidance, log-variance, steps, noise augmentation) are picked by sweeps on FID, IS and classification accuracy §4.2.
- Author-reported: FID 1.76 and IS 239.18 at 256x256 tab. 1; CAS top-1 64.96 at 256 and 69.24 at 1024 tab. 2.
- Adding synthetic images to real training data improves ResNet and ViT top-1 accuracy, with gains up to +1.78 points for ResNet-50 at 1.2M added images tab. 3. Gains shrink or turn negative for very large synthetic sets at 256x256 and 1024x1024 tab. 4.
Problem
Synthetic data is widely used for dense vision tasks, but for ImageNet classification it had not helped. Models trained only on generated samples underperformed models trained on real data §3, and earlier work that used an off-the-shelf pretrained Stable Diffusion model did not improve clean ImageNet accuracy §2. The standard generator metrics (FID, Inception Score) do not reliably predict downstream classification accuracy, so the authors use Classification Accuracy Score (CAS): train a classifier only on generated data and test it on real ImageNet validation images §3 §5.2.
ImageNet classification is a hard benchmark for augmentation because its architectures and training recipes are heavily tuned §1 §4.
Method
Backbone. The model is Imagen, a cascade: a frozen T5-XXL text encoder, a 2B-parameter 64x64 base diffusion model, a 600M super-resolution (SR) model from 64 to 256, and a 400M SR model from 256 to 1024 §4.1. All three diffusion stages use text cross-attention. The base model also receives a pooled text embedding added to its timestep embedding §4.1.
Fine-tuning. Only the 64x64 base and the 64-to-256 SR model are fine-tuned on the ImageNet-1K training split. The text encoder and the 1024 SR stage stay unchanged §4.1. The base model is trained with Adafactor and the SR model with Adam §4.1. Checkpoints are selected by FID on 10K samples from the default Imagen sampler against the ImageNet validation set §4.1.
Prompts. Each class gets its fixed one- or two-word class name, taken from the CLIP class-name list. The authors do not optimise prompts. They argue that naive short prompts give poor data, and handle this by tuning the generator and its sampling parameters instead §4.
Sampling parameters. Four knobs are swept §4.2 app. A.1:
- classifier-free guidance weight;
- the log-variance mixing coefficient, a convex combination of the log upper and lower bounds on the predictive variance, following Eq. 15 of Nichol and Dhariwal, which the paper cites rather than restates app. A.1;
- the number of diffusion steps;
- noise-conditioning augmentation for the SR stages (added to the SR input during training; set to zero at sampling time) app. A.1.
Selection criteria are FID, IS and CAS, measured on the ImageNet validation set §4.2. The chosen values are in the Hyperparameters table.
Generation protocol. For each class, the number of generated images matches the real count for that class, so the class balance of ImageNet is kept. Synthetic sets range from 1.2M images (1x the real training set) to 12M (10x) §4.3.
Evaluation.
- Sample quality: FID and IS, against the training and validation sets as reported in the table columns §5.1 tab. 1.
- CAS: ResNet-50 trained on generated images only, with the CAS recipe (single crop, 90 epochs), tested on real ImageNet validation images §5.2 app. A.4.
- Classifier study: ResNet, ResNet-RS and ViT/DeiT models trained on real, generated, or real plus generated data using each model's published ImageNet recipe §5.3 tab. 3 app. A.4.
- Scaling study: a ResNet-50 trained on real data mixed with 1x to 10x synthetic data, at 64, 256 and 1024 resolution §5.4 fig. 6 tab. 4.
Pseudocode. The paper has no algorithm environment. The sketch below is our own summary of the pipeline in §4 and §5, not the authors' code.
# Synthetic-data augmentation pipeline (sketch from §4 and §5)
# Input: real_train (ImageNet-1K train), class_names (1-2 words each)
# Output: classifier trained on real + generated images
# Fine-tune the 64x64 base on real images [§4.1]
# Batch 2048, 210K steps, Adafactor [§4.1]
base = finetune_base(imagen_base, real_train, steps=210000, batch=2048)
# Fine-tune the 64 -> 256 SR model [§4.1]
# 490K steps, Adam [§4.1]
sr_256 = finetune_sr(imagen_sr_256, real_train, steps=490000)
# Sample per class with the real per-class counts [§4.3]
# The scale factor k runs from 1 to 10 [§4.3]
generated = []
for each class c in class_names:
# Prompt is the bare class name; template not stated [§4]
prompt = class_names[c]
for i in range(k * real_count[c]):
# Base: DDPM, 1000 steps, guidance 1.25, log-variance 0.0 [§4.2]
low_res = sample_base(base, prompt, guidance=1.25, logvar=0.0)
# SR 256: DDPM, 1000 steps, guidance 1.0, log-var 0.1 [§4.2]
# No noise-conditioning augmentation at sampling [§4.2]
image = sample_sr(sr_256, low_res, guidance=1.0, logvar=0.1)
generated.append(image)
# Train the classifier on real plus generated data [§5.3] [§5.4]
# Mixing ratio per batch is not stated [§5.3]
pool = real_train + generated
for each epoch in range(130):
# Standard ResNet-50 recipe with random crops [§5.4] [app. A.4]
for batch in shuffled(pool):
loss = cross_entropy(model(batch.images), batch.labels)
update(model, loss)Figures. Figures are not reproduced here. Figure 1 shows a CAS and augmentation teaser fig. 1; Figure 2 compares fine-tuned and vanilla Imagen samples fig. 2; Figures 3 and 4 show sweeps over guidance and log-variance fig. 3 fig. 4; Figure 5 gives per-class accuracy fig. 5; Figure 6 shows the 64x64 scaling curve fig. 6. Appendix figures are cited by section app. A.1 app. A.2.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| Base model size | 2B parameters, 64x64 | §4.1 | Imagen base |
| SR 64 to 256 size | 600M parameters | §4.1 | fine-tuned |
| SR 256 to 1024 size | 400M parameters | §4.1 | not fine-tuned |
| Fine-tune steps, base | 210K | §4.1 | |
| Fine-tune steps, SR 64 to 256 | 490K | §4.1 | |
| Batch size | 2048 | §4.1 | |
| Hardware | 256 TPU-v4 chips | §4.1 | |
| Optimizer, base | Adafactor | §4.1 | smaller memory than Adam |
| Optimizer, SR 64 to 256 | Adam | §4.1 | chosen for sample quality |
| Learning rate, warmup, schedule, EMA | not stated | §4.1 | |
| Frozen parts | T5-XXL text encoder; SR 256 to 1024 | §4.1 | |
| Checkpoint selection | FID on 10K samples vs ImageNet val | §4.1 | default Imagen sampler |
| Prompt | fixed one or two word class name | §4 | template not stated |
| Base guidance weight | 1.25 | §4.2 | sweep: 1.0, 1.25, 1.5, 1.75, 2.0, 5.0 |
| Base log-variance | 0.0 | §4.2 | sweep: 0.0, 0.2, 0.3, 0.4, 1.0 |
| Base sampler and steps | DDPM, 1000 | §4.2 | sweep: 128, 500, 1000 |
| Base guidance sweep size | 1.2M images in total | §4.2 | per-value count not stated |
| SR 256 guidance weight | 1.0 | §4.2 | sweep: 1.0, 2.0, 5.0, 10.0, 30.0 |
| SR 256 log-variance | 0.1 | §4.2 | sweep: 0.1, 0.3 |
| SR 256 sampler and steps | DDPM, 1000 | §4.2 | |
| SR 256 noise augmentation | 0 at sampling | §4.2 | sweep 0 to 0.4 §4.2; range considered up to 0.5 app. A.1 |
| 1024 sampler and steps | DDIM, 32 | §4.2 | "as in" the Imagen paper |
| 1024 guidance weight | 1.0 | §4.2 | |
| Static clipping threshold | not stated | app. A.1 | dynamic thresholding not used |
| Synthetic set size | 1.2M to 12M (1x to 10x real) | §4.3 | |
| CAS ResNet-50 epochs, batch | 90, 1024 | §5.2 app. A.4 tab. A.1 | single crop |
| CAS ResNet-50 optimiser | SGD with momentum, lr 0.4 | app. A.4 | linear warmup over 5 epochs |
| CAS LR decay | x0.1 at epochs 30, 60, 80 | app. A.4 | stepwise |
| CAS input | resize 256 (real: short side), crop 224 | §5.2 | |
| Scaling ResNet-50 | 130 epochs, batch 4096, lr 1.6 | §5.4 tab. A.1 | cosine, wd 1e-4 |
| Scaling ResNet-50 regularisers | label smoothing 0.1, dropout 0.25, RandAugment 10 | tab. A.1 | |
| ViT and DeiT recipes | see table | tab. A.2 | ViT-S/16, DeiT-S, -B, -L |
Model-specific recipes for ConvNets and transformers (learning rates, weight decay, mixup and CutMix) are in tab. A.1 and tab. A.2.
Results
Author-reported. Setup: ImageNet-1K class-conditional generation at 64, 256 and 1024 resolution, scored by FID and IS; CAS on ImageNet validation §5.1 §5.2. Baseline numbers for other models are taken from the cited papers, not re-run by the authors §5.1 §5.2.
Sample quality tab. 1
| Model | FID train | FID validation | IS |
|---|---|---|---|
| 64x64 resolution | |||
| BigGAN-deep (Dhariwal and Nichol, 2021) | 4.06 | - | - |
| Improved DDPM (Nichol and Dhariwal, 2021) | 2.92 | - | - |
| ADM (Dhariwal and Nichol, 2021) | 2.07 | - | - |
| CDM (Ho et al., 2022) | 1.48 | 2.48 | 67.95 ± 1.97 |
| RIN (Jabri et al., 2022) | 1.23 | - | 66.5 |
| RIN + noise schedule (Chen, 2023) | 2.04 | - | 55.8 |
| Ours (fine-tuned Imagen) | 1.21 | 2.51 | 85.77 ± 0.06 |
| 256x256 resolution | |||
| BigGAN-deep (Brock et al., 2019) | 6.9 | - | 171.4 ± 2.00 |
| VQ-VAE-2 (Razavi et al., 2019) | 31.11 | - | - |
| SR3 (Saharia et al., 2021) | 11.30 | - | - |
| LDM-4 (Rombach et al., 2022) | 10.56 | - | 103.49 |
| DiT-XL/2 (Peebles and Xie, 2022) | 9.62 | - | 121.5 |
| ADM (Dhariwal and Nichol, 2021) | 10.94 | - | 100.98 |
| ADM + upsampling (Dhariwal and Nichol, 2021) | 7.49 | - | 127.49 |
| CDM (Ho et al., 2022) | 4.88 | 3.76 | 158.71 ± 2.26 |
| RIN (Jabri et al., 2022) | 4.51 | 4.51 | 161.0 |
| RIN + noise schedule (Chen, 2023) | 3.52 | - | 186.2 |
| Simple Diffusion U-Net (Hoogeboom et al., 2023) | 3.76 | 2.88 | 171.6 ± 3.07 |
| Simple Diffusion U-ViT L (Hoogeboom et al., 2023) | 2.77 | 3.23 | 211.8 ± 2.93 |
| Ours (fine-tuned Imagen) | 1.76 | 2.81 | 239.18 ± 1.14 |
The paper says these are state of the art "without any design changes" to the generator §5.1.
Classification Accuracy Score tab. 2 (ResNet-50 trained on generated images only, top-1 and top-5 on real ImageNet validation, %)
| Model | Top-1 | Top-5 |
|---|---|---|
| Real | 73.09 | 91.47 |
| BigGAN-deep (Brock et al., 2019) | 42.65 | 65.92 |
| VQ-VAE-2 (Razavi et al., 2019) | 54.83 | 77.59 |
| CDM (Ho et al., 2022) | 63.02 | 84.06 |
| Ours (256x256) | 64.96 | 85.66 |
| Ours (1024x1024) | 69.24 | 88.10 |
Classifiers with 1.2M real, generated, or combined images tab. 3 (top-1, %; Δ = real + generated minus real only)
| Model | Input | Params (M) | Real only | Generated only | Real + generated | Δ |
|---|---|---|---|---|---|---|
| ResNet-50 | 224 | 36 | 76.39 | 69.24 | 78.17 | +1.78 |
| ResNet-101 | 224 | 45 | 78.15 | 71.31 | 79.74 | +1.59 |
| ResNet-152 | 224 | 64 | 78.59 | 72.38 | 80.15 | +1.56 |
| ResNet-RS-50 | 160 | 36 | 79.10 | 70.72 | 79.97 | +0.87 |
| ResNet-RS-101 | 160 | 64 | 80.11 | 72.73 | 80.89 | +0.78 |
| ResNet-RS-101 | 190 | 64 | 81.29 | 73.63 | 81.80 | +0.51 |
| ResNet-RS-152 | 224 | 87 | 82.81 | 74.46 | 83.10 | +0.29 |
| ViT-S/16 | 224 | 22 | 79.89 | 71.88 | 81.00 | +1.11 |
| DeiT-S | 224 | 22 | 78.97 | 72.26 | 80.49 | +1.52 |
| DeiT-B | 224 | 87 | 81.79 | 74.55 | 82.84 | +1.04 |
| DeiT-B | 384 | 87 | 83.16 | 75.45 | 83.75 | +0.59 |
| DeiT-L | 224 | 307 | 82.22 | 74.60 | 83.05 | +0.83 |
Source: tab. 3. Models trained only on generated data do worse than real data in every row.
Scaling synthetic data for ResNet-50 tab. 4 (top-1, mean ± s.d.; change over the real-only baseline in parentheses; the "Train Set" column is read as the total size, see Pitfalls)
| Train set (M) | 256x256 | 1024x1024 |
|---|---|---|
| 1.2 | 76.39 ± 0.21 | 76.39 ± 0.21 |
| 2.4 | 77.61 ± 0.08 (+1.22) | 78.12 ± 0.05 (+1.73) |
| 3.6 | 77.16 ± 0.04 (+0.77) | 77.48 ± 0.04 (+1.09) |
| 4.8 | 76.52 ± 0.04 (+0.13) | 76.75 ± 0.07 (+0.36) |
| 6.0 | 76.09 ± 0.08 (-0.30) | 76.34 ± 0.13 (-0.05) |
| 7.2 | 75.81 ± 0.08 (-0.58) | 75.87 ± 0.09 (-0.52) |
| 8.4 | 75.44 ± 0.06 (-0.95) | 75.49 ± 0.07 (-0.90) |
| 9.6 | 75.28 ± 0.10 (-1.11) | 74.72 ± 0.20 (-1.67) |
| 10.8 | 75.11 ± 0.12 (-1.28) | 74.14 ± 0.13 (-2.25) |
| 12.0 | 75.04 ± 0.05 (-1.35) | 73.70 ± 0.09 (-2.69) |
Source: tab. 4. At 64x64 the text reports gains that continue up to a total of 12M images §5.4 fig. 6.
Paper vs code
No official code.
The paper names no code repository, project page or code link. Its source (arXiv v1) has no URL or repository reference. The paper uses Imagen, whose code and weights are not linked from this paper. Searches: a GitHub repository search for "imagen" within the google-research organisation returned only unrelated repositories (for example reassessed-imagenet, dp-imagenet). A repository search for "synthetic imagenet diffusion" returned third-party work on knowledge distillation and brain MRI, not from the authors. A broad search for "imagen imagenet" returned unrelated ImageNet repositories. None of these belong to the authors, so none is recorded here.
Pitfalls
- Which FID is quoted. The abstract's FID 1.76 is the "FID train" column in tab. 1. The caption does not define the reference set for that column, and the validation FID for the same model is 2.81 tab. 1. Compare only with the same column.
- Selection on the evaluation set. Guidance, log-variance, steps and noise augmentation are chosen on FID, IS and CAS measured on the ImageNet validation set §4.2. CAS is then reported on that same validation set §5.2. The headline numbers are therefore not from a held-out split. The paper states the selection but does not discuss its effect on the reported numbers.
- Two different real-data baselines. The CAS real-data row (top-1 73.09, tab. 2) follows the CAS recipe (90 epochs, single crop). The real-only ResNet-50 in the classifier tables (76.39, tab. 3 and tab. 4) uses the 130-epoch random-crop recipe §5.4 tab. A.1. Do not mix the two numbers.
- Undefined mixing rule. How real and generated images are combined (ratio per batch, or fixed epoch counts) is not stated for tab. 3 and tab. 4. The 130-epoch run is described only as the conventional recipe §5.4.
- Ambiguous size axis in tab. 4. The "Train Set (M)" column is read as the total size, since the 1.2 row equals the real-only baseline. The paper does not define the column. The conclusion places the drop at "larger than 1M" synthetic images §6. The table shows gains until 4.8M total (3.6M synthetic) at 256x256 and a fall below baseline from 6.0M total. Use the table, not the conclusion's threshold.
- Rounding in tab. 3. For DeiT-B at 224, 82.84 minus 81.79 is 1.05, but the Δ column prints +1.04. Other rows agree with their differences.
- Resolution path for CAS. Images at 1024 are downsampled to 256 and centre-cropped to 224 before the ResNet-50 is trained §5.2 §6. The gain at 1024 is not from a larger classifier input. The paper calls it an open question §6.
- Unstated fine-tuning details. Learning rate, warmup, EMA and the exact prompt template are not stated §4.1 §4. An implementer must choose them and say so.
- Static threshold value. The static clipping threshold used with small guidance is not given. Dynamic thresholding is not used app. A.1.
- Log-variance formula. The mixing coefficient is defined by reference to Nichol and Dhariwal rather than written out here app. A.1. Implement that formula from the cited paper.
- Costs the abstract hides. Fine-tuning uses 256 TPU-v4 chips for 210K and 490K steps at batch 2048 §4.1. Sampling uses 1000 DDPM steps at 256 and the 64x64 base; generation cost for the 1.2M-12M sets is not reported §4.2 §4.3. Generated data is per-class matched to ImageNet counts, so class imbalance is not studied.
Lineage
- Builds on: Imagen, the text-to-image cascade, arXiv:2205.11487 §4.1. The paper uses it unchanged except for fine-tuning and sampling choices.
- Builds on: classifier-free guidance, arXiv:2207.12598 §4.2. Guidance weights are swept per stage.
- Builds on: CAS, the classification accuracy score of Ravuri and Vinyals (2019) §3 §5.2. It is the main proxy for downstream value.
- Compared against: CDM, BigGAN-deep, VQ-VAE-2, LDM-4, DiT-XL/2 and Simple Diffusion at 64 and 256 resolution tab. 1 tab. 2.
- Superseded by: not known from the content of this wiki.
Source and license
Adapted from “Synthetic Data from Diffusion Models Improves ImageNet Classification” by Shekoofeh Azizi, Simon Kornblith, Chitwan Saharia, Mohammad Norouzi, David J. Fleet (arXiv:2304.08466), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.