当前位置:AIGC资讯 > AIGC > 正文

AI绘画普及课【二】文生图入门

文章目录

二、文生图入门与提示词基础 1、提示词基本概念 2、提示词分类和书写方式 (1) 人物及主题特征 (2) 场景特征 (3) 环境光照 (4) 补充:画幅视角 (5) 画质提示词 (6) 画风提示词 (7) 提示词模板 3、权重与负面提示词 (1) 提示词的权重 (2) 负面提示词 (3) 出图参数详解 4、提示词到底怎么写? (1) 翻译大法 (2) 借助工具 (3) 抄作业

二、文生图入门与提示词基础

AI绘画和魔法、念咒有什么关系?记得吗,作图过程中,有一个必不可少的环节,就是向AI输入用于描述画面的Prompt,在AI聊天里我们也用。因为大部分AI绘制作品的提示词是用英文写的,很长,很乱。而且穿插着各种奇怪的数字、符号,就像高深莫测的咒语一样。因此,大家形象的把这个书写提示词的过程称为“念咒”。而我们,就像那些魔法师一样,要通过吟唱咒语,来变出我们想要的结果。虽说AI是人工智能,但它和真正意义上的人类智慧还是有一定差距的,很多时候它并不知道你想要的是什么。因此,就需要详尽的提示词来帮助你更好地指挥AI作图。这也是为什么,“念咒”这件事,在AI绘画盛行的今天,已经慢慢形成了一门独特的可以去探讨、研究的学问。

本课程讲解的内容使用的是Stable Diffusion,但我知道有很多朋友用的是另一款非常流行的AI绘画应用MidJourney,这些框架的大逻辑框架其实是通用的,而 MidJourney 比SD要更依赖好的提示词来做出作品,在提示词的应用层面更具深度。

1、提示词基本概念

内容概要:

提示词的概念和基本逻辑 提示词的语法(输入、间隔) 内容型提示词与标准化提示词

这节课,我们来接触StableDiffusion中的文生图功能,也就是经由文本生成图像,这里面的“文”,指的自然就是提示词Prompt了。广义的解释,Prompt是指用户输入的文本或者图像信息,目的是指导模型根据一些特定的需求生成艺术作品。直白一点说,它是我们用来告诉AI“我要画什么”,“画成什么样”的一种语言。

上节课里,我们也提过了,SD里进行绘制的两种基本方式,文生图和图生图,文生图就是主要以文字来实现这个沟通过程的,而图生图还可以依赖图片来传达信息,但图生图里也有提示词,而且同样重要。提示词包括的内容,也是非常广泛的,它可能包括作品主题、画风、形象特点以及一些具体包含的要素。

比如以下例子:

正面提示词:
(1girl:2.0), solo, nilou \(genshin impact\), solo, long hair, jewelry, blue gemstone, earrings, horns, crown, cyan satin strapless dress, white veil, neck ring, red hair, {green eyes}, ((full body)), (SFW:1.5), front, highly detailed face, curvy body, skindentation, hands up, happy smily face, pureerosface_v1, hiqcgbody,

{{masterpiece}}, {best quality},{highresl}, original, reflection,Exaggerated body proportions, greasy skin, realistic and delicate facial features, depth of field, extremely detailed CG unity 8k wallpaper, bloom, shine, (illustration), (painting), (sketch), anime coloring, fantasy, unreal engine, body shadow, artstation

indoor, sitting on sofa, sunset, backlighting, shiny skin, lens flare, light particles, glowing, dappled sunlight, extreme shadow and light, long shadow, light rays, sun
wind blow, maple leaf, cloudy sky, dusty, forest, plant, flower

