什么是 Latent Diffusion Model?

Latent Diffusion Model (潜扩散模型) 是让图像生成 AI 也能在自家电脑上运行的最大功臣之一。

如果直接对普通图像(像素)进行扩散处理,因为像素数太多,计算量会变得非常大。 因此,首先将图像转换为 被称为“潜在空间(latent)”的压缩表现,然后在那里进行增加或减少噪点的操作。

以 Stable Diffusion 1.5 为例,它会将 512×512×3 的图像压缩为 64×64×4 的“潜在图像”来进行处理。

因为长宽变成了 1/8,所以像素数变成了 1/64。 多亏了这种“在像素数较少的世界里进行扩散”,家庭用户也能以现实的速度进行图像生成了!


为什么要在潜在空间进行处理

1. 节约计算量和 VRAM

如果要处理 512×512 的图像,必须对 512×512 个点每一个点是什么颜色?进行计算。

如果是压缩后的潜在表现,就变成了 64×64,可以大大减少计算量。

2. 可以使用具有统合意义的表现进行处理

在潜在空间中,压缩的并非像素单位的细微噪点,而是“物体的形状”、“质感”、“倾向色”等高级特征。

此外,潜在表现就像是“形状不稳定的粘土”。混合像素图像本身没有什么特别的意义,如果在潜在图像的状态下进行组合,就可以进行自然的合成。


什么是 VAE?

VAE(Variational Autoencoder / 变分自编码器) 是用于将图像转换为潜在空间,或将其逆向还原的转换器。

  • Encoder:图像 → 转换为潜在图像
  • Decoder:潜在图像 → 还原为图像

生成的流程如下。

    1. 扩散模型从潜在图像的噪点开始
    1. U-Net(扩散模型本体)在潜在图像上一点点减少噪点
    1. 最后通过 VAE 的 Decoder,转换为“潜在图像 → 普通图像”

img2img 或 inpaint 等输入图像的情况下,也是先用 Encoder 将图像转换为潜在表现,然后再做同样的事情。


VAE 是有损压缩

VAE 是 有损压缩

将图像转换为潜在空间,再还原回图像,无法完全恢复原状。 会变得稍微模糊,或者色调和对比度发生变化。

如果不使用扩散模型,仅仅用 VAE 对图像进行编码,再用同一个 VAE 进行解码,你会发现它稍微劣化了。 这种“虽然稍微劣化,以此为代价使其能被轻量化处理”的权衡,就是潜在表现的特征。


应该使用哪个 VAE?

根据模型的不同,使用的潜在表现也不同,用于制作它的 VAE 也不同。

基本上,必须使用适合模型的 VAE。

如果使用了错误的 VAE,就会生成颜色奇怪,或者带有噪点的图像。