扩散模型的unet的结构
·
扩散模型中的 U-Net 结构 是其核心组成部分,主要用于在扩散反演(denoising)过程中预测噪声、速度或干净图像。下面从整体结构、关键模块以及在扩散模型中的作用三个方面进行介绍。
一、整体结构概览
扩散模型中的 U-Net 继承了经典 U-Net 的 编码器–解码器(Encoder–Decoder) 对称结构,并通过 跳跃连接(Skip Connections) 保留多尺度信息:
输入噪声图像
↓
Encoder(下采样路径)
↓
Bottleneck(中间层)
↓
Decoder(上采样路径)
↓
输出(预测噪声 / x₀ / v)
其目标是在给定时间步 ( t ) 的条件下,从带噪图像 ( x_t ) 中恢复或预测噪声信息。
二、U-Net 的核心组成模块
1. 输入与时间步嵌入(Time Embedding)
扩散模型的 U-Net 是 条件模型,必须感知当前扩散时间步 ( t )。
- 时间步 ( t ) 通常通过 正弦位置编码(Sinusoidal Embedding) 或可学习嵌入表示
- 时间嵌入经过 MLP 映射后:
- 加入到 ResBlock 中
- 以加法或缩放方式调制特征
作用:让网络知道当前处于“去噪的哪一步”
2. 编码器(Downsampling Path)
编码器逐层 降低空间分辨率、增加通道数,提取高层语义特征。
每一层通常包含:
- Residual Block(残差块)
- Conv → Norm → Activation
- 融合时间步嵌入
- 下采样操作
- Strided Convolution 或 AvgPool
结构示意:
ResBlock → ResBlock → Downsample
3. 注意力模块(Attention Block)
在中高分辨率层中,U-Net 通常插入 自注意力(Self-Attention) 或 交叉注意力(Cross-Attention):
- Self-Attention
- 捕捉长距离依赖
- 解决 CNN 感受野有限的问题
- Cross-Attention(条件扩散)
- 用于文本、类别等条件(如 Stable Diffusion)
- Query 来自图像特征,Key/Value 来自条件嵌入
注意力模块通常位于 瓶颈层或低分辨率层,以降低计算成本。
4. 瓶颈层(Middle Block)
位于 U-Net 的最底部,包含:
- ResBlock
- Attention Block
- ResBlock
这是信息压缩最严重、语义最强的位置。
5. 解码器(Upsampling Path)
解码器逐层 恢复空间分辨率,并结合编码器特征:
- 上采样(Nearest + Conv 或 Transposed Conv)
- 与编码器对应层的特征 拼接(Skip Connection)
- ResBlock + 时间嵌入
结构示意:
Upsample → Concat(skip) → ResBlock → ResBlock
跳跃连接保证了细节信息不会在下采样中丢失。
6. 输出层(Output Head)
最后通过一个卷积层输出:
- 预测噪声 ( \epsilon_\theta(x_t, t) )
- 或预测原始图像 ( x_0 )
- 或预测 velocity ( v )(v-prediction)
输出通道数与输入图像一致。
三、扩散模型 U-Net 的典型特性总结
| 特性 | 说明 |
|---|---|
| 多尺度结构 | 编码器–解码器 + 跳跃连接 |
| 时间条件 | 通过时间步嵌入调制特征 |
| 残差学习 | 稳定训练、加快收敛 |
| 注意力机制 | 捕捉全局依赖 |
| 条件生成 | 支持文本、类别等条件 |
四、与传统 U-Net 的区别
| 方面 | 传统 U-Net | 扩散模型 U-Net |
|---|---|---|
| 时间建模 | 无 | 有时间步嵌入 |
| 输出目标 | 分割掩码 | 噪声 / 图像 / v |
| 注意力 | 少见 | 常用 |
| 条件输入 | 少 | 广泛支持(文本、标签) |
| 深度与宽度 | 较浅 | 更深、更宽 |
五、一句话总结
扩散模型中的 U-Net 是一个带时间条件和注意力机制的多尺度去噪网络,通过编码–解码结构与跳跃连接,在不同扩散时间步上逐步移除噪声,从而实现高质量图像生成。
更多推荐
所有评论(0)