Stable Diffusion核心算法DDPM解析

这篇具有很好参考价值的文章主要介绍了Stable Diffusion核心算法DDPM解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DDPM:Denoising Diffusion Probabilistic Model,去噪扩散概率模型

本文参考:一个视频看懂扩散模型DDPM原理推导|AI绘画底层模型_哔哩哔哩_bilibili

1、大概原理

Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

从右往左为正向加噪过程,从左往右为逆向降噪过程。

在正向过程中不断加噪,经过T次之后得到,我们希望

这样在推理过程中,我们可以从 随机取出(加‘ 表明这个是新值)。

如果我们能学得的降噪方法,就可以最终通过的新图片。

2、扩散模型的降噪方法预测什么

现在就是需要学的降噪方法,DDPM算法不是直接学预测值的方法,而是预测的条件概率分布,然后从分布中取值得到的值。此方法类似于deepar预测方法,预测的是分布而不是值。

那么为什么去预测分布而不是确切的的值?

因为有了分布之后就可以采样取出,模型就有了随机性。

进一步,假如得到,就可以抽样得到,这样一步步下去就可以从。所以,我们要学习的是p的分布,而不是确切的某张图。

结论:学习过程全程是在预测分布p

后续我们会看到模型在预测噪音,这个噪音不是和之间的噪音,而是正态分布p中的计算时涉及到的噪音。

所以,我们通过预测得到,进而得到p。也验证了我们的结论,即:学习过程全程是在预测分布p

3、条件概率分布的拆解

公式1:,根据贝叶斯公式对最初的条件概率分布进行了转换,新得到的算式包含了3个概率分布。

(1)第1个p的计算

第1个p为:

从到为加躁过程中的概率分布,因为加躁过程是事先定义的,所以概率分布p也是可以被定义的。

现在我们定义加躁过程如下:

公式2Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能,其中的噪音,。

因为,所以。(ps:方差需要取平方)

可以看出为噪音的方差,它需要非常小接近0。只有加的噪音很小,前向、后向才是服从正态分布的。

进一步推导,,即:

公式3:

(2)第3个p的计算

第3个p为:,它和第2个p是类似的。如果找到一个的计算方法,那么另一个也可以类似得到。

上一步我们得到每一步加躁过程的公式2,以及每一步加躁的条件概率分布公式3。

针对加躁过程,,所以理论上可以用来推导出。

对公式1进行改造:

公式4:

因为加躁过程是马尔可夫过程,所以只跟前一步有关,和再前一步无关,即和也无关,所以

而是从一步步得到,所以不能再做简化。进而,公式4简化为:

公式5

现在重新开始计算新的第3个p的值,从公式2开始推导如下(ps:括号表示其中含有部分参数但是未写出来,省略不重要的信息):

Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

最后,经过不严谨的推导我们给出官方结果:

公式6:,其中表示连乘。

(3)扩散公式求解

上一步求得,那么也可以类似求得。

直接给出公式4的官方结果:

公式7

其中是超参,的公式见如下:

公式8Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

因为固定,所以求的任务就变成了求。

如果有了,那么根据如下公式可以得到预测的推理值:

公式9Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

如果直接根据公式7从中取出一个,该过程是不可导的(直接通过python包输入均值、方差取值的方式),那么逆向过程有问题,所以通过重参数技巧转换为公式9这样一个可求导的公式来表达。

在推理阶段就是我们最终想要的值,该值未知,所以需要转换为已知因子的公式。

公式6经过重参数技巧转换后如下:

公式10Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能,进而得到:

公式11:,这其中的t为当前加噪阶段数,会变化。同时,这个是中间过程的参数值,不可以作为最终的预测值,因为推理的p过程需要遵循马尔可夫过程,所以必须一步步推导到。

在公式7中,未知值是,而该值中的未知值是,而中的未知值是,该值无法通过现有公式计算推导得到

于是我们借助UNet网络,输入,输出

将公式11代入公式8,可得到:

公式12:,公式中除了其他均为已知。

而是通过UNet网络预测出来的,可以表示为,为UNet模型参数。

*************扩散模型通过UNet网络得到预测图像的过程**************

以上就是扩散模型DDPM最重要的逻辑

4、模型训练

根据公式12可知,UNet网络训练的是正态分布的噪音。

