Meteorite DDPM Workflow

Homework 3 · Deep Generative Model

Meteorite DDPM Workflow

本项目使用纯 PyTorch 实现 DDPM 基线,训练 U-Net 噪声预测网络生成陨石图像,并用 InceptionV3 特征计算 FID 作为生成质量指标。

Overview

项目目标

项目目标是使用 meteorite/ 数据集训练生成模型,使其能够生成白底陨石图像。模型不仅需要生成单个陨石主体,还需要学习不规则轮廓、深色石质纹理、颗粒感和整体拍摄风格。

128 × 128baseline image size
1200training epochs
1000generated images
74.2195FID score

博客页面仅展示公开报告;源码、配置、指标和压缩后的代表性图片统一通过上方 GitHub 入口访问。

Workflow

训练与生成流程

  1. 对原始陨石图片进行等比例缩放和白底补齐,避免直接 resize 拉伸主体形状。
  2. 使用 U-Net 作为噪声预测网络训练 DDPM,在随机时间步向真实图像加噪。
  3. 从随机噪声开始反向采样,并优先使用 EMA 权重生成最终图像。
  4. 使用 InceptionV3 提取真实图像和生成图像特征,计算 FID。
  5. 在 128 像素基线后尝试 256 像素版本,并复盘其质量下降原因。
python train_meteorite_ddpm.py train --device cuda --amp
python train_meteorite_ddpm.py generate --checkpoint meteorite_ddpm_output/checkpoints/latest.pt --generated-dir generated_pictures --num-images 1000 --batch-size 64 --device cuda --clean-generated
python evaluate_fid.py

Configuration

核心配置与指标

ItemValue
ModelDDPM + TinyUNet
Image size128 × 128
Batch size64
Learning rate2e-4
Timesteps1000
EMA decay0.9999
Real image count2682
Generated image count1000
FID74.21950297875941

Results

生成结果

128 像素基线模型已经能够学习到白底背景、单主体构图和基础石质纹理。FID 仍然偏高,说明生成结果与真实分布存在差距,但整体流程稳定可复现。

128 pixel DDPM generated meteorite samples
128 像素 DDPM 基线中人工挑选的 9 张代表样本。

256 像素实验保留了更多局部纹理,但也放大了背景噪声、主体比例和构图不稳定的问题,因此没有带来整体质量提升。

256 pixel DDPM generated meteorite samples
256 像素尝试中相对较好的 4 张样本。

Review

问题复盘与后续优化

背景问题被放大

256 像素保留了更多细节,但也让暗背景、灰尘和边缘噪声更容易被模型学习。

主体占比不足

当前预处理只做白底 padding,没有检测并裁剪陨石主体,背景像素在损失中占比过大。

全局建模偏弱

TinyUNet 对 256 像素图像的全局构图控制不足,后续可增加下采样深度或加入 self-attention。

后续优化重点应放在主体裁剪、前景加权损失、更深的 U-Net 结构和统一采样策略,而不是单纯增加训练轮数。

0%