06 | 颠覆者扩散模型:直观去理解加噪与去噪
初识扩散模型
- 深入了解
- 翻译
- 解释
- 总结
颠覆者扩散模型是一种新兴的AI绘画技术,灵感源自热力学中的扩散过程。该模型通过加噪和去噪的过程,逐步将噪声图转化为高质量的图片。加噪过程依赖于时间步t,而去噪过程涉及训练神经网络模型和采样器的运用。训练过程包括从数据集中随机抽取图片、选择时间步t、生成高斯噪声、计算加噪结果、预测噪声值和计算数值误差等步骤。训练完成后,可用UNet模型进行推理,即从噪声生成图像。扩散模型与GAN相比,通过学习去除噪声的过程实现图像生成,而GAN是通过生成器、判别器对抗训练实现图像生成。扩散模型的推理速度较慢,读者可思考如何加速推理过程。整体而言,扩散模型技术为AI绘画领域带来了新的可能性。
《AI 绘画核心技术与实战》,新⼈⾸单¥59
全部留言(14)
- 最新
- 精选
- springXuunet这个模型是唯一选择么? 为什么不能用其他的? 有使用其他的模型,但也是用扩散的方法的么?
作者回复: 你好。这是个很好的问题,当前UNet仍旧是去噪的主要方案,主要原因是UNet的输出和输入尺度相同,对于噪声预测比较友好(可以看下第8讲)。学者们也在试图换掉扩散模型中的 UNet 结构,比如 2022 年 12 月 UC 伯克利的学者提出了使用纯粹的Transformer 替代 UNet 结构(https://arxiv.org/abs/2212.09748),仍旧使用扩散模型的基本思路进行图像生成。感兴趣的话你可以看看这篇论文。希望能帮助到你。
2023-08-01归属地:上海42 - 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归属地:福建