要用好 Stable Diffusion,最最重要的就是掌握 Prompt(提示词)。由于提示词对于生成图的影响甚大,所以被称为魔法,用得好惊天动地,用不好魂飞魄散 。

因此本篇整理下提示词的语法(魔法咒语)、如何使用(如何吟唱)、以及一些需要注意的细节问题(避免翻车)。

基础语法

在提示词中我们使用 , 对提示词进行分割,而每个部分的提示语可以有不同类型,比如:自然语法、标签语法、emoji 或者是颜文字。

自然语法

Stable Diffusion 的提示词支持自然语法,比如告诉它 a girl is touching a cat 可以得到如下图片:

也支持一定程度的中文、日文,比如 睡觉的狗

但是中文理解力支持十分有限,所以一般都会使用英文来作为提示词。

标签语法/Tag

除了自然语法外, 提示词中最常用的是标签语法,以单词或短语来给 AI 做提示,比如 masterpiece, best quality, 1dog, 1cat, sun, grass

会得到一张有狗、猫、太阳和草坪的图片。

emoji

除了一般语言外,我们还可以使用 emoji 来作为提示词,比如使用 可以让 Stable Diffusion 画出这样的表情:

使用 可以得到这样的图:

想要使用 emoji 的可以参考 这个 wiki 查看各个 emoji 代表的意思。

颜文字

此外 Stable Diffusion 还支持使用颜文字来作为提示词,比如可以使用 XD 来让人物笑起来:

T_T 让人物表现伤心:

如果想要用颜文字可以参考 这个 wiki 查看颜文字代表的意思。

虽然 Stable Diffusion 的提示词支持多种写法,但是日常使用一般建议

  1. 标签语法为主,试需求使用自然语法
  2. 尽量使用英文而不是中文作为提示词
  3. 除了一些常见的提示词所有 model 都支持外,很多提示词需要 model 的支持
  4. 提示词一定要注意拼写,一旦拼写错误或者是用到了 AI 无法识别的提示词 AI 将会将其拆解成他可以理解的部分,甚至可能拆分成字母
  5. emoji 和颜文字实际测试使用效果很差,可能是我所使用的 model 的原因,一般不建议使用
  6. 提示词尽量越清晰越好

权重语法

除了基本语法外,我们还可以使用一些语法来调节每个提示词的权重。调节权重包含以下几种方式:

  1. 默认情况下越靠前的提示词权重越高
  2. 通过 (提示词:权重数值) 手动设置权重,比如: (1cat:1.3),(1dog:0.8)
  3. 通过 () {} [] 设置权重:
    • {提示词} 等价于 (提示词:1.05)
    • (提示词) 等价于 (提示词:1.1)
    • [提示词] 等价于 (提示词:0.952)1/1.05

() {} [] 语法可嵌套使用,比如 (((提示词))) 就等价于 (提示词:1.331)

一般情况下建议使用 (提示词:权重数值) 语法,可读性、可控性更高。

注意一般情况下权重不建议超过 1.5,不然会对画面造成巨大影响。

模型引用语法

除了基础提示语外,类似于 Lora 模型也是需要使用提示语来饮用的,语法: <lora:模型⽂件名:权重>

比如如果要使用知名的模型墨心,提示词是这样的 <lora:MoXinV1:1>

需要注意模型的名称会按照实际的文件名来,可直接使用 WebUI 中的 Lora 面板来生成。

进阶语法

OR

OR 语法一般用于提示词的混合,比如在绘制头发时通过 [purple|sliver|green]_hair 可以绘制出这样的混色的发色:

也可以搭配 multicolor hair 生成这样的头发:

也可以使用 [horse|bird] 来生成长翅膀的马,不过细节很难控制:

AND

AND 语法和 OR 语法十分类似,实战下来效果也差不多,可能是我姿势不对。

比如 purple hair AND sliver hair AND green hair 可以生成这样的发色:

此外 AND 语法还支持为某个片段增加权重,比如 gold hair :1.2 AND sliver hair :0.8 AND green hair 可以让发色更多金色:

