扩散模型如果是“全自动”就是随机的

得益于扩散模型,我们能够从噪点生成有意义的图像了。

但是,如果只是这样,它终究只是给出了“看起来像那么回事的图像”,而无法指定内容,比如想要什么样的画。

这里需要的就是 Conditioning (调节/条件)


什么是 Conditioning?

在 ComfyUI 中,将以下内容统称为 Conditioning

当扩散模型减少噪点时, 为了传达“希望生成什么样的图像”“希望哪里怎么改变” 的附加信息

简单来说,就像是 决定生成方向的路标


基于文本的 Conditioning

作为控制图像生成的手段,最常见的应该是 文本提示词 吧。 让我们看看将单纯的文本作为 Conditioning 的方法。

文本编码器的作用

扩散模型本身是无法阅读文章的。 像“狗”、“森林”、“晚霞”这样的词语,仅仅是字符串。

因此,负责将文本转换为扩散模型容易处理的数值(向量)角色的,就是 文本编码器

  • 输入:文本(提示词)
  • 输出:表示其含义的向量(数值的集合)

扩散模型将这个向量作为路标,为了生成符合文本提示词的图像而不断减少噪点。

CLIP 型文本编码器

像 Stable Diffusion 1.5 这样的模型,主要使用的是以 CLIP 这种机制为基础的文本编码器。

CLIP 是大量学习了“文本和图像配对”的“视觉 AI”。其特征是能够将图像和文本配置在同一个“意义空间”中。

  • 给它看猫的照片,它能判断出与“a cat”这个文章相性很好
  • 也就是说,反过来如果输入 a cat 这个文本,它就会给出表示“像猫”的向量

扩散模型(U-Net)将这个向量作为路标,判断“噪点向哪个方向减少,才能变成符合这个文本的图像?”

MLLM 型文本编码器

在最近的图像模型、视频模型中,也出现了使用以 MLLM(多模态 LLM) 为基础的文本编码器来代替 CLIP 的趋势。

MLLM 几乎就像 ChatGPT 一样。它本身可以进行对话,也可以一边看图像一边回答问题。

因为 CLIP 只是看着单词和图像的对应关系,所以不擅长理解长文章或复杂的位置关系并反映到图像生成中。

另一方面,如果是 MLLM,就能以高得多的精度进行理解。

Z-Image
Z-Image
A dog on a log with a frog in a bog (沼泽里的圆木上有一只狗和一只青蛙,这样复杂的位置关系也能准确理解)

虽说如此,站在 ComfyUI 的立场来看,无论使用的是 CLIP 还是 MLLM,它们“将文本 → 转换为表示含义的向量 → 交给扩散模型”这一角色本身是相同的。

其他 Conditioning(概略)

本页面虽然只针对了文本,但实际上除了文本以外还有各种各样的 Conditioning。

基于参考图像的 Conditioning

  • IP-Adapter 系等
  • 传达“请靠近这个角色、这个涂色、这张照片的氛围”

基于结构的 Conditioning

  • ControlNet 等(姿势、线稿、深度图等)
  • 传达“请遵守这个姿势、轮廓、景深”

它们的作用都是一样的。

当扩散模型减少噪点时, 指示优先什么、向哪个方向靠近的 路标

只要这样认为就足够了。