首页 > 其他分享 >Stable Diffusion Prompt

Stable Diffusion Prompt

时间:2024-01-25 10:46:42浏览次数:39  
标签:Diffusion Prompt keyword 提示 关键词 amount Stable keyword2

Prompt俗称咒语,实际上也是很难完全把控,在实际生图过程中需要不断的摸索。本文从“规则”、“原理”、“结合扩散模型”三个角度对Prompt进行探讨,希望小伙伴们能对Prompt整体有立体的认识。

一、规则

1、增强/减弱(emphasized)

实质是:缩放语义向量
:::warning
()强度变为1.1倍
[]强度变为0.9倍

(keyword:XX)强度变为XX倍
以下俩个例子都是强度变为1.1倍

  • (keyword)
  • (keyword:1.1)

以下俩个例子都是强度变为0.9倍

**可以使用多个()或[]来影响强度,多个使用时就是简单的相乘 **

  • (keyword): 1.1倍
  • ((keyword)): 1.21倍
  • (((keyword))): 1.33倍
  • [keyword]: 0.81倍
  • [[keyword]]: 0.73倍
    :::

权重应高于0.1

2、渐变/调整作用时机(scheduled)

2.1、[keyword1 : keyword2 : amount]

可理解为[from : to : when]

Amuont的使用:

  • amount在[0,1]区间内,那么表示两个关键词占绘图步数(step)的比例
    • 如:amount=0.75,step=40。那么表示前30步绘制第一个关键词,后10步绘制第二个关键词
  • amount > 1时,amount指特定的步数切换
    • 如:amount=30,那么表示在第30步之后,切换绘制下一个关键词

2.2、[keyword2 : amount]

[to : when]

在某步后添加某个词条(to)

2.3、[keyword1 : : amount]

[from :: when]

在某步前使用某个词条(from)
额外技巧:

**我们将(ear:1.9)作为正向提示词 **
**然后我们将这个放入反向提示词 [the : (ear:1.9) : 0.5] **
**第一个关键词为一个毫无意义的词,第二个关键词为(ear:1.9)代表我们想要生成耳朵 **
你的采样步骤为20步,则前10步会减少一个毫无意义的东西出现的概率,后10则会执行(ear:1.9)来减少耳朵出现的概率

3、交替(alternate)

**[keyword1|keyword2] **
keyword1和keyword2在采样时被交替使用

[A|B|C|D] : A,B,C,D按顺序被交替使用

4、组合/混合(composable)

AND
可为每个词提供权重

a cat:1.2 AND a dog AND a pengain:2.2

image.png

5、断开/打断(BREAK)

BREAK
大写,这个词会打断上下文的关系,强行进行再次分组

二、Prompt原理

生图过程中,原始图像会根据“正向”和“反向”提示词进行降噪。
image.png
如果反向或正向提示词为空,则会产生一个随机的提示词(无条件采样)作为代替,随机产生的提示词也是具体的画面。
image.png
如上图,反向提示词通过无条件采样获得的具体画面为“篮球”和“红酒杯”,在降噪过程中不会对原始图片造成过多干扰。

三、结合扩散模型

通过Stable Diffusion组成,我们了解到在“Text Understander”中,通过将用户的关键词(word/token)输入给Transformer语言模型进行解析,从而获得token embeddings语义向量。之后将语义向量发送给Image Generator,通过UNet神经网络对噪声进行预测来降噪,最后获得有意义的图片结果。
那么,我们从两个方面了解一下分词大致规则

1、WebUI分组

  1. 拼写错误或罕见词
    1. 开头结尾的空格、词与词之间多余的空格会被移除
    2. bankbankk会被识别为bank,而bonk不会被识别为“bank”
    3. _通常不会被转换为空格
    4. 因为拼写错误等问题存在,故颜文字和emoji的作用性相比自然语言更强
  2. 为避免短语被分为两组,webUI是会参考短语附近的“,”来进行分组
  3. 输入BREAK可以快速分组
  4. 提示词(token)有长度限制,对于Token进行分组,每一组被补充至(1,79,768)的张量,最后进行合并发送给神经网络

2、CLIP

