在使用 Stable Diffusion 等生成式模型时,负面词汇(Negative Prompts)是一个至关重要但经常被低估的工具。负面词汇指的是输入给模型的反向描述,用来抑制或排除某些不想要的特性。这一工具为生成式模型的输出结果提供了更多的可控性,让用户能够更加精确地塑造生成的内容。
顾名思义,负面词汇是与正面提示(Positive Prompts)相对的概念。正面提示用于描述用户希望生成的内容,而负面词汇则用来明确排除模型生成中的某些特性或风格。
例如,当我们希望生成一幅明亮的、快乐的插画时,可以使用负面词汇功能,指定诸如 dark
(黑暗的)、gloomy
(阴郁的)等特性。如此一来,模型生成的图片里,会降低出现这些负面词汇所代表的图片特征。
在技术实现上,负面词汇的作用是通过调整生成模型的噪声分布
来影响最终结果。在扩散模型的反向过程(从噪声逐步生成清晰图像)中,正面提示和负面提示共同影响着去噪的权重。具体而言:
这些提示通过对文本嵌入(Text Embeddings)进行调整,改变了潜在空间(Latent Space)中的分布,从而影响最终输出。
举个例子,假设我们希望生成一幅森林中的精灵的插画。
a beautiful forest fairy, glowing, vibrant colors, detailed
blurry, dark, low quality, distorted anatomy, monochrome
如果没有负面提示,模型可能会生成以下结果:
加入负面提示后,生成结果可能会更清晰明亮,且符合预期。
以下是一个基于 Stable Diffusion 的代码示例,展示如何使用负面词汇来提升生成质量:
from diffusers import StableDiffusionPipeline
import torch
# 加载模型
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipe.to("cuda")
# 正面提示和负面提示
positive_prompt = "a beautiful forest fairy, glowing, vibrant colors, detailed"
negative_prompt = "blurry, dark, low quality, distorted anatomy, monochrome"
# 生成图像
def generate_image(positive_prompt, negative_prompt, seed=42):
generator = torch.manual_seed(seed)
image = pipe(
prompt=positive_prompt,
negative_prompt=negative_prompt,
guidance_scale=7.5, # 越高越倾向正面提示
num_inference_steps=50, # 生成步骤
generator=generator
).images[0]
return image
# 保存结果
image = generate_image(positive_prompt, negative_prompt)
image.save("forest_fairy.png")
上述代码中,negative_prompt
用于精细控制生成结果的特性,确保图像符合用户的期望。
一个很典型的使用 Stable Diffusion 生成人物插画的场景中,我们会经常发现,模型在生成复杂动作场景时,往往会出现解剖学错误
,例如人物的手指或关节位置异常。
通过加入以下负面提示:
distorted anatomy, extra fingers, missing limbs
可以显著提升了插画的质量,使得生成的人物动作更加自然协调。
当然在使用负面词汇时,也要注意避免踩坑,最好遵循下面这些原则:
bad
或 poor
,而是明确具体的特性,例如 low resolution, artifacts, wrong proportions
。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。