学习AI绘画,从Diffusion和CLIP开始
AI绘画在这几个月火了起来,它能从提供的文字和图片中生成新的绘画,质量很高,而且非常有趣。这个封面就是用AI生成的[1]。但是在使用AI绘画的过程中,搞不懂steps,sampler之类的意思。为了想要更好的使用AI绘画,也想要理解AI绘画中那些参数的含义,所以本着学习新技术的目的,写了这篇文章来学习一下AI绘画。
AI绘画
这几个月风靡的AI绘画,主要是指在统计学和计算机视觉领域,用深度学习模型从一些条件输入中生成新的图片。这些输入主要是文字或者图片。比如说封面图它就是用Anything-V3.0模型[1]从文字直接生成的。
对于文字生成图片而言,AI绘画系统有两个重要模块,第一个是理解文字输入,第二个是使用这个理解去生成新的图片。所幸,学术界在之前已经存在了能高质量完成这两步的技术基础。其中Denoising Diffusion Probabilistic Models (DDPM/Diffusion)[2]提供高质量的图片生成技术,而Contrastive LanguageImage Pre-training (CLIP)[3]提供了高水平的自然语言跨模态理解。
这篇文章我们将从DDPM和CLIP开始学习AI绘画。
DDPM
在DDPM出现之前,图片生成主要是通过变分自编码器(VAE)和生成对抗网络(GAN)来完成的。但是VAE生成的图片模糊,而GAN的训练很困难,最后生成的多样性比较有限。DDPM解决了这个难点,它能生成高质量的图片,而且也不需要对抗训练,训练起来也很简单。但是DDPM也有缺陷,它生成图片的速度比较慢,因为需要执行很多步的迭代。我们先从介绍DDPM开始。

Fig. 1. 生成式模型. Adapted from [4]
如上图所示,DDPM是从一个生成的噪声$z$中迭代多次生成图片的,而且相比于VAE和GAN存在一个低维的隐式表示$z$,DDPM的每次迭代生成的中间图片$x_t$都保持在相同的维度上。
DDPM之所以是Diffusion(扩散),是因为它是通过扩散过程来生成噪声,然后再训练模型去预测这个噪声来去噪,从而达到生成图片的目的。让我们先从扩散的前向过程,也就是生成噪声开始。
前向扩散

Fig. 2. 前向扩散过程. Adapted from [2]
首先需要定义用DDPM生成图片的过程。首先我们有一张真实图片$x_0\sim q(x)$从一个数据集中采样而来,我们希望能通过一系列手段去预测出$x_0$。
我们现在对$x_0$添加一点高斯噪声,一共添加$T$步,那么每步的结果可以表示为$x0$, $x1$, $x2$, …, $x_T$。那么每次从$x_{t-1}$添加噪声到$x_t$的过程可以表示为,
$$
\begin{equation}
x_t = \sqrt{\alpha_t}x_{t-1} + \sqrt{1 - \alpha_t}z_t
\end{equation}
$$
其中,$z_t \sim N(0, I)$是采样于标准正态分布的噪声。$\alpha_t$...
剩余内容已隐藏