一个简单的例子
仅正面提示
让我们尝试生成一些人的图像。没错,我们正在进入一个未知领域……我正在使用带有提示的 Stable Diffusion v1.5
一个男人的肖像照片。
提示:一个男人的肖像照片。
好的,我们得到了预期的结果。没有惊喜。虽然这些男人看起来有点太严肃了。让我们尝试去除他们的胡须以减轻他们的负担。让我们试试提示
一个没有胡子的男人的肖像照片。
提示:一个没有胡子的男人的肖像照片。
我们在这里遇到了问题。我们的胡须更加突出!这是怎么回事?罪魁祸首可能是交叉注意力未能将“没有”和“小胡子”联系起来。Stable Diffusion 将提示理解为“男人”和“小胡子”。这就是为什么你看到他们两个。
正面和负面提示
那么我们可以做些什么来产生没有胡子的男人呢?这是Stable Diffusion做不到的吗?答案是使用否定提示。如果我们使用提示
一个男人的肖像照片。
连同否定提示
胡子
我们终于可以产生一些没有胡子的男人了!您将使用 v2 模型获得类似的结果。
提示:一个男人的肖像照片。否定提示:小胡子。
这个例子演示了使用否定提示的原则:
如果您看到不想要的内容,请将其置于否定提示中。
否定提示如何工作?
回想一下在文本到图像的调节中,提示被转换为嵌入向量,后者又被馈送到 U-Net 噪声预测器。好吧,这还不是全部。(抱歉,这已经发生了很多次……)实际上有两组嵌入向量,一组用于正提示,另一组用于负提示。
正面和负面提示是平等的。他们都有 77 个令牌。您始终可以将其中一个与另一个一起使用,也可以不与另一个一起使用。
否定提示在采样器中实现,该算法负责实现反向扩散。要了解否定提示的工作原理,我们首先需要了解在不使用否定提示的情况下抽样的工作原理。
抽样无否定提示
在 Stable Diffusion 的采样步骤中,算法首先在文本提示的指导下,通过条件采样对图像进行一点去噪。然后采样器通过无条件采样对同一图像进行一点去噪。这完全没有指导,就好像您不使用文本提示一样。请注意,它仍然会扩散到一个像样的图像,比如下面的篮球或酒杯,但它可以是任何东西。实际完成的扩散步骤是条件采样和无条件采样之间的区别。对于采样步骤的数量,重复该过程。
在没有否定提示的情况下,扩散步骤是朝着提示和远离随机图像迈出的一步。
带否定提示的抽样
否定提示是通过劫持无条件采样来实现的。不使用生成随机图像的空提示,而是使用否定提示。
当使用否定提示时,扩散步骤是朝着积极提示和远离消极提示的一步。
从技术上讲,正面提示将扩散引向与之相关的图像,而负面提示则将扩散引向远离它的方向。请注意,Stable Diffusion 中的扩散发生在潜在空间中,而不是图像中。以上图像空间中的数字仅用于说明过程。如果您对如何在代码级别实现它感兴趣,请参阅这篇精彩的文章。
采样空间
让我们考虑以下采样空间的说明。当我们使用提示“一个男人的肖像照片”时,Stable Diffusion 从所有男人的整个潜在空间中采样图像,有胡子和没有胡子。你应该得到有和没有它的男人的照片。
男人的所有形象的空间。
当添加否定提示“mustache”时,排除“Men with mustache”空间。实际上,我们正在从没有胡子的男人那里采样图像。
概括
我希望这篇文章能让您很好地了解负面提示是什么以及它是如何工作的。
否定提示以一种仅通过修补肯定提示可能无法实现的方式删除对象或样式。它的工作原理是在每个采样步骤中劫持无条件采样,以便扩散远离负面提示中描述的内容。
前往第二部分:如果您想知道如何使用它们,如何使用否定提示。