Negative prompt
负向提示是一种使用稳定扩散的方法,允许用户指定他不想看到的内容,而无需对模型进行任何额外的负担或要求。据我所知,我是第一个使用这种方法的人;添加该功能的提交是757bb7c4。这个功能在用户中非常受欢迎,他们使用它来消除稳定扩散中的常见缺陷,比如多余的肢体。除了能够指定不想看到的内容之外,有时候可以通过常规提示实现,有时候则不行,这种方法允许您在不使用提示的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, [...])
这将启动采样器,重复执行以下操作: - 对图片进行去噪,使其更像您的提示(conditioning) - 对图片进行去噪,使其更像一个空的提示(unconditional_conditioning) - 比较两者之间的差异,并使用它生成噪声图片的一组变化(不同的采样器在这一部分的处理方式不同)
要使用负向提示,只需要这样:
# prompts = ["a castle in a forest"]
# negative_prompts = ["grainy, fog"]
c = model.get_learned_conditioning(prompts)
uc = model.get_learned_conditioning(negative_prompts)
然后,采样器将比较图像去噪后的结果与您的提示(一座城堡)以及图像去噪后的结果与您的负面提示(有颗粒感、有雾)之间的差异,并试图将最终结果朝着前者移动,远离后者。
### 示例:
一张森林中有一座城堡的彩色照片,有树木和((((灌木)))), 作者是Ismail Inceoglu,((((有阴影)))), ((((高对比度)))), 动态阴影,((hdr)), 详细的植被,数字绘画,数字绘图,详细的绘画,一幅详细的数字绘画,哥特艺术,被deviantart收录 步骤:20,采样器:Euler a,CFG比例:7,种子:749109862,尺寸:896x448,模型哈希:7460a6fa ```
负面提示 | 图像 |
---|---|
无 | |
雾 | |
有颗粒感 | |
雾,有颗粒感 | |
雾,有颗粒感,紫色 |