Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flicker-DDPM: Accelerating Denoising Diffusion via 1/f Colored Noise Injection

arXiv

Flicker-DDPM incorporates flicker (1/f) noise inspired by self-organized criticality into denoising diffusion probabilistic models, achieving 3.33× sampling acceleration with simultaneous quality improvement on CIFAR-10.

Key Idea

Standard DDPMs corrupt data into white noise (flat spectrum), but natural images have power-law spectra P(k) ∝ k−α with α ≈ 2.7. This spectral mismatch forces the reverse process to waste hundreds of steps reshaping the frequency structure before generating content.

Flicker-DDPM replaces white noise with spectrally colored noise whose power spectrum matches the data. The noise is generated via a simple spatial correlation kernel:

$$C(d) = (d + 1)^{-\eta}$$

where η is analytically determined from data statistics through Matérn covariance theory:

$$\eta = \frac{3 - \alpha}{2}$$

For CIFAR-10: α = 2.70 → ηopt = 0.20. No hyperparameter search required.

White noise (flat spectrum) vs. colored noise (power-law spectrum matching natural images).

Results

3.33× Faster Sampling with Better Quality

T (steps) White DDPM (FID↓) Flicker-DDPM (FID↓) Improvement
100 36.17 22.57 −37.6%
150 25.36 12.24 −51.7%
200 18.08 11.57 −36.0%
500 13.02 11.96 −8.1%

FID is computed using 10,000 generated samples against the CIFAR-10 training set. Flicker-DDPM at T=150 outperforms standard DDPM at T=500 (FID 12.24 vs 13.02), yielding a 500/150 ≈ 3.33× speedup.

FID scores across diffusion steps. Flicker-DDPM consistently outperforms the white-noise baseline.

Sample Comparison (T=150)

Left: Flicker-DDPM (η=0.2). Right: white-noise DDPM. At the same step budget, Flicker-DDPM produces sharper, more coherent images.

Why It Works: Linearization of Reverse Dynamics

Colored noise linearizes the reverse diffusion trajectory in Fourier space. When noise already carries the correct spectral structure (L(k) = 0), the denoiser operates in a near-linear regime at all frequencies — eliminating the nonlinear spectral reshaping bottleneck.

Linearization quality R²(k,t). Flicker-DDPM achieves R² > 0.95 uniformly across all modes, while white DDPM shows extreme disparity (R² = 0.505 at k=1 vs 0.968 at k=14).

Spectral evolution during reverse sampling (Flicker-DDPM): all frequency modes converge to the target in concert.

Spectral evolution (white DDPM): spectrum starts flat and must be rebuilt sequentially, requiring ~350 extra steps.

Project Structure

├── main.py              # CLI entry point (train / sample / FID eval)
├── models/              # Network architectures
│   ├── unet.py          # Unconditional UNet
│   └── unet_cfg.py      # Classifier-free guidance UNet
├── core/                # Core components
│   ├── diffusion.py     # DiffusionTrainer & DiffusionSampler
│   ├── noise.py         # NoiseModule (white / colored via Cholesky or FFT)
│   ├── train.py         # Training & sampling loops
│   ├── eval_fid.py      # FID evaluation pipeline
│   ├── scheduler.py     # Learning rate warmup scheduler
│   └── visualizer.py    # Training diagnostics & visualization
├── analysis/            # Theory verification & spectral analysis
│   ├── gamma_ode.py     # Measure γ(k,t) and validate linear-theory ODE
│   ├── fit_eta.py       # Fit power-law exponent from CIFAR-10 spectrum
│   └── verify_matern.py # Matérn kernel theory verification
├── scripts/             # Plotting scripts
└── figures/             # Paper figures

Requirements

torch >= 2.0
torchvision
numpy
scipy
matplotlib
tqdm
pytorch-fid

Usage

Training

# White noise baseline, T=500
python main.py --noise_type white --T 500 --epoch 200

# Colored noise (η=0.2), T=150
python main.py --noise_type colored --eta 0.2 --T 150 --epoch 200

# Multi-GPU (DDP)
torchrun --nproc_per_node=4 main.py --noise_type colored --eta 0.2 --T 150

Sampling

python main.py --eval --noise_type colored --eta 0.2 --T 150 --ckpt ckpt_199_.pt

FID Evaluation

python main.py --fid --noise_type colored --eta 0.2 --T 150

Analysis

# Measure γ(k,t) and validate ODE predictions
python analysis/gamma_ode.py --noise_type colored --eta 0.2 --T 500

# Fit power-law exponent α from CIFAR-10
python analysis/fit_eta.py

Citation

@article{mao2026flicker,
  title={Flicker-DDPM: Accelerating Denoising Diffusion via 1/f Colored Noise Injection},
  author={Mao, KeXiang and Li, FanCheng},
  journal={arXiv e-prints},
  pages={arXiv--2606},
  year={2026}
}

License

MIT

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages