一文弄懂扩散模型diffusion models

生成式人工智能(Generative AI)是当今最受关注的热门术语之一。近年来,涉及文本、图像、音频和视频生成的应用不断增加,呈现出一股蓬勃发展的趋势。

在图像创作方面,扩散模型(diffusion models)已成为内容生成的前沿技术。虽然它们最早在2015年被提出,但经过不断的创新和发展,如今已成为诸如DALLE、Midjourney等知名模型的核心机制。

什么是扩散模型?为什么扩散比自回归效果更好?stable diffusion原理精讲+代码实现,Diffusion Model

本文的目标是介绍扩散模型的基本原理。掌握这一基础知识,有助于理解更复杂的扩散模型变体中的高级概念,以及在训练自定义扩散模型时相关参数的作用。

扩散模型+AI学习路线可以上图扫码获取

资料包:一、 人工智能学习路线及大纲

二、计算机视觉OpenCV【视频+书籍】

三、AI基础+ 深度学习 + 机器学习 +NLP+ 机器视觉 教程

四、李飞飞+吴恩达+李宏毅合集

五、自动驾驶+知识图谱等资料

六、人工智能电子书合集【西瓜书、花书等】

七、各阶段AI论文攻略合集【论文带读/代码指导/本硕博/SCI/EI/中文核心】

 

物理学中的类比

想象一杯透明的清水。如果我们滴入少量黄色液体(比如颜料)会发生什么?黄色液体会逐渐均匀地扩散到整杯水中,最终形成一杯略带透明感的淡黄色混合液体。

上述过程被称为前向扩散:我们通过添加少量其他液体改变了环境的状态。然而,反向扩散——将混合液体恢复至原始状态——是否同样容易实现呢?事实证明并非如此。即使在最理想的情况下,实现这一目标也需要极其精密的机制。 

机器学习中的类比 

扩散过程同样适用于图像处理。假设有一张高清的狗狗照片,我们可以通过逐步添加随机噪声轻松改变这张图像。随着像素值的变化,画面中的狗狗会逐渐变得模糊甚至无法辨认——这种转换过程被称为前向扩散。 

反之,若给定一张充满噪声的图像,要重建原始图像则困难得多。这是因为在无数可能的噪声变体中,高度可识别的清晰图像状态寥寥无几。沿用前文的物理学类比,这一逆向过程被称为反向扩散

扩散模型的架构

为了更好地理解扩散模型的结构,让我们分别研究这两个扩散过程。

前向扩散

如前所述,前向扩散涉及逐步向图像添加噪声。但在实际应用中,这个过程会更加精细。

最常用的方法是为每个像素从均值为0的高斯分布中随机采样一个值(该值可正可负),然后将其叠加到原始像素值上。对所有像素重复这一操作后,原始图像就会转化为带噪声的版本。

所选的高斯分布通常具有较小的方差,这意味着采样值普遍较小。因此,每一步只会对图像产生细微的改动。

正向扩散是一个迭代过程,噪声会多次叠加到图像上。随着每次迭代,生成图像与原图的差异会逐渐增大。经过数百次迭代(实际扩散模型中的常见操作)后,图像最终会变得与纯噪声无异、完全无法辨认。

反向扩散

现在大家可能会问:执行这些前向扩散变换的目的是什么?答案是:在每次迭代中生成的图像用于训练神经网络。

具体来说,假设我们在前向扩散过程中进行了100次连续的加噪声变换。然后,我们可以利用每个步骤的图像来训练神经网络,从前一步的图像中重建出原始图像。预测图像与实际图像之间的差异是通过损失函数来衡量的——例如均方误差(MSE),它测量两幅图像像素级的平均差异。

这个例子展示了扩散模型如何重建原始图像。同时,扩散模型还可以被训练用来预测加到图像上的噪声。在这种情况下,为了重建原始图像,只需要将预测的噪声从前一次迭代的图像中减去即可。

虽然这两项任务看似相似,但预测添加的噪声比起图像重建要更为简单。

模型设计 

在对扩散技术有了基本的直观理解之后,深入了解一些更先进的概念对于理解扩散模型的设计至关重要。

迭代次数

迭代次数是扩散模型中的关键参数之一:一方面,使用更多的迭代意味着相邻步骤的图像对差异更小,从而使模型的学习任务变得更容易。另一方面,较高的迭代次数会增加计算成本。

虽然较少的迭代次数可以加快训练速度,但模型可能无法学习到步骤之间平滑的过渡,导致性能下降。通常,迭代次数选择在50到1000之间。

神经网络架构

最常见的是,U-Net 架构被用作扩散模型的主干网络(backbone)。以下是一些原因:

  • U-Net 保持输入和输出图像的尺寸一致,确保在整个反向扩散过程中图像大小保持不变。

  • 它的bottleneck architecture使其能够在压缩到潜在空间后重建整个图像。同时,通过跳跃连接(skip connections)保留了关键的图像特征。

  • U-Net 最初是为生物医学图像分割设计的,在该领域像素级的准确性至关重要。U-Net 的优势很好地适用于需要精确预测单个像素值的扩散任务。

共享网络

乍一看,扩散过程中的每次迭代似乎都需要训练一个单独的神经网络。虽然这种方法是可行的,并且可以产生高质量的推理结果,但从计算角度来看,它是非常低效的。例如,如果扩散过程包含一千个步骤,我们就需要训练一千个 U-Net 模型——这是一项极其耗时且资源密集型的任务。

然而,我们可以观察到,不同迭代之间的任务配置本质上是相同的:在每种情况下,我们都需要重建一个尺寸相同、被具有相似程度噪声改变的图像。这一重要见解促成了在所有迭代中使用单个共享神经网络的想法。

实践中,这意味着我们使用一个具有共享权重的单个 U-Net 模型,并在来自不同扩散步骤的图像对上对其进行训练。在推理过程中,噪声图像多次通过同一个训练好的 U-Net,逐步对其进行细化,直到生成高质量的图像。

尽管由于仅使用单个模型,生成质量可能会略有下降,但训练速度的提升变得非常显著。 

结论 

在本文中,我们探讨了扩散模型的核心概念,这些模型在图像生成领域扮演着关键角色。这些模型有许多变体,其中 Stable Diffusion 模型变得尤为流行。虽然基于相同的基本原理,Stable Diffusion 也支持集成文本或其他类型的输入,以指导和约束生成的图像。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值