反面提示词:
EasyNegative, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)),((grayscale)),skin spots, acnes, skin blemishes, age spot, (outdoor:1.6), (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21)(tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.33), (more than 2 nipples:1.331), (missing arms:1.33), (extra legs:1.331), (fused fingers:1.61051),(too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit, (futa:1.1), bad hands, missing fingers, (((extra arms and legs))), extra hair, (2girls:2.0), signature, watermark, username, atist name

不同的提示词分别向AI描绘了画面风格、人物体貌、服饰特点、场景内容和一些额外的修饰性元素。别看这么多的字,其实,很多关于风格和画质把控的提示词是固定的。

虽然说提示词并非越多越好,但很多时候写多点,比少写点出来的效果肯定要更好,且在特定需求上控制会更为精确。所以,要想让AI按照我们的需要去产图,提示词到底该怎么写呢?放轻松,其实写提示词的过程非常自由的,无论你写什么,AI都可以给你画,在StableDiffusion中,可以输入提示词的区域就是左上方这两个文本框了,之前也提到了,它被分为了上下两部分,上面是正向的提示词,下面是反向的提示词。虽然自由,但提示词有一些基本的语法规则,是你应该掌握的。

首先,提示词需要英文书写,所以,如果你英语水平足够好,可以用英语组织你的描述语言,如果不好,可以求助翻译软件。

其次,提示词是以词组作为单位的,它不需要像真的英语句子一样,有完整的语法结构主从句之类的东西。就像你如果跟AI说:“画一个又长又宽的面和一个又大又圆的碗”,那直接可以分解成(面, 长, 宽), (碗, 大, 圆),这样AI也能听懂,甚至有时候听的比前一种更懂。

词组与词组之间,需要插入分隔符,基本的分隔符形式是一个英文里的半角逗号。再输入提示词的时候,最好把输入法切换到英文。因为里面涉及的符号基本都是英文的,提示词可以换行,但每一行的行末最好也打上分隔符。

1girl, walking, forest, path, sun, sunshine
1girl, walking, forest, path, sun, sunshine,
shining on body,

在输入这些东西以后,点击“Generate”,生成图画,出来的图片是这样的:

它有可能符合你的需要,也有可能变得奇奇怪怪。AI绘画是具有一定的随机性的,点多几次生成,每次生成出来的东西都会不太一样。之前,也有人把AI绘画比喻为“抽卡”,想出好的图片,得靠运气来抽。“一个女孩在林中漫步”,这其实只是一个非常概括的描述,这个女孩长什么样子、森林里有什么东西,时间是早上还是晚上、天气如何,这些东西,AI都不知道,你的提示词太过于笼统,那它就只能瞎蒙抽卡了。但也别担心,提示词很多时候不是一下子就写好的,而是现有一个雏形,再慢慢细化、补充和微调的。

1girl, walking, forest, path, sun, sunshine, shining on body, looking at viewer, close-up, upper body,
(masterpiece:1,2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting, (extremely detailed CG:1.2), drawing, paintbrush

还可以加一些的提示词,更多的就是在一些具体的方面,对这个画面去做控制。

2、提示词分类和书写方式

要加些什么呢?提示词有很多不同的分类。这里,把提示词概括成如下几个大类。

(1) 人物及主题特征

服饰穿搭:white dress 发型发色:blonde hair,long hair 五官特点:small eyes,big mouse 面部表情:smiling 肢体动作:stretching arms

比如:女孩,白色连衣裙,金发,长发,微笑,伸展手臂,举手,美丽的,快乐的

1girl, walking, forest, path, sun, sunshine, shining on body, 
white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,

(2) 场景特征

室内、室外:indoor/outdoor 大场景:forest, city, street 小细节:tree, bush, white flower

比如:树木,灌木,白色的花,(林间)小路

1girl, walking, forest, path, sun, sunshine, shining on body, white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,
trees, bush, white flower, outdoor,

(3) 环境光照

白天、黑夜:day / night 特定时段:morning, sunset 光环境:sunlight, bright, dark 天空:blue sky, starry sky

比如:白天、阳光、蓝天、多云的天空

1girl, walking, forest, path, sun, sunshine, shining on body, white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,
trees, bush, white flower, path, outdoor,
day, sunlight, blue sky, cloudy sky,

(4) 补充:画幅视角

距离:close-up(特写),distant 人物比例:full body, upper body 观察视角:from above, view of back 镜头类型:wide angle, Sony A7

比如特写:

1girl, walking, forest, path, sun, sunshine, shining on body, white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,
trees, bush, white flower, path, outdoor,
day, sunlight, blue sky, cloudy sky, close-up

可以把这四个分类叫做“内容型提示词”,然而,只有内容型的提示词,你画出的东西很大概率不会让你满意,这里,我们需要引入其他的提示词,来给这个画面打一剂强心针。

首先是画质,因为在AI学习的图片里,有些是高清的,有些质量比较模糊,我们可以用这样的提示词,让他盯着哪些高清的去看。

(5) 画质提示词

通用高画质:best quality, ultra-detailed, masterpiece, hires, 8k 特定高分辨率类型:extremely detailed CG unity 8k wallpaper(超精细的8K Unity游戏CG), unreal engine rendered(虚幻引擎渲染)

比如:最高的质量,超级细节,杰作,高分辨率,8K(分辨率),超细节的Unity CG壁纸

1girl, walking, forest, path, sun, sunshine, shining on body, white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,
trees, bush, white flower, path, outdoor,
day, sunlight, blue sky, cloudy sky, close-up,
best quality, ultra-detailed, masterpiece, hires, 8k,extremely detailed CG unity 8k wallpaper, unreal engine rendered

(6) 画风提示词

插画风:illustration, painting, praintbrush 二次元:anime, comic, game CG 写实系:photorealistic, realistic, photograph

比如:绘画,插画,动画,游戏CG

1girl, walking, forest, path, sun, sunshine, shining on body, white dress, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy,
trees, bush, white flower, path, outdoor,
day, sunlight, blue sky, cloudy sky, close-up,
best quality, ultra-detailed, masterpiece, hires, 8k,extremely detailed CG unity 8k wallpaper, unreal engine rendered
painting, illustration, anime, game CG

(5)、(6)可以称为标准化的提示词。

(7) 提示词模板

描述人物:
(1girl:2.0), solo, nilou \(genshin impact\), solo, long hair, jewelry, blue gemstone, earrings,horns, crown, cyan satin strapless dress, white veil, neck ring, red hair, {green eyes},

描述场景:
indoor, room, house, sofa, wooden floor, plant, flowers, trees, windows,

描述环境(时间、光照):
day, morning, sunlight, dappled sunlight, backlight, light rays, cloudy sky

描述画幅视角:
full body, wide angle shot, depth of field

其他画面要素:
light particles, fantasy, wind blow, maple leaf, dusty,... (其他往后增加)

高品质标准化:
{{masterpiece}}, {best quality}, {highres}, original, reflection, unreal engine, body shadow, artstationextremely detailed CG unity 8k wallpaper

画风标准化:
(illustration), (painting), (sketch), anime coloring, fantasy,

其他特殊要求:
exaggerated body proportions, greasy skin, realistic and delicate facial features, SFW

3、权重与负面提示词

(1) 提示词的权重

如下咒语,

SFW, 1girl, walking, forest, path, sun, sunshine, shining on body,yellow skirt and white t-shirt, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy.trees, bush, white flower, path, outdoor,
(masterpiece:1.2) , best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting(extremely detailed CG:1.2), drawing, paintbrush.

你会看到很多(),小数点,逗号之类的符号和数字,他们又是做什么的呢?其实,这些内容是用来增强或者是减弱某些提示词的优先级和权重的,比如刚才我们看到这个画面,我们输入了 white flower, 但我们在图片上并没有清晰的看到白色的花,你输入了很多不同的元素给AI,都要他画,但他在处理的时候,不一定get到你最想要的是什么,所以有可能优先花了树和森林,如果你就是特别特别想要百花,那就可以用类似的方式,把白花的权重和优先级增强,去增强的方式有两种:

套括号

() 会使权重变为 1.1 倍,相对于其他元素就更突出。你还可以套多层括号,每套一层,就再乘以1.1倍,三层就是1.331倍。这样花就出来了:

SFW, 1girl, walking, forest, path, sun, sunshine, shining on body,yellow skirt and white t-shirt, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy.trees, bush, (((white flower))), path, outdoor,
(masterpiece:1,2) , best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting(extremely detailed CG:1.2), drawing, paintbrush.

括号加数字权重

加了一种括号以后,可以在后面加一个英文冒号,后面可以接一个数字。

SFW, 1girl, walking, forest, path, sun, sunshine, shining on body,yellow skirt and white t-shirt, blonde hair, long hair, smiling, stretching arms, hands up, beautiful, happy.trees, bush, (white flower: 1.5), path, outdoor,
(masterpiece:1,2) , best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting(extremely detailed CG:1.2), drawing, paintbrush.

所以,当你觉得这个画面里有你告诉了AI但他又没有画出来的东西时,就可以借助这些方法来强调。加数字的方式明显更准确,而加括号进行微调的时候就更方便。

比起圆括号,还有这种大括号 {}, 代表1.05倍,调节的效果就细微一点。

削弱提示词

而如果你想削弱某个提示词的影响,就可以赋予它一个小于 1 的权重数值,或者用方括号[], 会把原来的权重削弱成原来的 0.9 倍。调节权重的时候,也要注意一件事情,就是尽量避免个别词条的权重太高,我体验的安全范围在 1 上下 0.5 左右。当你赋予一个词条2左右甚至更高的数值时,他就容易扭曲画面的内容。这个时候我们通常要改换思路。通过更多类型的词条来协助增强它的效应。

总结一下:

进阶语法

(2) 负面提示词

提示词另外一个构成部分,是负面提示词。通俗点说,你希望这个画面里出现什么,就往正向提示词里丢,而不希望出现什么,就往反向提示词里丢。反向提示词是可以没有的,但一般我们也会选择加入一些通用的项目,主要也是基于标准化的考虑,比如:

NSFW, (worst quality:2) , (low quality:2), (normal quality:2) , lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, (((extra arms and legs))),

(3) 出图参数详解

如果说提示词是咒语,那出图参数就像是魔法师的魔杖和魔导书一样,空着了这个咒语的具体释放形式。

采样迭代步数

AI 生成图像会经过一个加噪再去噪的过程,而去噪就是在用像素一点点模拟你的最终要生成的这个图像,每模拟一次,画面就会变得更清晰一点。理论上,采样迭代步数越多,肯定最终效果越清晰,但实际上,当步数大于20步以后,后面的提升不大。而增加步数肯定意味着更长的计算时间。所以,默认的采样步数一般都是 20。你算力充足,且想追求更高的清晰度,就设置为 30-40,最低不要低于 10。

采样方法

采样方法,其实可以简单解释成AI进行图像生成的时候使用的某种特定算法,WebUI提供的采样方法非常多,足足十几个,但其中我们常用到的估计也就4-5个。这其中:

Euler 的两个合适插画风格,出图比较朴素。

DPM 2 和 DPM2 Karras 速度较快。

再具体使用时,我推荐使用带有 ++ 号的,这些都是改进了的算法,无论如何都比上面的更稳定。

另外,大部分模型也有推荐使用某种特定的算法,这可能是模型制作者自己测试过的。比如深渊橘的作者最推荐用的就是SDE Karras。

宽度和高度

代表的就是你最终出图的时候的分辨率,分辨率的设置存在一些隐性限制,默认的分辨率是 512 x 512,但这个分辨率下的图片,哪怕细节再丰富,看起来都是模糊的。设备允许的情况下,我会把他提到 1000 左右。

相同的提示词,用更高的分辨率跑出来,质感就完全不一样了。但是,分辨率设置的太高,也是会有问题的,一是你的显卡显存扛不住;其二,则是分辨率太大了,很容易出现多人、多手、多脚的情况。这个问题我有特殊研究过,它的原因是,AI在进行模拟训练的时候,用的图片的分辨率一般都比较小,如果你的分辨率设置太大,它就会认为你是多张图片拼接而成的,那出现多的人就不奇怪了。

要避免这样的问题出现,一般我们先采用低分辨率绘制,再靠高清修复(Hires Fix) 来放大。它本身其实是额外的做了一次图生图。你也可以反复实验,了解在你当前的设备条件下,什么分辨率是既能保证质量又能兼顾效率的。

面部修复

面部修复一般都要勾选上,它会采用一些对抗算法识别人物面部并进行修复,和我们用的美图App里面智能P脸的功能差不多。

平铺/分块(Tiling)

平铺,是用来生成那种可以无缝贴满整个屏幕的纹理性图片的。如果你没有需要,千万别勾,也是一个让你的画面变的很奇怪的东西。

提示词相关性(CFG Scale)

提示词相关性好理解,它的值越高,AI忠实地反映你的提示词的程度就越高,但和权重一样,我们一般不会浮动太多,7-12 是比较安全的数值,太高容易边型。

随机种子

随机种子也是一个可以用来控制画面内容一致性的重要参数。

生成批次

因为AI绘画的不确定性,即便是同一组提示词,你也需要反复试验,期待它在某个瞬间给你一个完美符合你需要的画面,这个时间过程有时会很漫长,可能会经过几十次、上百次。如果你想让AI一直不断地按照同一组提示词和参数去出图,那就把批次数调高,绘制的过程会不断重复进行。

结束以后,它会生成两样东西——除了每个批次出的图,还会有一张拼在一起的格子预览图,方便你进行对比。所以,你完全可以让它一口气来上个10次20次甚至几百次

每批数量

这个不建议调整,增大可以让你每批次数绘制的图像数量增多。理论上效率会更高,但它同一批绘制的方法是把他们拼接在一起看作一张更大的图片一次去画,所以你的设备不好,非常容易爆显存。

4、提示词到底怎么写?

对于新手,我给大家总结三个快速写提示词的方法:

(1) 翻译大法

其实,无论这些提示词再怎么复杂,它们说的还都是人话。因此,当你不不知道该如何表述的时候,就用自然的语言把你想要画的东西一件件地说出来就好了。还是那句话,SD 不认中文,所以你得先用翻译平台把它转成英文。虽然这些词语表述有时候不绝对准确,但它至少是在帮你接近那个你想要的画面。而有一些功能插件也会帮助你把不准确的意象校正成AI的词典里有的东西,也蛮实用的。目前,也有一些开发者做出了很多提示词的插件,大家可以去探索。

(2) 借助工具

AI 绘画也流行了一段时间了,能意识到提示词难写的人,肯定也不止你我而已。因此,有些人专门开发了一些可以帮助你更好地去书写提示词的工具。

这里,我推荐两个可以用于辅助书写提示词的网站:

http://atoolbox.net

https://ai.dawnmark.cn

他们的用法都很简单,你可以像选参数一样,勾选那些你需要的,它会帮助你自动按照刚刚我们说的那些语法规则整理到一起。然后你再复制粘贴到自己的SD里面就可以。使用这些工具,像是在经历一个更方便的翻译的过程。但要注意,思路不要被他已有的一些词汇限制住了。如果有其他你想要加进去的东西,也可以尝试自己撰写添加。

(3) 抄作业

在AI绘画领域,抄作业并不是什么不光彩的事,有很多创作者还会主动分享自己作图使用的咒语和模型。

https://civitai.com/

https://openart.ai

https://arthub.ai

更新时间 2024-03-11