问题1:模型训练时的输入输出?

答案:输入,输出

问题2:那么哪个过程进行UNet网络参数的训练呢?

答案:加噪过程。加噪过程是训练阶段,降噪过程是推理阶段。

根据公式2可知,加噪过程的噪音是实现定义好的,所以我们可以比较预测的噪音和真实的KL散度计算loss值,在官方说明中KL散度公式一通推导后可简化为计算这两个值的mse值。

问题3:训练时是否正向一步步推导的?

答案:不需要。在训练过程中,根据公式10 Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能可知,可以通过,,, 这4个值计算得到。

可以提前计算好放在内存中,就是输入输入的图片集,就是输入的噪音,是加噪阶段数。

所以正向中每一步皆可直接获取值。

5、训练和推理的伪代码实现

(1)训练阶段

Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

解读:

表示从数据集中取出图片

表示随机抽取一个加噪阶段数,如之前所述,加噪过程不需要一步步来。

Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

(2)推理阶段

 Stable Diffusion核心算法DDPM解析,AIGC,神经网络,stable diffusion,人工智能

 解读:

 表示逆向过程需要一步步来的。

第4步的复杂计算对应公式9,计算中的第一个公式对应公式12。文章来源地址https://www.toymoban.com/news/detail-652793.html

到了这里,关于Stable Diffusion核心算法DDPM解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通俗理解DDPM到Stable Diffusion原理

    🤗关注公众号 funNLPer 畅度阅读🤗 代码1:stabel diffusion 代码库 代码2:diffusers 代码库 论文:High-Resolution Image Synthesis with Latent Diffusion Models 模型权重:runwayml/stable-diffusion-v1-5

    2024年02月11日
    浏览(40)
  • AI绘画Stable Diffusion原理之扩散模型DDPM

    传送门: stable diffusion:Git|论文 stable-diffusion-webui:Git Google Colab Notebook部署stable-diffusion-webui:Git kaggle Notebook部署stable-diffusion-webui:Git AI绘画,输入一段文本就能生成相关的图像,stable diffusion便是其中一个重要分支。自己对其中的原理比较感兴趣,因此开启这个系列的文章

    2024年02月03日
    浏览(50)
  • CV多模态和AIGC的原理解析:从CLIP、BLIP到Stable Diffusion、Midjourney

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月13日
    浏览(50)
  • CV多模态和AIGC原理解析:从CLIP、BLIP到DALLE 3、Stable Diffusion、MDJ

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月06日
    浏览(47)
  • 生成式 AI - Diffusion 模型 (DDPM)原理解析(1)

    来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM) 论文链接:https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 简单地介绍diffusion model 的基本概念,diffusion model有很多不同的变形,现在比较成功的使用diffusion model实现的图像生成的系统,比如阿里、Google的系统基本上都是用差不

    2024年03月13日
    浏览(62)
  • CV多模态和AIGC的原理解析:从CLIP、BLIP到DALLE 3、Stable Diffusion/MDJ

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月08日
    浏览(48)
  • CV多模态和AIGC的原理解析:从CLIP、BLIP到DALLE三代、Stable Diffusion/MDJ

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月08日
    浏览(43)
  • AIGC下的CV多模态原理解析:从CLIP/BLIP到stable diffusion/Midjourney、GPT4

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月10日
    浏览(68)
  • 一文速览扩散模型优化过程:从DDPM到条件生成模型Stable Diffusion

    目前AIGC可以说是整个人工智能领域的当红炸子鸡,而Diffusion Model(扩散模型)正是目前各项图像生成式应用的主要架构。本人并不主要研究图像生成领域,不过由于项目需要也对其进行过一些调研,故写下这篇文章进行分享与记录。本文会从最简单的扩散模型开始讲起,然后

    2024年02月09日
    浏览(58)
  • AIGC专栏2——Stable Diffusion结构解析-以文本生成图像(文生图,txt2img)为例

    用了很久的Stable Diffusion,但从来没有好好解析过它内部的结构,写个博客记录一下,嘿嘿。 https://github.com/bubbliiiing/stable-diffusion 喜欢的可以点个star噢。 Stable Diffusion是比较新的一个扩散模型,翻译过来是稳定扩散,虽然名字叫稳定扩散,但实际上换个seed生成的结果就完全不

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包