AI 绘画核心技术与实战
南柯
某头部大厂图像团队技术 leader,高级算法专家
6373 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
AI 绘画核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

06 | 颠覆者扩散模型:直观去理解加噪与去噪

你好,我是南柯。
上一讲我们结识了旧画师 GAN,提到了扩散模型在内容精致度、风格多样性和通用编辑等能力上弥补了 GAN 的不足之处。如果说 GAN 是旧画师,扩散模型无疑就是当下最受追捧的新画师。DALL-E 2、Imagen、Stable Diffusion 这些大名鼎鼎的模型,它们背后的魔术师都是扩散模型。
用过 Midjourney 的同学也许都注意过这样的现象,随着图像生成的进度条推进,图像也是从模糊到清晰。你可以点开下面的图片查看这个过程。
聪明的你应该猜到了,这背后的技巧大概率也是扩散模型!之所以说大概,是因为 Midjourney 并没有对外公布其背后的算法原理,后面我们会用专门的一讲带你推测 Midjourney 背后的技术方案,这里先卖个关子。
那么,扩散模型的工作原理是怎样的呢?算法优化目标是什么?与 GAN 相比有哪些异同?这一讲我们便从这些基础问题出发,开始今天的扩散模型学习之旅。

初识扩散模型

扩散模型的灵感源自热力学。我们可以想象一下这样的过程,朝着一杯清水中滴入一滴有色碘伏,然后观察这杯水。
你会发现,碘伏在水中会有一个扩散的过程,最终完全在水中呈现出均匀的状态。扩散效应代表从有序到混乱的过程。比如下面这张图,把一滴红色的液体滴入清水中,颜色会逐渐扩散开,最终整杯水都变为红色。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

