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

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentLinkedDeque

文章目录 ConcurrentLinkedDeque特点构造方法常用方法使用示例注意事项 ConcurrentLinkedDeque ConcurrentLinkedDeque 是 Java 并发工具包(java.util.concurrent 包)中的一个线程安全的双端队列(Deque)实现,实现了 Deque 接口。它使用了链表结构,并且针对高并发环境进行了优化,非常适合

使用Nginx部署前端Vue项目的详细指南

在本文中,我们将详细介绍如何使用Nginx部署一个前端Vue项目。此过程涵盖Vue项目的构建、Nginx的安装与配置、以及最后的项目启动。下面是步骤的详细说明。 步骤 1: 准备你的Vue项目 确保你已经创建并构建了一个Vue项目。如果你尚未创建Vue项目,可以使用以下命令创建一个: # 安装Vue CLInpm install -g @vue/cli# 创建一个新的Vue项目vue c

入门指南 | Datavines 安装部署篇

摘要:本文主要介绍基于源码部署 Datavines 和执行检查作业,内容主要分为以下几个部分: 平台介绍快速部署运行数据质量检查作业 Datavines 的目标是成为更好的数据可观测性领域的开源项目,为更多的用户去解决元数据管理和数据质量管理中遇到的问题。在此我们真诚欢迎更多的贡献者参与到社区建设中来,和我们一起成长,携手共建更好的社区。 https://github.com/dat