目录
在AIGC领域,目前用的最多的就是Stable Diffusion、ControlNet和LoRA三者结合。SD通过加噪和去噪过程生成由ControlNet 提供的condition控制的图片,而LoRA则是以微调的方式,在少量数据训练下得到具有特定表现形式的SD模型。
论文的链接如下:
1.Stable Diffusion:https://arxiv.org/pdf/2112.10752
2.LoRA:https://arxiv.org/pdf/2106.09685
3.ControlNet:https://arxiv.org/pdf/2302.05543
Stable Diffusion(稳定扩散模型)
为什么叫扩散模型?
因为它包含的就是两个过程——前向扩散和反向扩散。
前向扩散就是在一张输入图片上不断加上噪声的过程。如下图,在一张猫的图片上不断加上噪声,在一定步数后它就变成了我们看不出是个什么东西的图片了。
反向扩散则是对噪声图像不断预测噪声并去噪的过程,最后输出我们想要得到的图片。下面是在一张随机噪声图片上逐渐去噪最后生成一个房子的过程。
有了前向扩散和反向扩散,那模型训练的目标也很容易理解,就是把预测的噪声和加入的噪声做回归,让模型能准确地预测出每次加入的真实噪声。
网络结构
SD主要由VAE(变分自编码器)、UNet和CLIP Text Encoder三者组成。如下图可见,整个网络分为三部分——Pixel Space、Latent Space和Conditioning。
Pixel Space中的VAE负责将图像压缩成潜在表示(Latent Representations)以及将潜在表示重建成图像。
Latent Space主要就是使用UNet进行特征级别的去噪过程,其中会进行Attention计算,学习Condition和图片特征的对应关系。
而Conditioning中则会通过预训练的CLIP Text Encoder将文本Prompt编码成Text Embeddings,用于对生成图像进行一定的控制引导。
VAE(Variational Auto-Encoder)
就像上面所介绍的,VAE的主要工作就是负责的图像压缩和重建,所以它其实是一个Encoder-Decoder的结构。
当我们输入一个的图片,Encoder模块会将其编码成