杰出的画作展现了艺术家们独特的想象力、生动的表达力和精湛的技艺。如今AI绘画工具似乎已解决了技艺的问题,创作出理想的画作似乎应该是一件轻而易举的事。
但是,AI绘画工具只是机器,如何让它正确地绘制出我们想要的画作呢?这就是本文要讲的内容 —— AI绘画中非常重要,但容易被轻视的能力:提示引导(Prompting),即让机器懂你!
我将结合实操测试和一些文献,让大家一文搞懂Stable Diffusion(下文简称SD)的提示引导。
一、提示引导的作用与构成
一个好的引导提示要详细和明确,详细是指 “有啥没啥,一一说清” ,明确是指 “它们的样子”。
提示引导分为正向提示引导和反向提示引导。正向提示引导是告诉SD “我们想要图像出现什么”,而反向提示引导是告诉SD “我们不想图像出现什么”。完整的提示引导是由若干个提示词(prompt)组成。
为了在提示引导中避免疏漏,也便于操作效率,可以将提示词做如下归类:
1. 主题(Subject)
2. 介质(Medium)
3. 风格(Style)
4. 艺术分享网站(Art-sharing website)
5. 分辨率(Resolution)
6. 附加细节(Additional details)
7. 色彩(Color)
8. 照明(Lighting)
下文将逐步添加各类别的提示词来生成图像,使用的是Dreamshaper模型(一款相当棒的写实插画风格的模型)
统一参数设置为:DPM++ 2M Karas采样器、25采样步数、512×768的图像尺寸,其他均为默认。
为了单独测试正向提示词的效果,先不添反向定提示词,后面会有段落单独介绍。
(下文图像均未做二次修复,因此不要纠结一些小错误。)
1. 主题(Subject)
主题是指你想要在图像中都看到什么,这是提示引导中最重要的信息,主题描写不充分将很难获得理想的画作。
假设我们要生成一个精灵女,初学者的提示引导可能写成这样:
A female elf
生成的图像质量还不错,但这个提示引导太过宽泛,让SD的想象空间太大了。
精灵女是什么特征?什么动作?穿什么?背景环境是什么?这些都需要用关键词加以描述,让SD更明确地知道我们想要什么。
我们假设她是一位美丽清纯的精灵女(不是希尔瓦娜斯的样子),穿着白色的长裙,头戴花环,坐在古树上,场景是深夜的森林,天空有圆月。
正向提示引导可以这样写:
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon,
这回我们想要的都看到了。
2. 介质(Medium)
介质是用来制作艺术品的材料。例如油画、插图、3D渲染和摄影。介质有很强的效果,一个关键词就可以极大地改变风格。
我们添加关键词 oil painting(油画)。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting,
图像有了明显油画质感和色调。
3. 风格(Style)
风格指图像的艺术风格,例如印象派、超现实主义或波普艺术等,或是艺术大师独特的绘画风格。
你可能对介质和风格有点分不清。举个例子,给你看我画的油画,你只能认出它是油画。给你看《星月夜》,你会立刻想到梵高。图像介质传达给观者的是质感,图像风格传达给观者是感受和情绪。
我们添加关键词 Van Gogh(梵高)
(不是所有的人名都能被大模型认识的,你可以尝试fantasy, cyberpunk等风格词汇 。)
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh,
风格效果显而易见。
4. 艺术作品分享网站(Art-sharing website)
像Artstation和Deviant Art这样的图像艺术网站收集了很多不同类型的图像,它们可能被包含在模型训练时的数据集里,并用网站名称做了标签。因此,以网站名作为提示词可能更容易引导图像偏向这些风格。
我们添加关键词 artstation 试一下。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation
图像确实有些变化,例如色调更暗、对比度更强、细节精度更高、背景变得有些梦幻和诡异。
5. 分辨率(Resolution)
分辨率指图像清晰度和细节程度。我们添加关键词 highly detailed (高度细节)和 sharp focus (清晰聚焦)试一下。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation, highly detailed, sharp focus
人物和背景的细节增多了,光影也丰富了,前景和后景的层次更明显了,主体更加突出。
6. 附加细节(Additional details)
附加细节是给图像锦上添花,可以进一步微调图像风格、氛围和情绪表达。
我们添加关键词 sci-fi(科幻)试一下。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation, highly detailed, sharp focus, sci-fi
人物出现了战甲元素,是不是有些科幻的味道了。(你可以试试加大sci-fi的权重,可能出现飞船)
7. 色彩(Color)
通过添加颜色关键词可以控制图像的整体色调,明确指定的颜色会影响图像的色调,也可能改变某些物体的颜色。
我们添加关键词 iridescent silver(彩虹银)试一下。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation, highly detailed, sharp focus, sci-fi, iridescent silver
头发和战甲变成了银色,图像的色调也转冷了一些,饱和度也有所降低。
8. 照明(Lighting)
照明对于图像的效果和表达非常重要。无论是摄影师、平面设计师或渲染师,创作过程中都离不开对光影的设计和把控。
我们添加关键词 rim lighting(轮廓光)试一下。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation, highly detailed, sharp focus, sci-fi, iridescent silver, rim lighting
光影有些变化,右图的侧光明显一些。
突然图像中的梵高风格几乎消失了,所以我尝试加大梵高的权重。
梵高风格回来了。
到此我们我就完成了逐步提示引导的过程演示。
二、反向提示引导(Negative prompt)
使用反向提示引导更利于生成你想要的图像,让SD知道你不想要什么。例如不想要的对象、风格、照明等,尤其是一些代表劣质画面属性的提示词,例如畸形、扭曲、丑陋、低分辨率等。
使用反向提示引导对于v2模型是必须的,否则生成的图像可能比v1要差很多。对于v1和SDXL模型不是必须的,但通常会添加一些常规反向提示词,因为它对图像不会产生坏处。
我们添加一组通用反向提示词
disfigured, deformed, ugly
图像更加柔和细腻了。
三、逐步迭代的创建提示引导
从上面的案例可以看出,创建提示引导的过程是小步前行、小心翼翼的,为什么呢?
假设一次性输入几十个提示词,如果生成的图像和预期差距较大,此时你可能无法准确的找到问题提示词,无法判断每个提示词对生成图像产生了哪些影响。
所以正确的创建提示引导应该是一个迭代过程,正如前文所示,先确定主题内容(你想要看到什么),然后逐步向主题添加少量提示词(1~2个),并且每次都要生成图像来评估效果,做好过程监督。
四、提示引导进阶技术
1. 提示词权重
提示词权重是指提示词在图像中产生的效果程度。当提示词效果在图像中不可见或不明显时,需要增加权重。若效果过于明显甚至夸张,需要降低权重。
我们可以通过 `(提示词:系数)` 来控制提示词的权重。系数小于1意味着不太重要,大于1意味着更重要。
例如我们在精灵女的图像上增加一些花瓣,增添提示词petal,并修改权重来生成几张图像。
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting, Van Gogh, artstation, highly detailed, sharp focus, sci-fi, iridescent silver, rim lighting, petal
可以看出权重对提示词效果的影响,这个方法适用于任何提示词。
需要注意一点,通过高权重提升的效果,可能体现在数量或尺寸上,例如可能是更多的花瓣或更大的花瓣。
2. 使用 () 和 [] 控制关键词权重
提示词权重也可以通过 `()` 和 `[]` 来控制。`(pompt)` 等同于提示词权重提升了1.1倍,`[promt]` 等同于提示词权重降低了0.9倍。
可以像套娃一样叠加使用,不限层数。
(promt) = (promt: 1.1)
(promt) = (promt: 1.21)
[promt] = (promt: 0.9)
[[promt]] = (promt: 0.81)
在 AUTOMATIC1111 SD WebUI中可以使用快捷键Ctrl + 上/下箭头来调整提示词的权重。
3. 提示词混合
可以通过以下语法将2个提示词混合。
[提示词1 : 提示词2: 系数]
系数控制提示词1在哪个步数切换到提示词2,它是一个介于0到1之间数值。
例如,提示词为:
Oil painting portrait of [Natasha Romanoff: Tony Stark: 0.5]
采样步数设置为30
这表示提示词在采样步数1-15时是:
Oil painting portrait of Natasha Romanoff
提示词在采样步数16-30时是:
Oil painting portrait of Tony Stark
系数表示在什么时候切换提示词,设置0.5在步数30的条件下表示:30步 x 0.5 = 15步
通过改变系数,来看一下黑寡妇和小唐尼的混合程度变化:
从结果发现,黑寡妇的特征元素在全图中占比更高,例如发型、脸型、服装。这体现了提示词混合的重要规则:前词决定全图基础构成,后词微调细节。
以下是在种子不变的条件下,调换了两个提示词的顺序后的混合变化:
Natasha Romanoff: Tony Stark: 系数
Tony Stark: Natasha Romanoff: 系数
4. 面容混合
常见的用法就是通过混合两个面容(例如明星),生成一个新的面容。例如:
[Emma Watson:Nina Dobrev:0.5]
另外,我们也可以使用多个名人关键字并设置权重来混合面部特征。例如:
(Nina Dobrev:1),(EmmaWatson:0.8),(Anne Hathaway:
0.6)
5. 面容的一致性
使用多个名人的名字来混合生成新面容是一个简单的方法,Stable Diffusion会将其理解为生成一个具有这些面部特征的人,而且混合的面容能在生成图像之间保持一致。
(Nina Dobrev:1), (Emma Watson:0.8), (Anne Hathaway:
0.6)
五、提示词的数量限制
在AUTOMATIC111的Stable Diffusion WebUI中,可以看到限制了75个Token,但目前实际使用是没有限制的。
Token是什么?Token和提示词(英文单词)不是一回事,SD的CLIP模型自动将提示词转化成能代表提示词语义的数值表示。如果CLIP遇到没见过的提示词,它会将其拆分,直到读懂为止。
例如,dream是一个Token,beach是另一个Token,但dreambeach对于CLIP是陌生的,因此它会将其拆分成dream和beach两个Token。
当在SD WebUI中输入的提示词超过了75个Token的限制时,将会新启一个提示块,此时提示词限制变成了150个Token,如此循环,次数不限。
每个提示块是独立处理的,它们被转换后的结果,会在送进U-Net前被连接在一起。
1. 新启一个提示块
假如提示词未达到75上限时,如何新启一个提示块?有时我们需要这样做,因为靠前的提示词权重可能更高;也可能想通过提示块来分类提示词,便于管理。
我们可以通过输入 BREAK (必须大写)来新启一个提示块。下面我们用两个提示块分别指定白色的帽子和蓝色的裙子。
(Nina Dobrev:1),(Emma Watson:0.8),(Anne Hathaway:
0.6), white hat
BREAK
blue dress
去除BREAK后,提示词都在同一个块里,此时SD用色可能不够坚决和纯粹,甚至可能将帽子和裙子的色调混合。
(Nina Dobrev:1),(Emma Watson:0.8),(Anne Hathaway:
0.6), white hat, blue dress
六、检查提示词
有一个易被忽略的事实 —— 无效的提示词是存在的。我们有时会偷懒,直接复制别人的提示词来用,可能段落很长,也可能包含重复词。其实在前面的案例演示过程中发现,SD对不同提示词的敏感度差距很大,有的无感,而有的添加后起了反作用。
另外,SD生成图像是基于模型里已有数据,对于以专属名称作为提示词(例如,以人名表示的面容、艺术风格等),可能遇到 “库里无货,无法调出” 。
我们可以通过提示词来检验是否有效。例如,监测一下v1.5模型中是否知道梵高和齐白石。
Van Gogh
Qi Baishi
显而易见,梵高的风格数据库存充足,而齐老的风格数据有待补充。
七、定制化模型的影响
定制化模型是指基于SD基础模型,使用具有特定风格和主题的数据集再次训练或微调而成的模型。通过定制化模型可以将想要的风格特征锁定,大大提升了生成图像的稳定性。
在使用定制化模型时需要注意,相同的提示词在不同的模型中使用时,生成结果可能差异很大。
我们在不同的模型中使用相同的提示词试一下:
a beautiful female elf, smiling, sitting on an ancient tree, wearing a white dress, flower crown, forest background, late night, full moon, oil painting,
Stable diffusion v1.5 基础模型:
国风3模型:
DreamShaper模型:
不同模型都有明显的个性化主题和风格特征。因此,我们需要根据需求选择适合的模型,在使用初期也要做简单的提示词测试,看能否正确地生成想要的主题。
当然,运用到实际商业项目中,企业或个人可能需要训练符合自己行业和业务需求的定制化模型。例如产品海报、图书配图、室内外效果图等。由此来提升效率和稳定产出。
如何训练定制模型呢? 请关注后续相关文章。
总结
-
提示引导要足够的详细和明确,让SD明白你要什么,控制它的发散性创作,避免因抽卡而耗费大量时间。
-
提示词宜精不宜多,少量的提示词也能生成不错的图像。
-
基于提示引导要基于类别,逐步迭代,每步少量词+测试,把控过程不跑偏。
-
不同的提示词对图像的影响程度差异很大,通过调整提示词的权重来不断优化。
-
单一的好词,组合在一起不一定是好效果,甚至可能相互制约。不要随意堆砌提示词,要掌握提示词的实际效果并合理使用。
-
应该建立自己的提示词库,并且多看作品(尤其是国外作品)多实践,持续收集和整理提示词。
-
第一次生成图像的随机性较大,选择更好的图像做基础,之后的迭代通常也会效果不错。
-
模型选择很重要,不要期望一个模型能满足所有需求。(或许未来可以)
写在最后
AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。
感兴趣的小伙伴,赠送全套AIGC学习资料和安装工具,包含AI绘画、AI人工智能等前沿科技教程,模型插件,具体看下方。
一、AIGC所有方向的学习路线
AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、AIGC必备工具
工具都帮大家整理好了,安装就可直接上手!
三、最新AIGC学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
![](https://img-blog.csdnimg.cn/img_convert/cd21a3c9a656ad67d25f19037f5809d6.jpeg)