反向提示词是推动Stable Diffusion给你想要的东西的另一种方式。与需要绘制蒙版的inpainting不同,您可以使用反向提示词并享受文本输入的所有便利。事实上,有些图像只能通过使用反向提示词来生成。
在本文中,我们将介绍一个使用反向提示词的简单示例。然后我将解释反向提示词如何在Stable Diffusion中发挥作用。
这是有关反向提示词的两部分系列的第一部分。请参阅第二部分:如何使用反向提示词,了解构建良好反向提示词的指南。
一个简单的例子
仅正面提示词
让我们尝试生成一些男人的图像。没错,我们即将进入一个未知的领域……我正在使用 Stable Diffusion v1.5并提示
一个男人的肖像照片。
Portrait photo of a man.
好的,我们得到了我们所期望的。没有惊喜。虽然这些人看上去有些太严肃了。让我们试着把他们的胡须去掉,让它们看起来更亮丽一些。我们来尝试一下提示词
一个没有胡子的男人的肖像照片。
Portrait photo of a man without mustache.
我们这里遇到了问题。我们的胡子更加突出!这是怎么回事?罪魁祸首很可能是交叉注意力未能将“没有”和“小胡子”联系起来。Stable Diffusion将提示理解为“男人”和“小胡子”。这就是为什么你会看到他们两个。
正向和反向提示词
那么我们能做些什么来生成没有胡子的男人呢?这是Stable Diffusion做不到的吗?答案是使用反向提示词。如果我们使用提示词
一个男人的肖像照片。
Portrait photo of a man.
与反向提示词一起
胡子
mustache
我们终于可以产生一些没有胡子的男人了!使用 v2 模型您将得到类似的结果。
这个例子演示了使用反向提示词的一个原则:
如果您看到不想要的内容,请将其放入反向提示词中。
反向提示词如何发挥作用?
回想一下,在文本到图像调节中,提示词被转换为嵌入Embedding向量,然后将其馈送到 U-Net 噪声预测器。实际上有两组嵌入向量,一组用于正面提示,另一组用于反向提示词。
正向和反向的提示词是平等的。他们都有 77 个token。您始终可以将其中之一与另一个一起使用或单独使用。
反向提示词是在采样器中实现的,该算法负责实现反向扩散。要了解反向提示词如何工作,我们首先需要了解在不使用反向提示词的情况下采样如何工作。
无反向提示词的采样
在Stable Diffusion的采样步骤中,算法首先在文本提示词的指导下,通过条件采样对图像进行一点去噪。然后,采样器通过无条件采样对同一图像进行一点去噪。这完全是无指导的,就好像您不使用文本提示词一样。请注意,它仍然会扩散到一个像样的图像,例如下面的篮球或酒杯,但它可以是任何东西。实际完成的扩散是条件采样和无条件采样之间的差异。按照采样步骤数目重复此过程。
在没有反向提示词的情况下,扩散是朝着提示词并远离随机图像的一步。
带反向提示词的采样
反向提示词是通过劫持无条件采样来实现的。不使用生成随机图像的空提示词,而是使用反向提示词。
当使用反向提示词时,扩散是朝向正面提示词并远离反向提示词的一步。
从技术上讲,正向提示词将扩散引导至与其相关的图像,而反向提示词则将扩散引导远离它。请注意,Stable Diffusion中的扩散发生在潜在空间中,而不是图像中。上述图像空间中的图形仅用于说明过程。如果您对如何在代码级别实现它感兴趣,请参阅这篇精彩的文章。
采样空间
让我们考虑以下采样空间的图示。当我们使用提示词“男人的肖像照片Portrait photo of a man”时,Stable Diffusion会从所有男人的潜在空间中采样图像,无论有没有胡子。
当添加反向提示词“小胡子mustache”时,“Men with mustache有小胡子的男人”空间被排除。实际上,我们正在对没有胡子的男性的图像进行采样。
总结
我希望这篇文章能让您很好地了解什么是反向提示词以及它是如何工作的。
反向提示词以一种正向提示词无法实现的方式删除对象或样式。它的工作原理是在每个采样步骤中劫持无条件采样,以便扩散远离反向提示词中描述的内容。
如果您想知道如何使用反向提示词,请前往第二部分:如何使用反向提示词。
《反向提示词如何发挥作用?》有1条评论