SD Prompt 基础
考虑到 SDXL 生图效果更好,所以本章节主要介绍 SDXL 的 Prompt。所以正式开始学习本章前,请先下载以下模型,并将模型文件放到对应的文件夹内:
- SDXL 1.0 Base (opens in a new tab):将其放到 ComfyUI 里的 models/checkpoints 文件夹内。
- SDXL 1.0 Refiner (opens in a new tab):将其放到 ComfyUI 里的 models/checkpoints 文件夹内。
如果你想要使用本章的工作流,可以使用下载使用 Comflowy 本地版,或者注册使用 Comflowy 云端版本 (opens in a new tab),里面都内置了本章的工作流。并且如果你使用的是云端版本,你可以直接使用我们内置的模型,无需下载。
了解完 ComfyUI 的所有基础节点和操作后,你应该就能使用 ComfyUI 生成图片了。
但是,生成的图片效果可能并不是你想要的,比如你想要生成的图片是动漫风格的,但生成的图片却是真人风格的,这时你就需要通过某些手段让 AI 生成特定风格的图片。要想调整图片风格,有多种方法:
- 方法一:通过 prompt 来影响生成图片的效果。这个是最简单的做法。基本上使用 default workflow 就能实现。本章会介绍如何使用 prompt 来调整图片风格。同时介绍一些更高效的方法。
- 方法二:通过加载不同的 Checkpoint 模型来影响生成图片的效果。这个是最简单的做法,你可以查看基础选修里的 模型推荐 了解行业常用模型。
- 方法三:通过 LoRA 来影响生成图片的效果。这个方法稍微复杂一些,但是相较于方法一,可用的模型会更多,而且文件也小非常多。后续我会给大家介绍一下 LoRA 的使用方法。
基本原则
介绍如何写 prompt 前,我们先来介绍下写 prompt 的基本原则。
原则一:prompt 不是越长越好
很多人刚学习 prompt 时,会觉得 prompt 越长越好,但实际上这是不对的。精准表达你的意图才是最重要的,而不是堆积非常多无用的词语。
另外,长度最好保持在 75 个 token(或约 60 个字)以内。
原则二:越重要的词放在靠前的位置
很多人在写 prompt 时,会较常忽略这一点。比如说,如果你想要生成一张猫的图片,那么你应该将「猫」这个词放在靠前的位置,而不是放在靠后的位置。
原则三:善用符号
- 使用逗号分隔:虽然 SDXL 在语意理解上已经有了很大的提升,但是在使用 prompt 时,还是建议使用逗号来分隔不同的意图。
- 使用 () 调整权重:你可以输入
(keyword:weight)
方式来控制关键词的权重,比如(hight building: 1.2 )
就意味着 hight building 的权重变高,如果填写的权重数小于 1,则意味着这个词的权重会变低,生成的图与这个词更不相关。
基本模板
了解完基本原则后,我们介绍下写 prompt 的模板,一般 prompt 会包含以下内容:
- Subject:因为主体是最重要的,所以主体一般会放在首位。
- Environment:环境包含:
- 主体周围的环境,比如说「在一片森林里」、「在一片草地上」等等。
- 灯光,比如「闪电」、「月光」等等。
- 天气,比如「下雨」、「下雪」等等。
- Medium:媒介可以是图片的拍摄媒介,如「相机」,亦或者承载的媒介,比如「油画」。
- Style:可以用 4W 记忆:
- When:什么年代的风格?
- Who:你想要谁的风格?(人或组织)
- What:什么艺术类型的风格?或者艺术运动的风格?
- Where:什么国家的风格?
如果你还学习过我的 Midjourney 的教程 (opens in a new tab),你会发现 SD 的 prompt 少了「构图」这一部分。这是因为,我认为构图最好使用其他方式输入给模型,比如 ControlNet 或 img2img 等方式通过图片传给模型(这些在中级篇会介绍),而不是直接写在 prompt 里。这样模型的输出会更符合预期一些。
学习 prompt 的方法
其实了解完 prompt 的基本原则和模板后,你就已经可以写 prompt 并生成图片了。但是,我认为绝大数人(包括我)其实很难一次就生成你脑海中满意的图片。原因是:
- 绝大多数人缺乏对美的认知:这是一个很大的问题,因为你不知道你想要的图片是什么样的,所以你也不知道该怎么写 prompt。
- 绝大多数人缺乏美术相关知识:即使你知道什么是美,但是你不知道该怎么表达出来,比如如果你根本不知道世界上有一名画家叫「梵高」,那你不可能会在 prompt 里写出「梵高风格」这样的词语。
那有没有解决方案呢?
我觉得最佳的方法是「先模仿后超越」。 先去看别人怎么写,然后根据自己的需求进行修改,并且通过控制变量的方式去多尝试,比如一次只改一个词,这样你就能知道每个词对生成图片的影响。
我推荐几个不错的学习网站:
- Civitai (opens in a new tab):大名鼎鼎的 C 站,这个应该是目前全球最大的 AI 图片社区,我在那学到了非常多东西。
- PromptHero (opens in a new tab):这也是一个很不错的 AI 图片社区,但感觉比 Civitai 小一些。
- Learning Prompt (opens in a new tab):虽然我当年写的教程是针对 Midjourney 的,但里面场景案例对于学习 Stable Diffusion 依然有参考意义。
Batch image workflow
为了提高出图效率,我会建议你这么做:
- 选择相对较快的模型出图,如果你是用的 SDXL,那么就选择 SDXL Base。或者使用最新的 Turbo。
- ComfyUI 生成图片跟 Midjourney 有个很大的区别,就是它不像 Midjourney 那样并发生图,而是一张一张图出。所以在实验 Prompt 的时候,建议先一次出一张图。不满意,就多点击几次 Queue Prompt。
- 当你满意了,就可以使用一次生成多张图片了。
在前面介绍 ComfyUI 的基础节点的时候,我提到可以通过调整某个节点的参数,就可以一次生成多张图片。
不妨回忆下如何出多张图呢?
如果忘记了,可以回去看看 ComfyUI 基础① 一文。