AI:diffusion model的运行原理@
March 7th, 2023

0diffusion是干嘛的

想象一下图片是怎么从人的脑子中呈现出来的,一般的想象是大脑先生成一股模糊的印象,然后这种模糊的印象逐渐变得清晰,从而让人有了具体的细节记忆。

diffusion模型的灵感也是如此。先看一些模糊的图,就像是对焦没对准一样。然后通过运算想象出清晰的样子。最极端的例子,甚至是通过一堆马赛克,电视雪花图片,去计算出想象中清晰的样子。这样,图片就被生成出来了。

但要做到这些并不简单,因为所有的数据,都需要通过数学公式的加工。要知道,这种所谓的逆运算是存在信息损失的,你总是没有办法完美的用数学公式弥补本就缺失的信息,这就需要ai来猜测丢失了多少信息,并把这些信息补充上。

在整个过程中我们只需要保证两点。1让模型能够从雪花图生成图像。2用人类语言约束模型生成的方向。

1diffusion软件生产图片工作流程

1encoder:首先人输入文本信息,电脑把文本信息转换成机器容易处理的向量信息。 2diffusion:第二步,计算机得到向量信息,并且用ai模型弥补缺少的信息。这是一个熵减的过程。在计算完毕后输出一个向量信息。
3decoder:第三步,计算机再把向量信息翻译成人能看懂的图片信息。

2让模型能够从雪花图生成可识别图像

在forward diffusion过程中,就好比人忘记的过程。原本清晰的图片,被一次次加噪点,重复这个步骤,直到图片变为雪花图片。在这个过程中,原本有确定分布规律的清晰图片,最终变成没有分布规律的电视雪花图片。

我们需要记录这个步骤,用来参照如何把模糊图片,还原成清晰图片的答案。用这个来训练ai模型的参数。

在reverse diffusion过程中,就好比人看到了一个没对好焦的模糊图片,但这时候你需要用计算机去计算出清晰的图片。如何计算呢?这就需要反着推导。

我们需要信息:
1t:这个照片经过了多少次迭代。
2每次加了多少噪点数量。(每一次加的噪点数量是不同的,因为模糊图片如果只加一开始的计量,就跟上一步区分程度不大)
3每次加噪点的位置。

对于t我们可以手动指定反向减少噪点的次数。

对于每次加了多少噪点,我们利用正向扩散的forward diffusion时候的数据,用UNet模型来预估出每一次需要减少的噪点数量。(之所以用ai去预测,是因为没有数学公式能够反推,本质上是在加噪音的过程中信息丢失了)
forward diffusion过程正是为了训练出UNet模型。

对于每次加噪点的位置,这就是diffusion模型本身所需要学习的参数了。
reverse diffusion过程则是为了训练diffusion模型。

等待模型训练好。我们就可以根据一个模糊图片,去生成一个清晰图片了。

3约束ai生成图像的方向

还有最后一个问题,我们需要让人的语言,能够影响ai的作图方向。如何实现这个过程呢?我们需要让人的语言生成一张模糊的图片,ai再让这张模糊的图片生成清晰图片。

如何让人的自然语言生成一张模糊图片呢?

如图。首先就是准备答案。让图片通过encoder的方式生成图片编码。这方面计算机运算。这个过程是等价的,不会造成信息损失,只不过是存储的形式不一样。

第二步,训练一个nlp处理模型,处理人的自然语言,让人的自然语言生成的编码,尽量和图片编码一样。这样就可以把人的语言尽可能转换成图片的编码了。

4总结

我们再来看一次总流程。
1我们输入的文本数据被转换成文本embeddings编码数据。
2把噪点图,和随机图叠加,加上迭代步数作为输入,模型计算出如何减少噪点。输出生成图embeddings数据。
3再把embeddings数据解码成正常图片,就可以观看了。

Subscribe to erthor pabar
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from erthor pabar

Skeleton

Skeleton

Skeleton