logo

Stable Diffusion

wangzf / 2023-05-08


目录

Stable Diffusion 简介

Stable Diffusion 是 CompVis、Stability AI 和 LAION 等公司研发的一个文生图模型, 它的模型和代码是开源的,而且训练数据 LAION-5B 也是开源的。 由于Stable Diffusion 是一个完全开源的模型(代码、数据、模型),而且是它的参数量只有 1B 左右, 因此大部分人可以在普通的显卡上进行推理甚至精调模型。 Stable Diffusion 的出现和开源对 AIGC 的火热和发展有巨大的推动作用, 因为它让更多的人能快地上手 AI 作画。

Stable Diffusion 是一个基于 latent 的扩散模型,它在 UNet 中引入 text condition 来实现基于文本生成图像。 Stable Diffusion 的核心来源于 Latent Diffusion。常规的扩散模型是基于 pixel 的生成模型, 而 Latent Diffusion 是基于 latent 的生成模型,它先采用一个 autoencoder 将图像压缩到 latent 空间, 然后用扩散模型来生成图像的 latents,最后送入 autoencoderdecoder 模块就可以得到生成的图像。

基于 latent 的扩散模型的优势在于计算效率更高效,因为图像的 latent 空间要比图像 pixel 空间要小, 这也是 Stable Diffusion 的核心优势。文生图模型往往参数量比较大, 基于 pixel 的方法往往限于算力只生成 64x64 大小的图像,比如 OpenAI 的 DALL-E2 和谷歌的 Imagen, 然后再通过超分辨模型将图像分辨率提升至 256x256 和 1024x1024; 而基于 latent 的 Stable Diffusion 是在 latent 空间操作的,它可以直接生成 256x256 和 512x512 甚至更高分辨率的图像。

Stable Diffusion 模型

img

Stable Diffusion 模型的主体结构如上图所示,主要包括三个模型:

对于 Stable Diffusion 模型,其 autoencoder 模型参数大小为 84M(8400000), CLIP text encoder 模型大小为 123M(123000000),而 UNet 参数大小为 860M(86000000), 所以 Stable Diffusion 模型的总参数量约为 1B。

Python API

参考