多模态模型中图像生成器使用的扩散模型的组件
多模态模型中图像生成器使用的扩散模型组件
多模态模型中的图像生成器,通常不是一个单独网络,而是一套 条件扩散生成系统。典型输入是文本、图像、mask、bbox、姿态、深度图、边缘图、语义图、视频帧或多模态 embedding,输出是目标图像。
最常见结构是 Latent Diffusion Model,LDM,也就是 Stable Diffusion 类路线。
1. 总体结构
典型扩散图像生成器如下:
文本 / 图像 / mask / bbox / 深度图 / 姿态 / 多模态 embedding
↓
条件编码器 Condition Encoder
↓
条件向量 / 条件 token
↓
噪声 latent z_T
↓
扩散去噪网络 U-Net / DiT
↓
逐步去噪 z_T → z_0
↓
VAE Decoder
↓
生成图像
如果是 Stable Diffusion 类模型,核心流程是:
Prompt
↓
Tokenizer
↓
Text Encoder
↓
Text Embedding
↓
Denoising U-Net / DiT
↓
Latent Image
↓
VAE Decoder
↓
RGB Image
2. 核心组件总览
| 组件 | 作用 |
|---|---|
| Tokenizer | 把文本 prompt 转成 token id |
| Text Encoder | 把文本 token 编码成语义 embedding |
| Condition Encoder | 编码图像、mask、深度、姿态、bbox 等条件 |
| VAE Encoder | 把真实图像压缩到 latent 空间,训练或图生图时使用 |
| VAE Decoder | 把 latent 还原成 RGB 图像 |
| Noise Scheduler | 控制加噪和去噪时间步 |
| Denoising Network | 核心去噪网络,通常是 U-Net 或 DiT |
| Cross-Attention | 让图像生成过程读取文本/多模态条件 |
| Classifier-Free Guidance | 控制生成结果与 prompt 的贴合程度 |
| Sampler | 决定推理时如何从噪声一步步生成图像 |
| Control Module | ControlNet / T2I-Adapter / IP-Adapter 等可控生成模块 |
| Safety / Postprocess | 后处理、超分辨率、过滤、裁剪等 |
3. VAE:图像与 latent 空间的转换器
在 Stable Diffusion 这类 latent diffusion 中,扩散过程不是直接在 RGB 图像上做,而是在压缩后的 latent 空间中做。
原因是 RGB 图像太大:
512 × 512 × 3
经过 VAE 编码后变成:
64 × 64 × 4
计算量大幅下降。
3.1 VAE Encoder
训练阶段或图生图阶段使用。
RGB Image x
↓
VAE Encoder
↓
Latent z
公式:
z = Encoder_VAE(x)
作用:
把真实图像压缩到连续 latent 空间
3.2 VAE Decoder
推理生成阶段最后使用。
Latent z_0
↓
VAE Decoder
↓
Generated RGB Image
公式:
x_hat = Decoder_VAE(z_0)
作用:
把去噪后的 latent 还原成最终图像
3.3 为什么需要 VAE?
直接在像素空间扩散:
速度慢
显存大
训练成本高
在 latent 空间扩散:
速度更快
显存更小
更适合大规模训练和部署
所以 Stable Diffusion、SDXL、很多文生图模型都采用 latent diffusion。
4. Text Encoder:文本条件编码器
文本生成图像时,prompt 不能直接输入扩散网络,需要先编码成语义向量。
流程:
"A red bottle on the shelf"
↓
Tokenizer
↓
Token IDs
↓
Text Encoder
↓
Text Embeddings
常见 Text Encoder:
CLIP Text Encoder
OpenCLIP Text Encoder
T5 Encoder
Gemini/Qwen/LLaMA 类 LLM encoder hidden states
Stable Diffusion 1.x 常用 CLIP text encoder;SDXL 使用更强的双文本编码器;一些新模型会使用 T5 或大语言模型作为文本编码器。
4.1 文本 embedding 的作用
文本 embedding 会作为条件输入到去噪网络中:
Noise latent + timestep + text embedding
↓
Denoising Network
↓
Predicted noise
也就是说,扩散模型每一步去噪时都会参考文本语义。
5. Denoising Network:扩散模型的核心生成器
这是扩散模型最关键的组件。
它的任务是:
给定当前带噪 latent、时间步、条件信息,
预测噪声或预测干净图像。
输入:
z_t:当前带噪 latent
t:扩散时间步
c:条件信息,例如文本 embedding、图像 embedding、mask、pose
输出:
预测噪声 ε_theta(z_t, t, c)
公式:
ε_pred = ε_θ(z_t, t, c)
然后 sampler 根据预测噪声更新 latent:
z_t → z_{t-1}
经过多次迭代:
z_T → z_{T-1} → ... → z_1 → z_0
最后 z_0 经过 VAE Decoder 得到图像。
6. U-Net:经典扩散去噪网络
Stable Diffusion 1.x / 2.x / SDXL 主要使用 U-Net 作为去噪网络。
结构:
Noisy Latent
↓
Down Blocks
↓
Middle Block
↓
Up Blocks
↓
Predicted Noise
U-Net 特点:
编码器-解码器结构
有 skip connection
适合图像空间/latent 空间的局部细节恢复
可以融合文本 cross-attention
简化结构:
Text Embedding
↓
Noisy Latent → Downsample → Bottleneck → Upsample → Noise Prediction
↘____________ skip connections ____________↗
6.1 U-Net 中的主要子模块
| 子模块 | 作用 |
|---|---|
| ResBlock | 提取局部图像特征 |
| Self-Attention | 建模图像内部长距离关系 |
| Cross-Attention | 融合文本或多模态条件 |
| Downsample | 降低空间分辨率,扩大感受野 |
| Upsample | 恢复空间分辨率 |
| Time Embedding | 注入当前扩散时间步信息 |
| Skip Connection | 保留低层细节 |
7. DiT:Transformer 式扩散生成器
除了 U-Net,现代图像生成模型越来越多使用 Diffusion Transformer,DiT。
DiT 不再用 CNN U-Net,而是把 latent 切成 patch token,再用 Transformer 去噪。
结构:
Latent z_t
↓
Patchify
↓
Latent Tokens
↓
Add Time Embedding + Condition Embedding
↓
Transformer Blocks
↓
Predict Noise / Velocity
↓
Unpatchify
优点:
扩展性强
适合大模型训练
适合和多模态 token 融合
更接近 LLM / VLM 架构
缺点:
小规模训练不一定优于 U-Net
推理成本可能更高
对训练数据和算力要求更高
在多模态模型中,DiT 很有潜力,因为它天然适合统一处理:
文本 token
图像 token
视频 token
深度 token
bbox token
mask token
8. Noise Scheduler:加噪和去噪时间表
扩散模型训练时会不断给图像 latent 加噪:
z_0 → z_1 → z_2 → ... → z_T
其中:
z_0:干净 latent
z_T:近似纯高斯噪声
前向加噪公式:
q(z_t | z_0) = N(√α_t z_0, (1 - α_t)I)
可写成:
z_t = √α_t z_0 + √(1 - α_t) ε
其中:
ε ~ N(0, I)
训练目标是让模型预测这个噪声:
L = || ε - ε_θ(z_t, t, c) ||²
8.1 Scheduler 的作用
Scheduler 决定:
每一步加多少噪声
每一步去多少噪声
推理需要多少步
采样轨迹怎么走
常见 scheduler / sampler:
| 名称 | 特点 |
|---|---|
| DDPM | 原始扩散采样,稳定但慢 |
| DDIM | 可以少步采样,速度更快 |
| Euler | 常用、速度快 |
| Euler Ancestral | 随机性更强 |
| DPM-Solver | 高效高质量 |
| UniPC | 少步生成表现较好 |
| Heun | 稳定性较好 |
9. Time Embedding:时间步编码
扩散模型每一步去噪难度不同。
t 大:图像接近纯噪声,需要生成大结构
t 小:图像接近完成,需要修复细节
所以去噪网络必须知道当前是第几步。
timestep t
↓
Time Embedding
↓
加入 U-Net / DiT
常见实现:
Sinusoidal Embedding
MLP Time Embedding
AdaLN / FiLM 调制
作用:
让模型根据不同噪声强度执行不同去噪策略
10. Cross-Attention:文本控制图像生成的核心
Cross-Attention 是文生图扩散模型最关键的条件融合方式。
在 U-Net 或 DiT 中,图像 latent token 作为 Query,文本 token 作为 Key / Value:
Q = image latent features
K = text embeddings
V = text embeddings
计算:
Attention(Q, K, V) = softmax(QK^T / √d) V
含义:
每个图像区域在生成时,都会关注 prompt 中相关的文本 token。
例如 prompt:
A red Coca-Cola bottle on the second shelf
图像区域可能分别关注:
red
Coca-Cola
bottle
second shelf
这就是文本能控制图像内容、颜色、物体、布局的核心原因。
11. Classifier-Free Guidance:提示词引导强度
Classifier-Free Guidance,简称 CFG,是扩散模型推理中的关键技巧。
它会同时计算两次预测:
无条件预测:ε_uncond
有条件预测:ε_cond
然后组合:
ε_guided = ε_uncond + s × (ε_cond - ε_uncond)
其中 s 是 guidance scale。
含义:
s 越大,越贴合 prompt
s 越小,越自然、自由
常见设置:
CFG = 5 ~ 9
太低:
图像可能不听 prompt
太高:
图像可能过饱和、失真、细节崩坏
12. Sampler:从噪声生成图像的推理算法
推理时,从随机噪声开始:
z_T ~ N(0, I)
然后使用去噪网络和 sampler 逐步更新:
z_T → z_{T-1} → ... → z_0
最终:
image = VAE_Decoder(z_0)
不同 sampler 会影响:
生成速度
细节质量
稳定性
随机性
风格
常见推理步数:
20 steps
30 steps
50 steps
少步生成更快,但质量可能下降;多步生成更稳定,但延迟更高。
13. ControlNet:可控图像生成组件
在多模态模型中,图像生成经常不只受文本控制,还会受结构条件控制,例如:
边缘图
深度图
人体姿态
分割 mask
草图
法线图
语义图
布局 bbox
ControlNet 的作用是:
在不破坏原始扩散模型能力的情况下,
额外注入结构控制信号。
结构上可以理解为:
Control Image
↓
Control Encoder
↓
Control Features
↓
注入 U-Net 多层
整体:
Prompt Embedding ─────────────┐
↓
Noisy Latent → U-Net → Predicted Noise
↑
ControlNet Features
↑
Depth / Pose / Edge / Mask
13.1 ControlNet 常见条件
| 条件 | 用途 |
|---|---|
| Canny Edge | 控制边缘轮廓 |
| Depth Map | 控制空间结构 |
| OpenPose | 控制人体姿态 |
| Segmentation Map | 控制语义区域 |
| Normal Map | 控制表面方向 |
| Lineart | 控制线稿 |
| Scribble | 草图生成 |
| Inpaint Mask | 局部重绘 |
| Tile | 超分辨率 / 细节增强 |
14. IP-Adapter:图像参考条件
IP-Adapter 主要用于:
参考图像 → 控制生成图像的主体、风格、身份或外观
例如:
给一张商品包装图
生成同款商品在不同货架位置的图像
它不像 ControlNet 那样强控制结构,而是更偏向:
风格一致
主体一致
身份一致
外观一致
结构:
Reference Image
↓
Image Encoder
↓
Image Prompt Embedding
↓
Cross-Attention / Adapter 注入扩散模型
15. T2I-Adapter:轻量条件适配器
T2I-Adapter 和 ControlNet 类似,也用于条件控制,但通常更轻量。
Condition Image
↓
Adapter
↓
Feature Injection
↓
U-Net
适合:
边缘部署
多控制条件组合
低成本微调
16. Inpainting 组件:局部重绘
图像编辑时常用 inpainting 模型。
输入:
原图
mask
prompt
输出:
只修改 mask 区域后的图像
结构:
Original Image
Mask
Prompt
↓
VAE Encoder + Mask Encoder + Text Encoder
↓
Denoising U-Net
↓
VAE Decoder
↓
Edited Image
对自动售货柜场景可以用于:
遮挡补全
商品包装替换
缺失区域生成
hard negative 数据增强
17. Image-to-Image 组件
图生图不是从纯噪声开始,而是从原图 latent 加噪后开始。
流程:
Input Image
↓
VAE Encoder
↓
z_0
↓
加一定强度噪声
↓
z_t
↓
根据 prompt 去噪
↓
VAE Decoder
↓
Output Image
关键参数是 denoise strength。
strength 小:保留原图更多
strength 大:变化更大
18. 多模态模型中的条件来源
在多模态大模型中,扩散图像生成器的条件不一定只有文本。
常见条件包括:
| 条件来源 | 作用 |
|---|---|
| 文本 prompt | 控制语义内容 |
| 图像 embedding | 控制主体/风格 |
| OCR 文本 | 控制文字或商品标签 |
| bbox / layout | 控制物体位置 |
| mask | 控制局部生成 |
| depth | 控制空间结构 |
| pose | 控制人物姿态 |
| segmentation | 控制区域类别 |
| LLM hidden state | 由语言模型规划生成内容 |
| VLM visual token | 用视觉理解结果指导生成 |
| RAG 检索结果 | 注入知识、商品属性、参考图 |
19. 多模态 LLM + 扩散生成器的组合方式
多模态模型中,LLM/VLM 和扩散模型通常有三种组合方式。
19.1 LLM 生成 prompt,扩散模型生成图像
这是最常见方式。
用户需求
↓
LLM 解析并改写 prompt
↓
Stable Diffusion / SDXL / Flux / DiT
↓
生成图像
优点:
简单
工程成熟
易接入现有扩散模型
缺点:
LLM 和 diffusion 之间只是文本连接
深层语义对齐有限
19.2 LLM hidden state 直接控制 diffusion
更深度的融合方式:
多模态输入
↓
MLLM
↓
Hidden States
↓
Projection Adapter
↓
Diffusion Cross-Attention
↓
Generated Image
这样图像生成不只依赖 prompt,而是可以依赖 MLLM 的内部语义表示。
适合:
复杂推理后生成图像
多图参考生成
图文混合理解后生成
19.3 统一 token 模型
把图像也离散化成 token,直接由 Transformer 生成图像 token。
Text Tokens + Image Tokens
↓
Unified Transformer
↓
Generated Image Tokens
↓
Image Decoder
↓
Image
这类路线更接近:
AnyGPT
Unified-IO
VILA-U
Chameleon 类架构
它不一定使用传统扩散模型,但目标类似:统一多模态输入输出。
20. 扩散图像生成器的训练过程
训练目标通常是让模型学会从带噪 latent 中预测噪声。
训练数据:
图像 x
文本 caption c
步骤:
1. x 经过 VAE Encoder 得到 z_0
2. 随机采样时间步 t
3. 随机采样高斯噪声 ε
4. 构造带噪 latent z_t
5. 输入 z_t、t、caption embedding c
6. Denoising Network 预测 ε_pred
7. 用 MSE 约束 ε_pred 接近真实噪声 ε
公式:
z_t = √α_t z_0 + √(1 - α_t) ε
损失:
L = E[ || ε - ε_θ(z_t, t, c) ||² ]
有些模型不预测噪声,而是预测:
x_0:干净 latent
v:velocity
score:梯度方向
21. 推理过程详细展开
输入 prompt:
一瓶红色可乐放在自动售货柜第二层
推理步骤:
1. Tokenizer 编码 prompt
2. Text Encoder 得到 text embedding
3. 初始化随机 latent z_T
4. 设置 scheduler 时间步,例如 30 steps
5. 对每个时间步 t:
- U-Net/DiT 输入 z_t、t、text embedding
- 预测噪声 ε_pred
- CFG 调整 ε_pred
- Sampler 更新 z_t → z_{t-1}
6. 得到最终 latent z_0
7. VAE Decoder 解码成 RGB 图像
8. 后处理保存图像
伪代码:
text_ids = tokenizer(prompt)
text_emb = text_encoder(text_ids)
z = randn(latent_shape)
for t in scheduler.timesteps:
eps_cond = denoiser(z, t, text_emb)
eps_uncond = denoiser(z, t, empty_text_emb)
eps = eps_uncond + guidance_scale * (eps_cond - eps_uncond)
z = scheduler.step(eps, t, z)
image = vae_decoder(z)
22. 在 sVLM / 自动售货柜中的应用方式
对于你的自动售货柜项目,扩散图像生成器可以不是主识别模型,而是辅助数据和鲁棒性增强模块。
22.1 生成训练数据
用于:
新包装模拟
不同光照模拟
遮挡模拟
不同货架背景模拟
商品摆放变化模拟
反事实样本生成
例如:
输入:可乐商品图 + 货架背景 + bbox
输出:不同角度、不同遮挡、不同光照下的可乐货架图
22.2 Hard Negative 生成
自动售货柜最怕相似商品混淆:
可口可乐 vs 百事可乐
农夫山泉不同容量
同品牌不同口味
新旧包装
可以用 diffusion 生成 hard negative:
相似颜色
相似瓶型
相似标签布局
不同 SKU
用于提升 embedding / classifier 区分能力。
22.3 遮挡补全与低质量增强
对于拍摄质量差的图像:
局部遮挡
反光
模糊
标签缺失
角度偏斜
可以用 inpainting / ControlNet 做辅助恢复或数据增强。
但工程上要注意:
生成图不能直接作为事实依据
只能作为训练增强或候选参考
不能替代真实检测结果
22.4 结构条件生成
结合 M2 货柜结构:
shelf line
cabinet mask
product bbox
segmentation mask
可以生成符合货柜布局的合成数据:
货架结构图 + 商品 prompt → 合成货柜图像
推荐组合:
ControlNet + bbox/layout condition + product reference image
23. 面向工程实现的组件拆分
可以把图像生成器设计成如下模块:
ImageGenerator
├── TextPromptEncoder
├── ImageConditionEncoder
├── LayoutConditionEncoder
├── VAEEncoder
├── VAEDecoder
├── DenoisingUNet / DiT
├── Scheduler
├── Sampler
├── ControlModule
│ ├── ControlNet
│ ├── T2IAdapter
│ └── IPAdapter
├── InpaintModule
├── SafetyChecker
└── PostProcessor
C++/部署侧可以抽象为:
struct DiffusionCondition {
std::string prompt;
std::string negative_prompt;
Image reference_image;
Image mask;
Image depth;
Image edge;
Image segmentation;
std::vector<BBox> layout_boxes;
std::vector<std::string> layout_labels;
};
struct DiffusionConfig {
int width = 512;
int height = 512;
int steps = 30;
float guidance_scale = 7.5f;
float denoise_strength = 1.0f;
uint64_t seed = 42;
};
struct GeneratedImage {
Image image;
float generation_time_ms;
std::string prompt_used;
uint64_t seed;
};
接口:
class DiffusionImageGenerator {
public:
bool Init(const std::string& model_dir);
GeneratedImage TextToImage(
const DiffusionCondition& condition,
const DiffusionConfig& config
);
GeneratedImage ImageToImage(
const Image& input,
const DiffusionCondition& condition,
const DiffusionConfig& config
);
GeneratedImage Inpaint(
const Image& input,
const Image& mask,
const DiffusionCondition& condition,
const DiffusionConfig& config
);
};
24. 组件之间的数据流
24.1 Text-to-Image
Prompt
↓
Text Encoder
↓
Text Condition
↓
Random Noise
↓
Denoising U-Net / DiT
↓
Latent z_0
↓
VAE Decoder
↓
Generated Image
24.2 Image-to-Image
Input Image
↓
VAE Encoder
↓
Latent z_0
↓
Add Noise by strength
↓
Denoising with Prompt
↓
VAE Decoder
↓
Edited Image
24.3 Inpainting
Input Image + Mask + Prompt
↓
VAE Encoder
↓
Masked Latent
↓
Denoising U-Net
↓
VAE Decoder
↓
Inpainted Image
24.4 ControlNet
Prompt
Control Image
Random Latent
↓
Text Encoder
Control Encoder
↓
U-Net with Control Injection
↓
Generated Image
25. 与 GAN / VAE 的区别
| 方法 | 生成方式 | 特点 |
|---|---|---|
| GAN | 一步生成 | 快,但训练不稳定 |
| VAE | 编码-解码重建 | 稳定,但图像容易模糊 |
| Diffusion | 多步去噪生成 | 质量高、可控性强,但推理慢 |
| Autoregressive Image Token | token 逐个生成 | 统一性强,但高分辨率成本高 |
扩散模型优势:
图像质量高
训练稳定
条件控制能力强
可编辑性好
适合图文、多条件、多模态生成
缺点:
推理速度慢
多步采样成本高
部署复杂
对显存和算力要求较高
26. sVLM 场景下最关键的组件
如果目标是边缘端或工业视觉,最重要的不是完整文生图能力,而是下面几个组件:
| 组件 | 重要性 | 原因 |
|---|---|---|
| VAE | 高 | 决定 latent 压缩效率和重建质量 |
| Denoising U-Net / DiT | 极高 | 核心生成能力 |
| Scheduler / Sampler | 高 | 决定速度和质量 |
| ControlNet / Adapter | 极高 | 让生成结果符合结构约束 |
| IP-Adapter | 高 | 保持商品外观一致 |
| Inpainting | 高 | 局部补全、包装替换、遮挡模拟 |
| Text Encoder | 中高 | 决定 prompt 理解能力 |
| CFG | 中 | 控制 prompt 贴合度 |
| LoRA | 高 | 快速适配新商品、新风格、新场景 |
27. 推荐理解路径
学习扩散图像生成器,可以按这个顺序:
1. DDPM 原理:加噪 / 去噪 / 噪声预测
2. Latent Diffusion:为什么在 latent 空间生成
3. U-Net:扩散去噪网络结构
4. Text Encoder + Cross-Attention:文本如何控制图像
5. Scheduler / Sampler:推理过程怎么加速
6. CFG:prompt 引导强度
7. ControlNet:结构可控生成
8. IP-Adapter:参考图像控制
9. Inpainting / Img2Img:图像编辑
10. DiT:Transformer 化扩散模型
28. 总结
多模态图像生成器中的扩散模型,核心组件可以概括为:
Text / Image / Layout Condition Encoder
+
VAE Latent Space
+
Denoising U-Net / DiT
+
Scheduler / Sampler
+
Cross-Attention / CFG / ControlNet
↓
逐步从噪声 latent 还原出目标图像
其中最关键的是:
VAE 负责图像压缩与还原;
Text Encoder 负责理解 prompt;
U-Net / DiT 负责逐步去噪生成;
Scheduler 负责控制去噪路径;
Cross-Attention 负责文本/多模态条件注入;
ControlNet / Adapter 负责结构化可控生成。
对于 sVLM ,扩散图像生成器最适合作为:
训练数据增强器
新包装模拟器
遮挡/光照/角度扰动生成器
hard negative 样本生成器
结构约束合成数据生成器
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)