Stable Diffusion之提示词指南(三)

2024-09-01 22:20
文章标签 指南 提示 diffusion stable

本文主要是介绍Stable Diffusion之提示词指南(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在上一篇的文章中,我们讲解了Stable Diffusion提示词的高级用法,对于一些高级属性有了了解。如果有不记得的,可以再去看看———Stable Diffusion之提示词指南(二)。今天我们讲解一下负提示词。

负提示词

负向提示词:简单说就是告诉AI你想不要绘制什么,不要在画面中出现的内容。

1-1

可以看到在Web UI页面中负提示词也是和正提示词一样,有一个输入框,一般我们不输入也是可以的。

使用负面提示词是引导图像的另一种好方法,这里放的不是你想要的东西,而是你不想要的东西。它们不一定必须是物体,也可以是样式和不需要的属性。 (例如丑陋、变形等)

同时对于v2模型来说,使用负面提示词是必须的。如果没有它,图像看起来会远不如v1的图像。对于v1和SDXL模型来说,它们是可选的,但我经常使用它们,因为它们要么有帮助,要么无害。

比如使用通用的负提示词。

ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face, blurry, draft, grainy
丑陋、平铺、手画得不好、脚画得不好、脸画得不好、出框、多余的肢体、毁容、变形、身体出框、解剖结构不良、水印、签名、切断、对比度低、曝光不足、曝光过度、不好艺术、初学者、业余、扭曲的脸、模糊、草稿、颗粒状

比如生成的图片:

1-2

使用负提示词

负提示词是让Stable Diffusion输出结果更符合要求的另一种方式。与需要绘制蒙版的不同,你可以使用负提示词并享受文本输入的所有便利。事实上,有些图像只能通过使用负提示词来生成。

比如下面的例子:

Portrait photo of a man

1-3

好的,我们得到了我们所期望的。毫不奇怪。不过,这些人看上去有些太严肃了。让我们试着把他们的胡子去掉,让它们看起来更亮丽一些。我们来尝试一下提示:

Portrait photo of a man without mustache

1-4

我们这里发现有问题。我们的胡子更加突出!这是怎么回事?罪魁祸首很可能是cross-attention未能将“没有”和“小胡子”联系起来。Stable Diffusion将提示词理解为“男人”和“小胡子”。这就是为什么你会看到他们两个。

那么我们能做些什么来生成没有胡子的男人呢?这是Stable Diffusion做不到的吗?答案就是使用负提示词。如果我们使用提示:

正提示词:

Portrait photo of a man

负提示词:

mustache

1-5

我们终于可以生成一些没有胡子的男人了!同样的使用v2模型您将得到类似的结果。

本例演示了使用否定提示的原理:

如果您看到不想要的内容,请将其放入否定提示中。

负提示词如何工作的

回想一下,在文本到图像调节中,提示词被转换为嵌入向量,然后将其馈送到 U-Net 噪声预测器。在这里实际上有两组嵌入向量,一组用于正面提示,另一组用于负面提示。

正面提示和负面提示是平等的。他们都有 77 个token。您始终可以将其中之一与另一个一起使用或单独使用。

负提示是在采样器中实现的,该算法负责实现反向扩散。要了解负提示如何工作的,我们首先需要了解在不使用负提示词的情况下采样是如何工作的。

无负提示词的采样

在Stable Diffusion的采样步骤中,算法首先在文本提示词的指导下通过条件采样对图像进行一点降噪。然后,采样器通过无条件采样对同一图像进行一点去噪。这完全是无指导的,就好像您不使用文本提示词一样。请注意,它仍然会扩散到一个像样的图像,例如下面的篮球或酒杯,但它可以是任何东西。实际完成的扩散步骤是条件采样和无条件采样之间的差异。重复此过程一定数量的采样步骤。

1-6

在没有负提示词的情况下,扩散步骤是朝着提示并远离随机图像的一步。

带负提示词的采样

负提示是通过劫持无条件采样来实现的。不使用生成随机图像的空提示,而是使用负提示。

1-7

当使用负面提示词时,扩散步骤是朝向正面提示并远离负面提示的步骤。

从技术上讲,积极的提示会将扩散引向与其相关的图像,而消极的提示则会将扩散引向与其相关的图像。请注意,稳定扩散中的扩散发生在潜在空间中,而不是图像中。图像空间中的上述图形仅用于说明目的。如果您对如何在代码级别实现它感兴趣,请参阅这篇精彩的文章。

采样空间

让我们考虑以下采样空间的图示。当我们使用提示“男人的肖像照片”时,Stable Diffusion会从所有男人的整个潜在空间中采样图像,无论有没有胡子。你应该得到有和没有胡子的男人的图像。

1-8

所有男人形象的空间。

当添加负提示词“小胡子”时,“有小胡子的男人”空格被排除。实际上,我们正在对没有胡子的男性的图像进行采样。

所以我们知道负提示会以一种单独修改肯定提示无法实现的方式删除对象或样式。它的工作原理是劫持每个采样步骤中的无条件采样,以便扩散偏离了负面提示中所描述的内容。

如何使用好负提示词

你能把你不想看到的东西放在负面提示词中。它为您提供了另一种控制文本到图像生成的方法。许多人将其视为 Stable Diffusion v1.5 中的可选功能。随着 Stable Diffusion v2 的发布,情况发生了变化。负面提示变得不可或缺。

移除物体

和前面的去掉“胡子”例子类似,假设您在雨天创作了一幅巴黎的画作。正提示词如下:

autumn in paris, ornate, beautiful, atmosphere, vibe, mist, smoke, fire, chimney, rain, wet, pristine, puddles, melting, dripping, snow, creek, lush, ice, bridge, forest, roses, flowers, by stanley artgerm lau, greg rutkowski, thomas kindkade, alphonse mucha, loish, norman rockwell.

Seed种子值如下:

1923936260

生成的图片中有很多人,如下图:

1-9

如果我想生成另一个,但街道空无一人。就可以使用指定图像的相同种子值,并在负提示中添加“people”。就会得到一张删除了大多数人的图像。

1-10

假如图片中的人还没删除完,那您也可以通过上节学习的语法强调负面提示来告诉稳定扩散要更加努力(people:1.3)。这告诉Stable Diffusion,关键字“people”现在重要性提高了30%。

修改图片

您也可以让Stable Diffusion以使用负提示进行细微的更改。比如您不想删除任何内容,只想对主题进行细微的更改。

让我们处理这个悟空图像:

1-11

看起来是在草原,并且天黑了,我们调整一下。添加草原,黄昏到负提示词中。

1-12

图片中的悟空看起来有点……不成熟,像小朋友一样,我们添加“未成年”这样的负提示词中让他看起来更像成年人。

1-13

负提示中带关键字切换

我们不想看到耳朵出现在图片中,同时在负提示词添加了ear,当我们逐渐添加强度时,画面可能会直接扭曲变形。

现在,如果你确实想使用高度强调 (ear:1.9)该怎么办 ? 这里有一个窍门。

你可以使用关键字切换 ,首先使用无意义的单词作为负提示词,然后 (ear:1.9) 在稍后的采样步骤中切换。

让我们选择 the 无意义、无用的负提示词。 你可以通过将其放入负提示词来验证它的无用性。 你将获得与未放置任何内容相同的图像。

现在我们用它作为负提示词:

[the: (ear:1.9): 0.5]

比如这里我使用 20 个采样步骤,这意味着 the 在步骤 1 —10 不会产生实际效果,而步骤 11 —20 中采用负提示词 (ear:1.9)。

修改样式

负提示词不仅对修改内容有用,对修改风格也有用。为什么要用负提示词来改变风格? 有时,在正提示词中添加太多只会让扩散器感到困惑。 想象一下有人让你同时去77个地方。 如果他们告诉你应该避免哪些区域,将会很有帮助 。

Sharpening

你可以在负提示词中使用“blurry”,而不是在正提示词中使用关键字 “sharp”、“focused” 。 这也许会让图像变得更清晰。

Photorealistic

在负提示中使用“painting”, “cartoon”也会使其更像照片。

比如黑神话-悟空,我们使用特定Lora加通用负提示词生成如下:
1-14
1-15


以上便是负提示词相关内容,关于如何训练自己的Lora,如何使用高级技巧等相关知识后面博主会逐步介绍,欢迎大家关注微信公众号"壁虎说技术",更多AI新技术,新点子在公众号第一时间更新。

壁虎说技术

参考

prompt-guide
how-to-use-negative-prompts

这篇关于Stable Diffusion之提示词指南(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128202

相关文章

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

提示:Decompiled.class file,bytecode version如何解决

《提示:Decompiled.classfile,bytecodeversion如何解决》在处理Decompiled.classfile和bytecodeversion问题时,通过修改Maven配... 目录问题原因总结问题1、提示:Decompiled .class file,China编程 bytecode