AI Image Generation (AI 生成圖片)
兩大主流生成圖片的方式:
- Auto-regressive:像文字一樣一個 token 一個 token 生
- Diffusion:從雜訊一路去噪到成圖
Auto-regressive 模型
把圖片切成 patch(或 pixel),依序預測下一個 token
和 LLM 生成文字的方式完全相同
pixel_1 → pixel_2 → pixel_3 → ... → pixel_N
patch_1 → patch_2 → patch_3 → ... → patch_N
代表模型:ImageGPT、LlamaGen、VQVAE + Transformer
VQ-VAE(Vector Quantized VAE)
Auto-regressive 圖片模型的前置步驟
把圖片壓縮成離散 token sequence,才能餵給 Transformer
圖片 → Encoder → 連續 latent → 量化成離散 token
離散 token → Decoder → 還原圖片
Diffusion 模型
核心思想:先把圖片加雜訊(forward process),再學著去噪(reverse process)
[乾淨圖片] → 逐步加噪 → [純雜訊]
[純雜訊] ← 逐步去噪 ← 模型學習
Forward Process(加噪)
每一步加入 Gaussian noise,T 步後圖片完全變成純雜訊
這個過程不需要訓練,是固定的數學公式
x_0 → x_1 → x_2 → ... → x_T ≈ N(0, I)
Reverse Process(去噪)
訓練 U-Net 預測每一步的雜訊(ε),把它從 x_t 中減掉
x_T(純雜訊)→ ... → x_1 → x_0(清晰圖片)
Latent Diffusion Model(LDM)
不在 pixel space 做 diffusion,改在 latent space
大幅降低記憶體與計算成本
圖片 → VAE Encoder → latent → 加噪/去噪 → latent → VAE Decoder → 圖片
代表:Stable Diffusion
Text-to-Image Conditioning
讓模型根據文字 prompt 生成圖片
關鍵機制:Cross-Attention — U-Net 每層都 attend 到 text embedding
text prompt → CLIP / T5 Text Encoder → text embedding
↓
x_T(雜訊)→ U-Net(條件去噪)→ x_0(圖片)
Classifier-Free Guidance(CFG)
讓生成圖片更貼近 prompt 的技巧
noise_final = noise_uncond + scale × (noise_cond - noise_uncond)
scale越大 → 圖片越貼近 prompt,但多樣性下降scale越小 → 圖片更多樣,但可能偏離 prompt
Auto-regressive vs Diffusion
| 面向 | Auto-regressive | Diffusion |
|---|---|---|
| 生成速度 | 慢(逐 token) | 快(多步可加速) |
| 生成品質 | 中 | 高 |
| 訓練方式 | next token prediction | noise prediction |
| 代表模型 | ImageGPT, LlamaGen | SD, DALL-E 3, Midjourney |
代表性模型
| 模型 | 機構 | 方法 |
|---|---|---|
| DALL-E 3 | OpenAI | Diffusion + T5 |
| Stable Diffusion | Stability AI | LDM |
| Midjourney | Midjourney | Diffusion |
| Imagen | Diffusion + T5 | |
| LlamaGen | 學術 | Auto-regressive VQ |
評估指標
- FID(Fréchet Inception Distance)— 生成圖與真實圖分布距離,越低越好
- IS(Inception Score)— 圖片品質 + 多樣性,越高越好
- CLIP Score — 圖片與 prompt 的語意一致性
總結
AI 圖片生成
├── Auto-regressive
│ └── 圖片轉 token sequence → 逐 token 預測(VQ-VAE + Transformer)
└── Diffusion
├── Forward:逐步加噪
├── Reverse:U-Net 去噪
├── LDM:在 latent space 做(省計算)
├── Text conditioning:Cross-Attention 接 text embedding
└── CFG:控制 prompt 貼合程度