负面提示
负提示是一种使用Stable Diffusion 的方式,允许用户指定他不想看到的内容,而无需对模型进行任何额外的负载或要求。据我所知,我是第一个使用这种方法的人;添加它的提交是757bb7c4。该功能在消除Stable Diffusion 的常见畸形(如额外的四肢)的用户中非常受欢迎。除了能够指定您不想看到的内容外,这有时可以通过通常的提示,有时则无法实现,这允许您在不使用提示所包含的75个代币的情况下做到这一点。
负提示的工作方式是在采样时使用用户指定的文本而不是空字符串进行unconditional_conditioning
。
这是来自txt2img.py的(简化)代码:
# prompts = ["a castle in a forest"]
# batch_size = 1
c = model.get_learned_conditioning(prompts)
uc = model.get_learned_conditioning(batch_size * [""])
samples_ddim, _ = sampler.sample(conditioning=c, unconditional_conditioning=uc, [...])
这会启动采样器,重复:
- 消除图片噪音,引导它看起来更像你的提示(条件)
- 消除图片的噪音,引导它看起来更像一个空的提示符(无条件_条件)
- 观察它们之间的差异,并用它来为嘈杂的图片产生一组更改(不同的采样器以不同的方式处理该部分)
要使用负面提示,只需要以下内容:
# prompts = ["a castle in a forest"]
# negative_prompts = ["grainy, fog"]
c = model.get_learned_conditioning(prompts)
uc = model.get_learned_conditioning(negative_prompts)
samples_ddim, _ = sampler.sample(conditioning=c, unconditional_conditioning=uc, [...])
然后,采样器将查看去噪图像以看起来像你的提示(城堡)和去噪图像以看起来像你的负面提示(颗粒、雾)之间的差异,并尝试将最终结果移向前者,远离后者。
示例:
a colorful photo of a castle in the middle of a forest with trees and (((bushes))), by Ismail Inceoglu, ((((shadows)))), ((((high contrast)))), dynamic shading, ((hdr)), detailed vegetation, digital painting, digital drawing, detailed painting, a detailed digital painting, gothic art, featured on deviantart
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 749109862, Size: 896x448, Model hash: 7460a6fa
负面提示 | 图像 |
---|---|
none | |
fog | |
grainy | |
fog, grainy | |
fog, grainy, purple |