1.Diffusion Model 的工作方式
简单来说,两个过程,前向过程,向原图形中加噪声变为纯噪声图像;反向过程,对纯噪声图像进行去噪生成图像。
扩散模型,从一堆噪音里去除不需要的噪音,得到需要的图像。
其中,去噪内部的工作流程:内部首先预测图片中的噪音,在输入图像上减去产生的噪音,达到去噪的效果
关键在于这个内部的预测噪音怎么实现呢?人为自己加噪音进去,这个过程叫做前向过程
Text-to-Image
2.Stable Diffusion
流程框架,基本包含三个元件:文字编码器,生成模型,解码,三个通常是分开训练再组合
生成评价指标FID
先有一个分类模型,计算真的图像和假的图像的距离,值越小越好。
其中生成模型:
3.数学原理
训练:第2行X0代表真正的图,第4行代表噪声,第5行:后面根号部分将真正的图和噪声混合,T越大,代表噪声加的越多,图形化流程如下:
可以看出实际上真正做的时候,噪声并不是一点一点加进去的,而是一次性的加进去了,去噪声的时候也是直接去除。为什么呢?与后面的数学原理相关。
产生图: 图形化流程如下:
公式推导:
其中分母部分:
其中,单个怎么计算呢?首先定义好噪声的加入量:
举例计算几个:
把第一行的x1代入第二行,得到:
红框的就可以进行简化,两次加噪声就可以等同于一次加噪声,以此类推:
整个过程就可以化简为只做一次加噪声,一步到位。
整个过程,
经过各种数学就可以化简为以下式子:
那红框究竟怎么求极值呢,实际上,先从数据集里获得一张X0,利用公式获得Xt:
接下来,将Xt和当前t输入去噪模型,训练,输出结果和
越接近越好,图片的复杂式子经过化简,得到的结果是
,所以去噪模型的输出要和这个接近,也就是输出这个,在这个式子中,需要预测的只有
这部分就和公式对应: