随着AI技术的日新月异,AI绘画对各个行业的冲击和影响也越来越大。很多人都对如何进行高效的AI绘画并不很了解。作者将通过一个系列对AI绘画「Stable diffusion WebUI 」进行全面分享,希望可以帮助你更高效的完成
使用过AI绘画工具的小伙伴都应该知道,想要让AI根据你的要求完成一份靠谱的创作有两大核心要点:「提示词」和「模型」。今天作者将对「提示词」进行全面详细的介绍,作者将基于漫画的创作场景,分享一些鲜为人知又非常实用的提示词技巧。
提示词的基础概念
提示词:通过自然语言描述画面的内容,指导AI绘画模型完成符合需求的图片创作。
提示词分为正面提示词(Prompts)和反面提示词(Negative Prompts)。正面提示词代表你希望画面中出现的内容,反面提示词代表你不希望画面中出现的内容。 提示词的识别格式是英文书写,并不支持非英文的内容。提示词可以支持的最小单位是单词。作者想生成一个穿着黄色衬衣的女孩。那么正面提示词:
1girl, yellow shirt,
在书写提示词时,建议通过词组进行组装,而非主从式的语句。通俗的讲:AI模型是通过多个标签矩阵进行绘画创作的。所以主从式的语句段落在AI绘画时得到的结果往往比词组的效果差很多。
提示词的基础格式
网络上很多教程中都提到了书写一个提示词,可以从角色形象,场景特点,画面视角,画风质量进行描述。而以上四类每一类又可以分为若干子类。但你是不是按照这样要求的书写提示词后,进行AI绘画后发现结果不是图崩了就是画的东西跟你写的几乎不是一个东西呢?这可能是以下几个核心点你可能还没有掌握。
提示词权重。
提示词的高级书写技巧。
stable diffusion 对提示词的潜规则。
参数的定义和模型的应用。
提示词的高级技巧
接下来作者将通过一个实际案例来介绍一下如何清晰又高效的书写提示词。
注:为了保障案例的准确性,作者将使用同一大模型,同一参数进行介绍,可能导致部分图的细节可能出现崩图的现象。
场景案例:林雨萌下班后走在街边。
因为模型是无法识别“林雨萌”是什么,所以作者对林雨萌进行了角色定义。
画面描述:
中文:一个女孩,银色长发,紫色眼瞳,眼镜,口红,黄色职业装,纤细的身材, 走路,街道背景,看着屏幕
英文:1girl, silver long hair, purple eyes, glasses, lipstick, yellow business_suit, slim body, walking, street_background, looking at viewer,
作者使用的画质描述词:(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed,
最终得到的正面提示词:
1girl, silver long hair, purple eyes, glasses, lipstick, yellow business_suit, slim body, walking, street_background, looking at viewer,(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed,
得到的画面:
可以发现:
模型在颜色识别中出现了问题,发色被污染为紫色,衣服的颜色没有识别出来。
图1 和 图4 并没有提现出女孩在走路的状态。
提示词权重
针对这样的情况,市面上通用的解决方案是“提示词权重”。
提示词权的作用:增加某个词组的在模型识别时的重要程度。
常用的提示词权重书写格式有两大类:“加括号”和“数值控制”。
比如:(silver long hair), 代表 银色长发的权重为1.1 ,再加一层则是1.1的二次方,即:1.21倍。或者使用(silver long hair:1.1), 也是等同的权重。现在作者对第一次生成使用的提示词进行一些优化。
正面提示词:
1girl, (silver long hair), purple eyes, glasses, lipstick, (yellow business_suit:1.4), slim body, (walking), street_background, looking at viewer, (masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed,
得到的画面:
可以发现:
图1和图4衣服的颜色已经识别出来了,但头发的颜色依旧被紫色所污染。
图3和图4依旧没有显示出“走”这个动作。
这是为什么呢?因为作者的提示词中:1girl, (silver long hair), purple eyes, glasses, lipstick, (yellow business_suit:1.4), 对于模型来说是一个个独立的标签,相互的关联性全部依赖于模型自身的理解(模型在推算相互的关联是什么)。我们在写提示词时需要通过一些手段让模型更好的理解词与词之间的关联性,才能生成出自己满意的图片。
注释用法
此时作者将介绍一种少有人使用的提示词书写格式;“注释”用法。
注释写法:主体\(注释1,注释2)
基于注释的方式,作者将提示词再一次优化:
角色描述:1girl/( (silver long hair), purple eyes, glasses, lipstick, (yellow business_suit:1.4)),
正面提示词:
1girl/((silver long hair),purple eyes, glasses, lipstick, (yellow business_suit:1.4)), slim body, (walking:1.2), street_background, looking at viewer, full body shot,(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed,
得到的画面:
可以发现:
全部图片的衣服都是黄色为主题,发色的污染程度也得到了大幅度的改善。
全部的图片都已走路为主。
LoRA 模型应用
那现在有没有更进一步的优化的空间呢?在保证当前的稳定下,在提升整体画质呢?此时的你可能想到了在提示词中添加LoRA模型的方式,来提高画面质感。让我们来试试看。为了方便演示,此处我选择了一个灵活度较低的LoRA模型进行演示。
正面提示词:
1girl/( (silver long hair), lavender eyes, glasses, lipstick, (yellow business_suit:1.4)), slim body, (walking:1.2), street_background, looking at viewer,(full body shot),(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed, <lora:焰灵姬:0.8>
得到的画面:
可以发现:
整体效果还不错,人物脸型更加细致。
图1 完全没有识别到提示词内容,仅展现了LoRA模型的形象;
图4出现了发色不匹配。
这是为什么呢?这是因为作者使用的LoRA模型的发布者提供参考图中就带有帽子,这里可以理解为这个LoRA模型在使用时如不进行对帽子的特别处理,那就会有一定概率出现帽子。原因可能是训练这个LoRA模型,对帽子的标签处理不够细致。
解决的办法主要有三种:
继续降低LoRA模型的权重;
在使用LoRA模型时,指定仅调用脸部区域;
更换为embeddings模型。
LoRA 模型指定适用区域
这里作者通过控制LoRA Block Weight的应用层级结构的预设,进行LoRA模型指定区域的控制。作者使用的“FACE”标签是通过SDWebUI的插件做了单独的配置。所以可以指定LoRA模型的适用区域。由于逻辑及使用的复杂性,本篇将不过多讲述,后续将单独开篇进行介绍。
正面提示词:
1girl/( (silver long hair), lavender eyes, glasses, lipstick, (yellow business_suit:1.4)), slim body, (walking:1.2), street_background, looking at viewer,(full body shot),(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, detailed eyes, highly detailed, <lora:焰灵姬:0.8:FACE>
得到的画面:
可以发现:
整体效果还不错,人物脸型依旧保持使用的焰灵姬的角色形象,且整体画风并未受到LoRA模型的污染。
Embeddings 模型应用
Embeddings模型(文本嵌入模型),一提到Embeddings模型,很多人的第一反应是Easynegatvie模型,就是用于负面控制的模型。其实负面控制仅是Embeddings模型的一种应用方向。而Embeddings模型本身是一个基于特定描述的词组合集。由于Eembeddings模型的特点,基于特定角色的使用效果比LoRA模型的效果对于全局影响要低。所以作者在对多人角色特定时也会时常使用Embeddings模型。
正面提示词:
(1girl, silver long hair, lavender eyes, yellow glasses),(yellow business_suit:1.4), lipstick, slim body,(walking:1.2),dynamic pose, dynamic angle, street_background, looking at viewer, full body shot,(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, highly detailed, NAMI(0.8),
得到画面:
可以发型:
整体画风与使用LoRA模型相比与大模型更加贴近。但衣服颜色以及内搭依旧收到了小模型的影响。这是什么原因呢?根据作者搜索到的资料以及反复测试后发现,这是因为使用小模型时,小模型的固定描述与提示词中的角色描述发生了污染导致的。此时作者给出的解决方案就是手动分组(BREAK)用法。
阻断用法
在Stable Diffusion的提示词输入中,大家都会看见右上角的0/75的字数统计。这是什么意思呢?
此处的75代表:Stable Diffusion会将提示词按每75token(token 通俗理解就是输入的字符个数,1个字母/1个符号/1个空格都代表 1个 token)强制分为1组,同一组内,元素的位置和顺序不会影响权重差异,但会影响最终效果。
在这样的情况下,我们在描述一个场景时,可能会超过75token的限制,从而导致同一组提示词被系统强制切分为两组词,因此画面生成达不到预期效果。
此时我们可以使用“阻断(BREAK)”来执行手动分组的操作,让每一组都可以描述完成的一个画面特征,BREAK的好处是可以将两组不同的画面元素的上下文关联切断,从而保证两组元素不会相互污染。
请注意:在一段描述词中 BREAK 的使用尽量不超过3个,过多的分组会使模型学习时出现混乱,得到自己想要的结果。
正面提示词:
(1girl, silver long hair, lavender eyes, yellow glasses),(yellow business_suit:1.4), lipstick, slim body,(walking:1.2),dynamic pose, dynamic angle, street_background, looking at viewer, full body shot,
BREAK
(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed background, realistic, solo, perfect detailed face, highly detailed, NAMI(0.8),
得到画面:
可以发现:现在的画面稳定性相对较高,对人物的刻画也非常精致。
下期介绍
对于单人场景的Stable Diffusion 提示词就介绍到这,下一篇将会介绍Stable Diffusion 提示词在“多人场景”以及一些“复杂场景”中的一些高级技巧,如以下图片的制作技巧。