颠覆者扩散模型是一种新兴的AI绘画技术,灵感源自热力学中的扩散过程。该模型通过加噪和去噪的过程,逐步将噪声图转化为高质量的图片。加噪过程依赖于时间步t,而去噪过程涉及训练神经网络模型和采样器的运用。训练过程包括从数据集中随机抽取图片、选择时间步t、生成高斯噪声、计算加噪结果、预测噪声值和计算数值误差等步骤。训练完成后,可用UNet模型进行推理,即从噪声生成图像。扩散模型与GAN相比,通过学习去除噪声的过程实现图像生成,而GAN是通过生成器、判别器对抗训练实现图像生成。扩散模型的推理速度较慢,读者可思考如何加速推理过程。整体而言,扩散模型技术为AI绘画领域带来了新的可能性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 绘画核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • springXu
    unet这个模型是唯一选择么? 为什么不能用其他的? 有使用其他的模型,但也是用扩散的方法的么?

    作者回复: 你好。这是个很好的问题,当前UNet仍旧是去噪的主要方案,主要原因是UNet的输出和输入尺度相同,对于噪声预测比较友好(可以看下第8讲)。学者们也在试图换掉扩散模型中的 UNet 结构,比如 2022 年 12 月 UC 伯克利的学者提出了使用纯粹的Transformer 替代 UNet 结构(https://arxiv.org/abs/2212.09748),仍旧使用扩散模型的基本思路进行图像生成。感兴趣的话你可以看看这篇论文。希望能帮助到你。

    2023-08-01归属地:上海
    4
    2
  • AdamLing
    这节课对数学小白好难懂

    编辑回复: 建议先把握主线,比如尝试留言复述一下整体原理,借这种书面总结的方法检验一下自己理解程度。至于具体数学公式那里可以多看看,还可以和GPT聊一聊(21年前的知识他应该掌握得还好)。

    2023-08-10归属地:上海
    1
  • bookchan
    有公式使得x_t 也可以从原始图像 x_0 一次计算得到,unet预测的是最开始的随机噪声。那么推理的时候,随机生成t步的加噪图片,根据unet预测随机噪声,那么公式反过来,我们不就一步可以直接计算得到x_0了,也就是原图,为啥还得那么多步采样。

    作者回复: 你好。x_t 可以从原始图像 x_0 一次计算得到,这是因为在噪声计算的过程中做了近似,从x_0计算x_1、从x_1计算x_2、最终计算到x_t,把每一步加入的噪声用统一的高斯分布ϵ来表示,可以理解为是一种偷懒的加噪计算。而去噪过程是不能这样近似算的,我们要预测的就是第t步到第t-1步的噪声ϵ。而不是第t步到第0步的噪声ϵ。关于这个过程,推荐仔细看看DDPM论文的推导过程。希望对你有帮助。

    2023-09-15归属地:广东
  • bookchan
    老师,训练说到“每次从数据集中随机抽取一张图片”。不能够随机抽取batch张图片,提高训练并发度吗?

    作者回复: 你好。在实际训练过程中,我们是按照batch训练的,而且通常会使用较大的batch_size。这里说的随机抽取一张图片是针对伪代码的解读,方便读者理解。

    2023-09-15归属地:广东
  • 互联网砖瓦匠
    我感觉这些原理我看了顶多是做个了解了 数学渣渣 哈哈。

    作者回复: 你好,为了降低理解难度,我们跳过了很多数学推导。如果不是相关算法从业者,只需要了解整体思路、清楚扩散模型和GAN是不同的算法原理即可。希望能帮助到你。

    2023-09-04归属地:北京
  • 明远
    >> 公式中,xt​ 表示第 t 步的加噪结果;xt−1​ 表示第 t-1 步的加噪结果;αt​ 是一个预先设置的超参数,用于控制随时间步的加噪强弱,你可以理解为预先设定从 α1​ 到 α1000​ 1000 个参数;ϵ 表示一个随机的高斯噪声。 为什么采样器不会影响加噪的结果,这个公式是不是将加噪采样器设定为固定值了?为什么去噪声的过程可以使用不同的采样器呢?

    作者回复: 你好,这个问题在第9讲采样器中会展开讨论,这里我简单解释一下。我们在训练扩散模型的时候,加噪的方式非常朴素,每一步等于上一步加上一个高斯噪声。训练的过程是拟合这个噪声,训练过程和采样器是完全解耦的,并没有特意去遵循某种采样器的计算方法。希望能够帮助到你。

    2023-08-23归属地:湖北
  • cmsgoogle
    推理过程的伪代码第4行X\_t-1的生成,第一部分是去噪,第二部分为什么又加了一个噪音,应该去再解释一下。或者留个伏笔在后续章节再详细解释。

    作者回复: 你好。推理过程伪代码展示的是DDPM的采样过程,torch.sqrt(betas[t])*z这一项其实是引入了随机噪声,可以理解为高斯分布中的方差项,因此每一步采样都具有一定随机性。事实上在DDIM采样器中,这一项就被拿掉了,采样过程变得确定。 希望能帮助到你。

    2023-08-12归属地:浙江
  • 一只豆
    周末看咱们整体课程目录,畅想这个单元“基础篇:AI绘画原理揭秘”的学习,看到单元末尾处的“实战项目(二)动手训练一个你自己的扩散模型” 时忽然冒出一个问题: 现在 Embedding/LoRa/Hypernetwork这么流行(还可多个相互配合使用),还有Controlnet这种可控出图的神器,那么,在何种情况下(假设预算充足,追求垂直领域效果世界一流),对 Diffusion model进行什么样的定制化训练能够实现上面这些 轻量级方法不能达到的 什么样的效果呢? 我相信未来的几节原理课可能会点点滴滴的回答这个问题~ 但也许可以把这个问题当作一个 核心问题 脉络化在未来的几节课程中。。。再次感谢老师深入浅出的课程设置思想。

    作者回复: 你好。这是个很好的问题,也是当下很多企业在做的事情。假定A100显卡充足、资金充足、标注员充足,我个人觉得有两种思路:第一,从各种渠道抓取海量数据、找标注员做美学标注,然后用海量优质的数据去finetune最头部的开源模型。这种模式得到的模型在垂类领域大概率会比开源社区好不少。第二,探索Parti这类自回归的方案。这条路的问题在于训练框架没有SD成熟,但搞不好能做出更颠覆的东西。效果上,企业最想拿到的应该还是对标Midjourney的大模型、指令级修图能力、单图不训练的「妙鸭相机」类效果等,这几个事情至少当前开源社区轻量化的方法还是做不到的。也感谢你的建议,在第三章(经典模型方案),我们会更多探讨这些问题。感谢你的反馈,希望能帮到你。

    2023-07-29归属地:广东
    2
  • peter
    请教老师两个问题: Q1:先加噪声,再去噪,还是不太理解为什么这样做? 喝了一口水,然后再吐掉,有意思吗?为什么就有作用? Q2:前导篇中提到的数字人有具体产品吗? 具体产品是指:具体的网站,或者具体的客户端软件,都可以,能做出数字人。我想做一个数字人,需要用具体产品,但不知道哪个产品能做出数字人。

    作者回复: 你好。针对Q1,讨论加噪是为了用干净的图片训练UNet模型,我们最终的目标是从随机噪声出发、生成干净图片(也就是去噪过程,这样不就能创造全新的图像了么)。所以,你可以这样理解,加噪针对训练过程、去噪针对使用过程。课程中我们并没有过多论述加噪去噪背后的数学推导,只是给出结论从噪声到图像是可行的(推导部分更加烧脑,可以看看DDPM论文的论证部分)。针对Q2,数字人想过可以了解下MSRA的rodin(https://www.microsoft.com/en-us/research/publication/rodin-a-generative-model-for-sculpting-3d-digital-avatars-using-diffusion/),真正可商用的3D AIGC数字人还没有看到很靠谱的。希望能帮助到你。

    2023-07-29归属地:北京
  • AI悦创
    到这条评论的时候,我读完了。 个人感受:这篇文章写的感觉很不错,但是读了之后但又有一些不理解的地方,具体例如:数学公式、数学公式的讲解等等知识点,感觉云里雾里,我觉得不好说好不好,希望老师后面有时间完善完善,我也会这几天再重新阅读一下,再次评论。期待老师的回复。

    作者回复: 你好。感谢你的反馈。这一讲对于扩散模型初学者会有难度,可以先通过这一讲建立整体的认识,知道加噪用于训练、去噪用于生成,以及关键结论即可。初期不必过度关注数学部分。第二章更完,你可以试着把06-11讲的知识点串起来,才能理解技术全貌。课程中的数学部分,我会根据同学们的反馈再做完善。再次感谢你的建议。

    2023-07-29归属地:福建
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部