U-Net网络与扩散模型
u-net网络是绝大多数扩散模型的标准去噪网络骨架,对称编解码 + 跳跃连接,非常适配扩散模型。所以,我们有必要弄清u-net在扩散模型中的使用
想搞懂「U-Net 为适配扩散做了哪些基础改动」,DDPM是学术经典入门案例
经典案例 - DDPM( Denoising Diffusion Probabilistic Models)
DDPM的核心算法
上图给出了DDPM的算法流程,为了更好地学习和理解,我们可以先学习Training和Sampling的核心数学原理。
加噪
这部分的核心工作是加噪,为了过程更加可控凝练,DDPM借助了马尔可夫链:
这样我们只需要提供一个噪声,即可直接得出任意时间步的图像。
去噪
这部分的主要工作是去噪
逆扩散采样公式通过去除预测噪声和加入随机噪声,既保证了预测的准确性,又引入了随机性
DDPM算法流程概述![]()
Training
这是网络的训练
1、repeat
2、从数据集随机抽取一张真实清晰原图
3、随机选一个时间步(代表加噪轻重,t 越大噪声越多)
4、手动采样真实标准高斯噪声(这是网络要学习拟合的标签)
5、直接借助公式(噪声由UNet预测给出),然后梯度下降更新网络参数,最小化损失
6、循环训练,直到预测误差足够小,训练结束
Sampling
训练好 UNet 后,不输入任何原图,只从纯随机噪声出发,一步步逆扩散去噪,生成全新的图片,称为采样
1、初始化,生成一张纯高斯噪声图(无任何图像信息)
2、从最大时间步往清晰图迭代,一步一步去噪
3、if t>1,还没到最后一步,z为随机高斯噪声
else 最后一步,不再添加随机扰动,直接输出干净图,所以z=0
4、依据核心公式
5、循环结束,全部步数去噪完成
6、返回最终生成的清晰图像
最后了解几个操作:
1、输入维度描述:
x=[B,C,H,W],B=batch、C= 通道、(H/W)= 特征图高宽
2、GroupNorm 分组归一:
在原始的u-net里,使用的是batchnorm,下面举个具体例子感受一下:
假设我们有
batchnorm会将所有样本的对应通道进行归一化处理,比如通道0的处理为:x0 ch0 [1,2,3,4]、x1 ch0 [1,1,1,1],合成列表 [1,2,3,4,1,1,1,1], 计算方差和均值即可进行归一化。
groupnorm则完全不同,这种处理方式是例如:取出样本0的ch0和ch2组成[1,2,3,4,9,10,11,12],然后计算方差和均值做归一化。
3、残差链接
残差链接是为了解决梯度的消失而设计的,由于链式求导法则的存在,一旦偏导小于1,那么梯度一定会越来越小,甚至存在消失的风险,导致模型无法继续训练。
4、额外嵌入量:
包括 时间步嵌入Timestep Embedding、Token 内容嵌入、空间位置嵌入Positional Embedding (Token 和Positional Embedding构成自注意力机制)
时间嵌入:正弦基础编码 + 两层 MLP 可学习投影(Swish 激活)
Token 内容嵌入:拉平空间维度转为 token 序列 [B, N, C],(N=H×W)
空间位置嵌入:原版 DDPM 使用可学习位置嵌入(不是正弦),形状[1, N, d_model],直接逐元素加到图像 token 向量上
总结
DDPM 分为前向加噪与逆扩散去噪两大流程,前向通过高斯闭式公式将清晰原图逐步加噪得到任意噪声程度的带噪图,同时生成可作为监督标签的真实噪声,以此构造训练样本,利用 UNet 网络以 MSE 损失学习从带噪图与时间步预测内部隐藏噪声;数学上通过贝叶斯推导证明反向转移服从高斯分布,借助重参数化技巧写出可微分的迭代采样公式,训练完成后,从纯随机高斯噪声出发,循环调用 UNet 预测噪声并代入逆扩散公式逐步去除噪声,最终生成全新清晰图像,其中 UNet 是整套模型的核心,承担噪声预测任务,是连接训练与图像生成的关键。