CLIP的详细原理在Clip介绍中已经说明,不再赘述,关于对token的处理,我们还是摘抄一下“小结”

  1. 开头和结尾的词往往作用性更强
  2. 提示词越多,单个提示词作用越低
  3. 开头的数个提示词作用较强,有更强的相关

标签:Diffusion,Prompt,keyword,提示,关键词,amount,Stable,keyword2
From: https://www.cnblogs.com/meidanlong/p/17986631

相关文章

  • Stable Diffusion Seed
    点击了附加/Extra就会看到扩展栏种子变异(Variationseed)变异种子,规则和Seed一致变异强度(Variationstrength)变异种子和原种子的差异强度,为0时为原种子,为1时是新种子(变异种子)。调整变异强度简单正向prompt(1hotgirl),原始种子为1,变异种子为3,不断调整变异强度,得到的图像如下......
  • [Windows] 视频拍摄必备神器,桌面提词器(TelePrompter)-2.7.1
    随着短视频内容的兴起,越来越多的小伙伴开始尝试拍摄视频。但没有足够的经验,可能面对镜头就懵了,不仅磕巴,还会忘词。今天介绍的这款工具是主持人、记者常用的桌面提词器,有做短视频或直播的小伙伴可以试试这款免费工具。TelePrompter是一款易于使用、功能强大的现代Windows文本/演......
  • stable diffusion提示词生成器(python版)
    fromopenaiimportOpenAIclient=OpenAI(base_url="https://oneapi.xty.app/v1",api_key="sk-gfJsNLc7n7AWUmJG4c2030D10d1d479197400c6c53D58d79")#定义系统指令(instruction)instruction=("你是stablediffusion的提示词生成器,我会给你一个......
  • stable Diffusion java接口
    StableDiffusionJava接口介绍引言在现代计算机科学中,信息传播或数据扩散是一个重要的概念。它可以用来模拟和分析各种现象,如社交网络中的信息传播、病毒传播以及多个实体之间的通信等。稳定扩散是一种特殊类型的信息传播,它指的是在一段时间内,信息传播的速度和传播范围达到了一......
  • stable diffusion提示词中文转英文 java
    实现“stablediffusion提示词中文转英文java”的流程如下:步骤描述步骤1创建一个Java项目步骤2导入所需的依赖库步骤3编写代码实现中文转英文功能步骤4测试代码是否能够正常工作下面将逐步介绍每个步骤需要做的事情,并提供相应的代码。步骤1:创建一个Ja......
  • 基于java调用stable diffusion api
    基于Java调用StableDiffusionAPI在现代的信息社会中,数据的传输和处理变得越来越重要。在这个过程中,有时候我们需要将数据稳定地传输给多个接收方。为了满足这个需求,StableDiffusionAPI应运而生。本文将介绍如何使用Java调用StableDiffusionAPI,并提供相应的代码示例。首先,我......
  • docker镜像部署 Stable Diffusion
    Docker镜像部署StableDiffusion什么是Docker?Docker是一个开源的容器化平台,可以将应用程序和其所依赖的所有组件打包在一个可移植的容器中。与虚拟机不同,Docker容器不需要额外的操作系统,因此它们更加轻量级和高效。什么是StableDiffusion?StableDiffusion是一个用于分析稳定......
  • java 开发接入 stable diffusion
    Java开发接入StableDiffusionStableDiffusion是一种用于实时数据传输和处理的解决方案。它提供了快速、可靠和可扩展的数据传输方式,适用于各种场景,特别是需要实时数据更新的应用程序。本文将介绍如何在Java开发中接入StableDiffusion,并提供一些代码示例。StableDiffusion简介......
  • 本地stable diffusion java sdk
    实现本地stablediffusionjavasdk简介在本文中,我将向你展示如何使用Java编写本地stablediffusionJavaSDK。本文将会提供详细的步骤和代码示例,帮助你快速入门。步骤以下是实现本地stablediffusionJavaSDK的步骤:创建一个Java项目导入所需的库文件创建主类初始化SDK......
  • stable diffusion 生成docker镜像
    StableDiffusion生成Docker镜像简介Docker是一个流行的容器化平台,允许开发者打包和分发应用程序及其依赖项。而StableDiffusion是一个用于稳定扩散的算法,用于解决数据传输中的拥塞问题。本文将介绍如何使用StableDiffusion生成Docker镜像,并提供相关的代码示例。什......