使用 bird AND lion AND horse 可以生成:

emm,不知道为啥鸟飞一边去了。

不过据说 DDIM 采样 不支持 AND 语法。

步骤控制语法

Stable Diffusion 还支持通过步骤控制语法来让某些元素从第几步开始绘制,到第几步结束。

比如 [cat:10] 指从第十步开始画猫,而 [cat::20] 表示在第二十步结束画猫。也可以组合使用,比如: [[cat::20]:10] 代表从第十步开始第二十步结束。

关键字占比控制

此外还有通过占比语法控制关键字的绘制占比的。

比如 [dog:girl:0.9] 表示总绘制步骤的前 90% 画狗,后面画女孩,而 [dog:girl:30] 则表示前三十步画狗,后面画女孩。

魔法宝典

网上有很多整理好的提示词字典,可以用于快速创建出不同的风格,有需要的可以进行参考。

AI 绘画咒语入门 - Stable Diffusion Prompt 语法指南 【成为初级魔导士吧!】的更多相关文章

  1. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

  2. 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】

    本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...

  3. C#快速入门笔记(1)——基础语法

    C#快速入门笔记(1)——基础语法 总体框架:

  4. 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现

    075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...

  5. 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现

    074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...

  6. 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现

    073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...

  7. 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法

    072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...

  8. 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法

    071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...

  9. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

  10. 069 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 01 综合案例-数组移位-案例需求

    069 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 01 综合案例-数组移位-案例需求 本文知识点:综合案例-数组移位-案例需求 说明:因为时间紧张,本人写博客 ...

随机推荐

  1. Matlab %伍

    第五章:初级绘图进阶 Special Plots  loglog semilogx semilogy plotyy hist bar pie polar Logarithm Plots  x = lo ...

  2. centos安装k8s

    1.确保每台机器上有docker http://get.daocloud.io/#install-docker 2.关闭 每台机器上的swap,selinux swapoff -a setenforc ...

  3. SpringSecurity登录验证,多个用户表

    在开始之前我想感叹一句,技术久了不回头看看真的会忘记的,这次公司让我重新开发一个程序,项目架构为单体多模块开发,其中有个需求就是需要不同用户表进行登录,且不同表的用户名.手机号都可以重复. 这样的需求 ...

  4. Mongodb between 时间范围

    db.getCollection("Order").find({ "Supplier.ServiceCode": "CNI", " ...

  5. 基于Centos7 minimal 加固

    一.用户帐号和环境-----------------------. 2 二.系统访问认证和授权--------------------- 3 三.核心调整--------------------- 4 ...

  6. Nodejs 发送 TCP 消息的正确姿势

    最近使用 NODE-RED 跟 TCP 打交道.NODE-RED 里内建了一个节点叫"tcp-out",看文档呢使用这个节点可以很方便的把 payload 用 TCP 协议发送出去 ...

  7. Javaweb学习笔记第四弹

    JDBC API详解 1.DriverManager作用: 1.注册驱动 registerDriver 2.获取数据库连接 getConnection 参数:1.url jdbc:mysql://lo ...

  8. java 中文繁简体转换工具 opencc4j 使用介绍 1.8.0

    Opencc4j Opencc4j 支持中文繁简体转换,考虑到词组级别. 在线体验 Features 特点 严格区分「一简对多繁」和「一简对多异」. 完全兼容异体字,可以实现动态替换. 严格审校一简对 ...

  9. svn提交规范

    本文档参考了Git提交规范,旨在规范使用SVN进行代码版本管理时的提交操作. 提交前的准备 1. 检查代码 在提交代码前,请先进行必要的代码检查,确保代码的正确性.可读性和可维护性.可以使用代码质量管 ...

  10. CF1801B题解

    CF1801B题解 传送门 更好的阅读体验 简化题意:有 n 个商店,每个商店卖 a,b 两种商品,价格分别为 \(a_i,b_i\),你需要在每个商店买一个商品,并且不能在所有商店都买同一种商品,最 ...