Skip to main content

6.8.4 项目:生成模型实战 [选修]

本节定位

生成项目不是产出一张好看的样本就结束。你需要展示质量、多样性、稳定性、失败样本,以及为什么保留某个 checkpoint。

学习目标

  • 解释为什么生成项目的评估不同于分类。
  • 同时追踪质量和多样性。
  • 构建一个小型 checkpoint review table。
  • 识别 mode collapse 和模糊输出。
  • 把生成样本包装成项目证据。

先看评估闭环

生成模型项目评估闭环图

train -> sample checkpoints -> review quality + diversity -> keep failures -> choose next step

练习项目建议选择:

  • 能肉眼检查;
  • 足够小,能训练或模拟;
  • checkpoint 之间容易比较。

数字、图标、简单形状、小灰度图案,都比开放式照片级生成更适合第一轮项目。

实验:Checkpoint Review Dashboard

创建 generative_review_dashboard.py

checkpoints = [
{"epoch": 1, "quality": 0.20, "diversity": 0.80, "note": "mostly noise"},
{"epoch": 10, "quality": 0.45, "diversity": 0.72, "note": "outlines appear"},
{"epoch": 30, "quality": 0.68, "diversity": 0.60, "note": "usable but varied"},
{"epoch": 60, "quality": 0.75, "diversity": 0.48, "note": "possible collapse"},
]

print("generation_review")
for row in checkpoints:
status = "candidate" if row["quality"] >= 0.6 and row["diversity"] >= 0.55 else "review"
print(
f"epoch={row['epoch']:03d} "
f"quality={row['quality']:.2f} "
f"diversity={row['diversity']:.2f} "
f"status={status}"
)

selected = max(
[row for row in checkpoints if row["diversity"] >= 0.55],
key=lambda row: row["quality"],
)
print("selected_epoch:", selected["epoch"])

运行:

python generative_review_dashboard.py

预期输出:

generation_review
epoch=001 quality=0.20 diversity=0.80 status=review
epoch=010 quality=0.45 diversity=0.72 status=review
epoch=030 quality=0.68 diversity=0.60 status=candidate
epoch=060 quality=0.75 diversity=0.48 status=review
selected_epoch: 30

为什么不选 epoch 60?因为质量更高,但多样性更低。好的生成项目不能只选最漂亮的一张。

要保存什么

证据为什么
samples by checkpoint展示训练进展
failure samples诚实展示边界
diversity notes捕捉重复输出
quality notes解释视觉改善
training logs展示稳定或 collapse
final selection rule让选择可复现

质量、多样性、稳定性

维度好信号警告信号
Quality样本像目标数据噪声、模糊、结构破碎
Diversity样本有 meaningful variation重复输出或单一风格
Stabilitycheckpoint 逐步改善突然 collapse 或震荡
Interpretability记录失败原因只展示最好样本

常见取舍:

最好看的单个样本 != 最好的项目 checkpoint

项目升级路线

版本增加什么
basic一个模型、固定 sampling seed、checkpoint samples
standardquality/diversity table 和 failure samples
challenge比较 VAE、GAN 或 diffusion-style 输出
portfolio清楚故事:data、model、samples、failures、next step

常见错误

错误修复
只展示最好样本同时展示平均样本和失败样本
忽略多样性跟踪重复输出或 unique patterns
checkpoint 比较不公平使用同一组 fixed seed
一开始数据集太复杂从小视觉目标开始
不解释模型选择说明为什么选 VAE、GAN 或其他方法

练习

  1. 加一个 epoch 90,quality 0.80、diversity 0.30。应该选它吗?
  2. 给每个 checkpoint 增加 failure 字段。
  3. 为你自己的生成项目想法写一个 4 行表格。
  4. 用 checkpoint table 解释 mode collapse。
  5. 写一个作品集小节标题:“为什么我选择这个 checkpoint”。

小结

  • 生成项目需要评估故事,而不只是 gallery。
  • 质量和多样性必须一起读。
  • 失败样本会让项目更可信。
  • 清楚的 checkpoint 选择规则也是交付物的一部分。