浅谈图像生成模型Diffusion Model原理

【浅谈图像生成模型Diffusion Model原理】李宏毅2023春机器学习课程笔记

考虑到个人在一些问题上需要李宏毅教授在2023年课程中讲到的内容补充,所以我会把部分李宏毅教授在2023年的课程内容提上来挑着学习,因为是挑着看的,我也不知道会不会全部看完,所以这里就不分EP了。课程的地址:【授权】李宏毅2023春机器学习课程_哔哩哔哩_bilibili


本次博客内容通过著名的DDPM(Denoising Diffusion Probabilistic Models)来浅谈图像生成模型Diffusion Model的原理。Diffusion Model是近几年比较热门的图像生成模型。

我们先来讨论一下Diffusion Model是如何运作的。

我们会把distribution中simple出来的向量,因为这个向量最后要变化到我们输出图像的样子,所以这里simple出来的向量大小需要和最后我们期望输出的图像一致。首先这个simple出来的向量一开始肯定是我们看不懂的杂讯,所以我们需要用一个Denoise的神经网络,让一开始的这个vector通过Denoise得到去除杂讯的图像。那这个去除杂讯的Denoise我们会反复通过很多次,而且这个Denoise的次数是我们事先固定的。所以Diffusion Model简单地说就是让distribution中simple出来的向量不断经过Denoise去除杂讯,最终得到清晰的图片。

“在我开始工作之前,雕塑已经在大理石块内完成了。它是已经有了,我只需要凿掉多余的材料。”——米开朗基罗。

其实Diffusion Model产生图像的原理也和米开朗基罗口中的雕塑一样:本来图片就已经在杂讯里面denoise只是把杂讯部分过滤掉罢了。

负责把图像里杂讯过滤掉的network就是Denoise。上面说会把图像一遍一遍地过这个Denoise,但其实这个Denoise本身是同一个。所以这里的Denoise的module有两个输入,除了图像以外,还有一个额外的数字作为输入,这个数字就是上面说的目前step的步数,告诉Denoise现在在哪个step,代表目前输入图像的杂讯大小。

那前面说了那么多Denoise,是时候对Denoise做一个说明了。

Denoise内部在做的事情是:用Noise Predicter产生一个输入图片的杂讯,再把扣掉输入的图片来达到去噪的效果。

你可能会想问:为什么要先产生图像的杂讯,而不是直接产生去噪之后的图像呢?

因为让机器学习获取杂讯是相对容易的,后面会说明如何让机器学习获取图像的杂讯。而且你可以想想,如果机器已经直到了如何直接产生去噪之后的图像,那其实它也完全知道这个图像长什么样子了,也就是它也可以直接生成出来推图像了。但是这样子的方法就不如让机器学习如何获取杂讯这件事容易。

然后我们就来说说如何训练这里的Noise Predicter。

训练Noise Predicter的问题也就是如何让noise predicter知道一张图片的杂讯长什么样子。

这里我们的做法就是自己给distribution中simple出来的图片加杂讯,制造出noise predicter的杂讯的数据集。这样子的一个过程就称之为Forward Process(Diffusion Process)。然后我们就可以和训练普通的神经网络一样训练noise predicter,让它输出图片的杂讯就可以了。

最后我们来考虑一下文字条件输入的情况。

这里文字到影像为pair成对的资料需要的资料集是非常大的。LAION用了5.85Billion的数据才得到这样子一个比较好的效果。

把文字加到model里面的做法就是给每一个step的denoise模组都加上一个额外的文字输入。

所以这里Noise Predicter就有带有杂讯的图像、当前的step数和限定的文字条件的三个输入参数。

训练的时候也是一样,多给一个文字的输入即可。

最后在这里贴一个DDPM原文里面完整的演算。


以上就浅谈了图像生成模型Diffusion Model原理。

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