扩散模型如果是“全自动”就是随机的
得益于扩散模型,我们能够从噪点生成有意义的图像了。
但是,如果只是这样,它终究只是给出了“看起来像那么回事的图像”,而无法指定内容,比如想要什么样的画。
这里需要的就是 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 A dog on a log with a frog in a bog(沼泽里的圆木上有一只狗和一只青蛙,这样复杂的位置关系也能准确理解)
虽说如此,站在 ComfyUI 的立场来看,无论使用的是 CLIP 还是 MLLM,它们“将文本 → 转换为表示含义的向量 → 交给扩散模型”这一角色本身是相同的。
其他 Conditioning(概略)
本页面虽然只针对了文本,但实际上除了文本以外还有各种各样的 Conditioning。
基于参考图像的 Conditioning
- IP-Adapter 系等
- 传达“请靠近这个角色、这个涂色、这张照片的氛围”
基于结构的 Conditioning
- ControlNet 等(姿势、线稿、深度图等)
- 传达“请遵守这个姿势、轮廓、景深”
它们的作用都是一样的。
当扩散模型减少噪点时, 指示优先什么、向哪个方向靠近的 路标
只要这样认为就足够了。
