作者:symon
导语
Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度,文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好。本文从“如何写好提示词”出发,从提示词构成、调整规则和 chatGPT 辅助工具等角度,对文生图的提示词输入进行归纳总结。
一 背景介绍
Stable Diffusion 是一种文生图 AI 模型,由互联网上数百万图像和文本描述对训练而来,通过理解文本描述与图像信息的内在关联,不断利用扩散过程进而得到满意的生成图片[1]。
(资料图片仅供参考)
比如,通过一串提示词,midjourney 会输出这样的情侣合照:
ApairofyoungChineselovers,wearingjacketsandjeans,sittingontheroof,thebackgroundisBeijinginthe1990s,andtheoppositebuildingcanbeseen—v5—s250—q2.一对年轻的中国情侣,穿着夹克和牛仔裤,坐在屋顶上,背景是20世纪90年代的北京,可以看到对面的建筑图1 用midjourney v5生成的情侣图没错,这两位并不是真人,而是由 AI 一键生成的,毫无违和感!你可能会想这有什么了不起的,随手一搜就有好几 G 嘛。这项技术的有趣之处在于,还可以让模型生成一些先前不存在具有组合元素的高质量图像。比如说,你可以生成不同画家风格的明星照片,下面以 19 世纪印象派画家 Vincent van Gogh 和 19 世纪美国画家画家 John Sargent 风格来画下 Emma Watson 肖像画(Emma Watson 是《哈利波特》中赫敏的饰演者)
图2 不同画家风格下的Emma Watson肖像prompt1: Vincent van Gogh’s painting of Emma Watson; prompt2: John Sargent’s painting of Emma Watson
从图 2 可以看到,生成图片对面部和阴影控制得比较好,整体艺术风格还是比较协调的,能把画师风格和具体人物以一种比较和谐的方式融合到一起。
图3 Stable Diffusion组成结构那计算机是如何理解输入文字呢?图 3 给出了 stable diffusion 整体结构示意图,利用文本编码器 text encoder(蓝色模块),把文字转换成计算机能理解的某种数学表示,它的输入是文字串,输出是一系列具有输入文字信息的语义向量。有了这个语义向量,就可以作为后续图片生成器 image generator(粉黄组合框)的一个控制输入。stable diffusion 更多技术介绍和文本编码器工作原理可以查看《【AI 绘画】十分钟读懂 Stable Diffusion 运行原理》。要想生成出满意照片,输入合适提示词就变得非常重要,接下来就从“如何写好提示词”出发,对文生图的提示词输入方法进行归纳总结。
二 如何写好提示词?
写出一份比较好的提示词是文生图技术的关键。但是,写出一份好的 prompt 并不容易,下面针对“如何写好提示词”这个问题,从提示词构成、调整规则和 chatGPT 辅助等角度,来介绍下如何优化输入提示词。
1 正面提示词
要写好一份提示词,遵循原则为尽可能详细并且具体,从不同角度进行详细描述。下面从 9 个角度来介绍输入关键词。
常用的关键词类别包括如下:
(1) 主体 subject
(2) 媒介 medium
(3) 风格 style
(4) 画家 artist
(5) website
(6) 分辨率 resolution
(7) 额外细节 additional details
(8) 色调 color
(9) 光影 lighting
当然,输入提示词时,不需要包括到每个类别,只需作为一个列表检查下哪些可以用到。下面通过添加每个类别的关键字来生成一些图像,来说明和介绍下每个类别。为单独观察提示词效果,实验时不会使用负面提示词(在下个模块会更详细介绍)。
(1) 主体
主体 subject,是指想在图像中看到的主体,要尽可能详细描述以避免出现描述不足的问题。假如要生成一个在施法的女巫,新手可能会这么写:
Asorceress这个描述词也太简单了吧,要提到女巫长什么样,增加她形象相关的描述词,比如说她穿了什么?在施什么魔法?是站着,跑着,或者飘浮在天上?主体背景在哪里?
Stable diffusion 并不能猜到这些内容,我们要更详细地表达各个元素信息。画人物对象的一个常用技巧是使用名人的名字,名人由于在训练集中出现频次较大而训练充分,是控制生成人物形象的一种好办法。
作为演示,把女巫形象设置成 Emma Watson 的样子,她因饰演《哈利波特》中的赫敏一角红遍全球,也是 stable diffusion 里最常使用的一个关键词。把她想象成一个会使用闪电的神秘女巫,并增加一些形象要求,提示词如下:
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing对应的生成图如下:
图4 Emma Watson女巫图利用名人名字来控制人物形象,直接原因就是训练时用到了一定量样本,包括不同角度和不同场景,使 Emma Watson 得到了充分训练。要是使用更早些或者小众点的演员,效果就不一定这么好了。
(2) 画风
画风 medium,是指生成图片的画风,包括插画 illustration、油画 oil painting 或摄影风 photography 等。这类描述词影响力很大,单独一个画风描述词就能很大程度地改变风格。比如添加下关键字“digital painting(数字绘画)”,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting对应的生成图如下:
图5 Emma Watson女巫图+画风可以看到,这些图像的画风从普通照片变成了数字绘画风。这里也列出一些常用画风,
Portrait | 肖像画风,用于生成脸部或者头像 |
Digital painting | 数字艺术风格 |
Concept art | 2D 插图风格 |
Ultra realistic illustration | 画风真实和逼真,用于生成人物 |
Underwater portrait | 模拟水下的人物特写,头发会飘起来 |
(3) 风格
风格 style,是指主体形象的艺术风格,比如印象派、超现实主义、波普艺术等。
通过添加一些风格描述词"hyperrealistic, fantasy, surrealist, full body",
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody对应的生成图如下:
图6 Emma Watson女巫图+风格这里感觉又多了一些变化,前面关键字已经包含了部分风格关键字导致变化不大,但是保留这些风格提示词也可以。这里也列出一些常用风格。
hyperrealistic | 超现实主义,会增加细节和分辨率 |
pop-art | 波普艺术风格 |
Modernist | 现代派,色彩鲜艳和高对比度 |
art nouveau | 新艺术风格,追求平面化 |
(4) 画家
画家 artist,类似于强修饰符,是指用特定画家作为参考来生成他们风格的图像。当然也可以使用多个画家名字来生成混合风格。
继续在提示词里再加上 19 世纪的超级英雄漫画家 Stanley Artgerm Lau 和肖像画家 Alphonse Mucha
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha对应的生成图如下:
图7 Emma Watson女巫图+不同画家这里看到,把两位画家的风格融合到一起,效果还不错。这里也列出一些常用画家,
John Collier | 19 世纪肖像画家 |
Stanley Artgerm Lau | 偏写实和现代风格 |
John Singer Sargent | 擅长女性肖像,偏印象派 |
Alphonse Mucha | 擅长画平面肖像 |
(5) 网站
有一些小众图片网站,比如说Artstation和 Deviant Art 这样的网站收集了许多画风独特的图像。在提示词中添加网站名称,也可以把图像引向这些风格。
试下在提示词里再加上“artstation ”,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha,artstation对应的生成图如下:
图7 Emma Watson女巫图+网站图片变化不是很大,但看起来有点像 Artstation 网络下载下来的了。
(6) 分辨率
分辨率 Resolution,表示生成图像的清晰度和细节程度。继续添加这方面关键字“highly detailed, sharp focus”,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha,artstation,highlydetailed,sharpfocus对应的生成图如下:
图8 Emma Watson女巫图+分辨率看起来变化不大,因为前面生成图片已经非常清晰了,但补充一下也无妨。
(7) 额外细节
额外细节 additional details,可以继续用来修改图片。继续添加这方面关键字“sci-fi, stunningly beautiful, dystopian”,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha,artstation,highlydetailed,sharpfocus,sci-fi,stunninglybeautiful,dystopian对应的生成图如下:
图9 Emma Watson女巫图+额外细节(8) 色调
色调 color,是指通过添加颜色关键字来控制图像整体颜色,可以把颜色应用到某个物品上或者是整体色调。
利用关键字"iridescent gold"让整张图片黄一点,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha,artstation,highlydetailed,sharpfocus,sci-fi,stunninglybeautiful,dystopian,iridescentgold对应的生成图如下,看起来就很黄了!
图10 Emma Watson女巫图+色调(9) 光照
光照 lighting,是指图像里的光照描述,改变光照可以对图像效果产生巨大影响。试试添加关键字“cinematic lighting, dark”,
EmmaWatsonasapowerfulmysterioussorceress,castinglightningmagic,detailedclothing,digitalpainting,hyperrealistic,fantasy,Surrealist,fullbody,byStanleyArtgermLauandAlphonseMucha,artstation,highlydetailed,sharpfocus,sci-fi,stunninglybeautiful,dystopian,iridescentgold,cinematiclighting,dark对应的生成图如下,影视光照就出来了!
图11 Emma Watson女巫图+光照总结下,图片生成时针对主体添加一些关键字,就能够得到比较不错的图片;通常不需要填写很多提示词来获得高质量图片,比如画家、网站和风格在一定程度上是有些重合的。也可以借助一些 stable diffusion 提示词网站来获取更多灵感 Ai 画廊 - AI 关键词生成器
2 负面提示词
负面提示词和正面提示词是同等重要的,使用负面提示词也是生成迭代过程的一个重要环节。要解释负面提示词的工作原理,这里需要先理解不使用负面提示词时采样是如何工作的
不使用负面提示词的采样过程
在 stable diffusion 采样阶段,① 首先用文本提示词作为指导条件,利用条件采样对图像进行去噪;② 采样器使用无条件采样对同一图像进行去噪,这里不使用文本指导,但它仍然会扩散到某一个图像,比如说下面的篮球或者红酒杯(它可以是任何随机主体);③ 扩散过程中实际上是计算条件采样和无条件采样的差异,并按照采样步数重复这个过程。
图12 不使用负面提示词的采样过程使用负面提示词的采样过程
负面提示词是通过影响无条件采样实现的。利用负面提示词,在上面第 ② 步里就不是使用空提示来生成随机对象了。从技术上说,正面提示词会引导采样过程生成与文本相关的图像,负面提示词则会在采样过程来引导远离相关图像。需要说明,扩散过程是发生在隐空间 latent space 里,而不是图像空间,这里仅作为技术示意。
图13 使用负面提示词的采样过程负面提示词,即填入不想要的主体或者身体部位,以在采样过程中避免出现。比如说,sd v1 版本不擅长生成手,就可以在负向提示词里输入“hand”或者“extra limbs”来隐藏或修正。下面会从 4 个角度来介绍可以使用负面提示词的应用场景,分别是:
(1) 移除物体 removing things
(2) 修改图片 modifying images
(3) 关键词切换 keyword switching
(4) 修改风格 modifying styles
(1) 移除物体
负面提示词的第一个直接用法是移除任何不想在图片中看到的内容。比如,在提示词输入“Portrait photo of a man”,得到下面两张图片,都看起来比较严肃。
图14 提示词输入“Portrait photo of a man”的生成图片接下来试着去掉他们胡子,看起来更年轻一点,因此在负向提示词里输入“mustache”,就可以生成一些没有胡子的男人,如图 15 所示。当然,要想完全去除右边男人的胡子,可通过增强负向提示词“(mustache:1.3)”来告诉采样过程去除胡子操作的重要度提高 30%。
图15 在负向提示词里添加“mustache”的生成图片(2) 修改图片
负向提示词也可以用于在得到较满意图像时,利用负面提示词进行微调。这里不需要移除任何东西,而只需要对主体做一些细微修改。
比如,利用下面提示词得到一张比较满意的唯美照片后,发现可能由于刮风导致头发都飘起来了,就可以添加负面提示词“windy”让头发正常下垂。
正面提示词输入如下,
emmawatsonasnaturemagiccelestial,topdownpose,longhair,softpinkandwhitetransparentcloth,space,D&D,shinybackground,intricate,elegant,highlydetailed,digitalpainting,artstation,conceptart,smooth,sharpfocus,illustration,artgerm,bouguereau图16 添加负面提示词“windy”后的左右变化,右边为修改后图片要是不想调整头发,而是想让头发遮住耳朵呢?通过添加带有不同强度的负面提示词“ear”来调整隐藏强度。下面是强度分别为 1.3、1.6 和 1.9 的效果,由于 ear 在强度为 1 时已被大比例遮住,继续增大时变化不多。但负面强度设置为 1.9 时,图像组成也发生了变化,这说明负面提示词对扩散过程的影响是比较大的。
图17 负面提示词“ear”不同强度的生成图片(3) 关键词切换
要是真的想使用强度为 1.9 的负向提示词,有什么不改变图片总体结构的方法呢?用关键词切换技术,先使用一个无意义的单词作为负面提示词,再在后面的采样步骤里切换到(ear:1.9)。
比如,使用“the”作为无意义的负面提示词,可以把它放在负面提示词里先验证下它的无用性。在验证添加“the”的生成图像跟没有添加时几乎一样后,就可以使用这个“the”单词作为负面提示词,
the:(ear:1.9):0.5由于采样步数设置了 20,意味着在第 1~10 步时使用负面提示词“the”,第 11~20 步使用负面提示词“(ear:1.9)”。这是因为,扩散过程的初始阶段是确定图片主体结构,后面步骤只是在对细节进行更精细调整,比如用头发遮住耳朵。
图17 负面提示词“the: (ear:1.9): 0.5”的生成图片通过这种方式,就对负面提示词使用更大强度 1.9,且不改变图片组成,得到了接近原始图像的微调图像,并且把耳朵用头发遮得更严实。
(4) 修改风格
负面提示词不仅能用来修改图片内容,也可以用来修改图片风格。为什么要用负面提示词来修改图片风格?在正面提示里添加过多单词也会混淆扩散过程,把一部分信息放在负面提示词里的效果会更明显。
操作 1 Sharpening。为了让图片更清晰,除了在正面提示词里使用关键字“sharp”或者“focused”,也可以在负面提示词里使用“blur”,来让图片更为清晰。
图18 添加负面提示词“blurry”的生成图片操作 2 “Photorealistic”。使用负面提示词“painting”或者“cartoon”,使生成图片更倾向写实主义。当然,要是想保持原有图片结构,可继续使用前面提到的关键词切换,使用负面提示词“the: (painting cartoon:1.9): 0.3”,可得到图 19 中更接近原始图像但增加了写实主义风格的生成图像。
图19 负面提示词“the: (painting cartoon:1.9): 0.3”的生成图片下面给出了一份通用的负面提示词,可以复用到你的场景,这些负面提示词可以让图片主体更突出,具有层次感。
ugly,tiling,poorlydrawnhands,poorlydrawnfeet,poorlydrawnface,outofframe,extralimbs,disfigured,deformed,bodyoutofframe,badanatomy,watermark,signature,cutoff,lowcontrast,underexposed,overexposed,badart,beginner,amateur,distortedface,blurry,draft,grainy总结下,负面提示词也扮演着十分重要的作用,用负面提示词在采样过程引导远离相关图像。如上面介绍,可以用来微调生成图片,如移除物体、修改图片,或者修改风格等一系列操作。
3 微调提示词
利用正面和负面提示词还不能生成很满意的照片,还需要做进一步细节调整?还有一些提示词调整技巧,下面会从 3 个用法角度来介绍如何微调提示词,
(1) 关键词权重
(2) ()和[]语法
(3) 关键词混合
(1) 关键词权重
关键词权重,是指通过语法“(keyword: factor)”来调整关键词权重,其中 factor 为权重值,小于 1 表示减低重要度,大于 1 表示增大重要度。
下面这个例子调整了关键字“dog”的权重值。如下图所示,增大“dog”权重一般会生成更多狗,减少权重则降低了生成狗的数量。这种技术也可以应用到风格 style 或者光照 lighting 调整。
dog,autumninparis,ornate,beautiful,atmosphere,vibe,mist,smoke,fire,chimney,rain,wet,pristine,puddles,melting,dripping,snow,creek,lush,ice,bridge,forest,roses,flowers,bystanleyartgermlau,gregrutkowski,thomaskindkade,alphonsemucha,loish,normanrockwell.图20 不同权重提示词“dog”的生成图片(2)()和[]符号
调整关键词强度的另一种等效方法是使用()和[]符号。(keyword)把关键词强度增加到 1.1 倍,与“(keyword:1.1)”效果一致;[keyword]把关键词强度降低到 0.9 倍,与“[keyword:0.9]”效果一致。
这里可以使用多个,跟数学里的连乘操作是一样的。
(keyword):1.1((keyword)):1.21(((keyword))):1.33(3) 关键词混合
这里还可以通过混合两个关键词来实现更有趣效果,使用语法为“[keyword1 : keyword2: factor]”,其中 factor 值控制了把 keyword1 切换到 keyword2 的步骤值,是一个介于 0 到 1 之间的数字。
举个例子,输入提示词“Oil painting portrait of [Joe Biden: Donald Trump: 0.5]”,采样步数设置为 30。这里指的是,第 1~15 步,提示词为“Oil painting portrait of Joe Biden”;第 16~30 步,提示词为“Oil painting portrait of Donald Trump”。解释一下,factor 值决定了关键词的切换节点,设置为 0.5 时指的是在 30*0.5 = 15 步时切换。
关键词融合技术还能用于生成高度相似的图片编辑。下面是使用相同提示词生成了两张图片,随机种子和迭代步数保持不变,只修改了[apple: fire: factor]里的 factor 权重。这背后的工作理论是,生成图片的总体组成是由早期扩散过程决定的,后面的一些关键词调整不会对图像整体产生很大影响,只会改变一小部分。
图22 关键词混合[apple: fire: factor]的生成图片4 用 chatGPT 生成
手动改 prompt 很麻烦?能不能用 chatGPT 生成高质量提示词来实现稳定扩散?答案是可以的,但需要用一些技巧来引导。chatGPT 是 openAI 在 2022 年 11 月发布的聊天机器人,在 GPT3.5 大语言模型的基础上进行了微调。GPT3 系列使用了千亿级别文本训练出来的,chatGPT 还进一步引入了 RLHF 强化学习来学习人类偏好。因此,chatGPT 包含了大量人类知识,可以生成文章、诗歌、小说甚至是各种计算机代码。
那 chatGPT 了解 stable diffusion 技术吗?答案是不了解,因为它的训练数据只截止于 2021 年 9 月。幸运的是,它了解什么是文生图 text-to-image 和 DALL-E 模型,可以利用这块知识构建提示词工程。
图23 chatGPT是否了解stable diffusion、text-to-image和DALL-E技术?如何调用 chatGPT 呢?最直接的方式是上chat.openai.com使用,内网也有一些中转方式,比如用企微里的 chatGPT 机器人或者搭建一些内部平台,这里不过多介绍。下面介绍使用 chatGPT 来生成一个人物特写照片,这是比较难的一个任务。
让 chatGPT 生成高质量提示词,也是需要一些技巧的,包括以下三点:(1) 指定图片画风,比如 oil-painting 油画风等;(2) 确定图片主体,如前面提到用一个明星名字是个不错选择;(3) 给出具体例子的话往往学的更快。
综合一下,输入 ChatGPT 的提示词如下:
Examplesofhighqualitypromptforstunningclose-upphotorealisticillustrationofAnadeArmasfortext-to-imagemodels(StableDiffusion,midjourneyorDalle2)are–portraitofbeautifulhappyyounganadearmas,ethereal,realisticanime,trendingonpixiv,detailed,cleanlines,sharplines,crisplines,awardwinningillustration,masterpiece,4k,eugenedeblaasandrosstran,vibrantcolorscheme,intricatelydetailed–albertosevesoandgeo2099style,Ahighlydetailedandhyperrealisticportraitofagorgeousyounganadearmas,lisafrank,trendingonartstation,butterflies,floral,sharpfocus,studiophoto,intricatedetails,highlydetailed,byTveraandwlopandartgermGivememoreexamples.chatGPT 的回复为:
Aphotorealistic,highlydetailedillustrationofAnadeArmasinavintageHollywoodstyle,reminiscentofthegoldenageofcinema,withafocusonglamourandelegance.Aclose-upillustrationofAnadeArmasinaneo-noirstyle,reminiscentofthefilmnoirgenre,withafocusonshadows,contrasts,andasenseofdanger.把这些提示词输入到 stable diffusion v1.5 里,使用 DPM++ 2M Karras 采样器,迭代步数为 25,图片分辨率为 502×704。负面提示词使用上面提到的通用版本。
chatGPT 提示词 1:
Aphotorealistic,highlydetailedillustrationofAnadeArmasinavintageHollywoodstyle,reminiscentofthegoldenageofcinema,withafocusonglamourandelegance.图24 chatGPT提示词1的生成图片chatGPT 提示词 2:
Aclose-upillustrationofAnadeArmasinaneo-noirstyle,reminiscentofthefilmnoirgenre,withafocusonshadows,contrasts,andasenseofdanger.图25 chatGPT提示词2的生成图片这里只进行了初步尝试,生成效果看起来还不错,可以后续进一步深入挖掘。
此外,还可以使用 magicPrompt 模型。基于 GPT-2 模型,它使用了大约 8 万条 stable diffusion 优质提示词训练而来,旨在为 stable diffusion 生成完善提示词。只要输入图片主体,就能补全各种细节,体验网址如下:
MagicPrompt Stable Diffusion - a Hugging Face Space by Gustavosta
图26 magicPrompt功能示例三 本文小结
AI 绘画各种技术和应用不断涌现,也很大程度上提高了不少行业产出效率。这篇文章主要介绍 stable diffusion 里的提示词 prompt,从提示词构成、调整规则和 chatGPT 辅助等角度出发,介绍如何更好地输入提示词,才能更好地控制 AI 绘画生成。
参考链接
1、GitHub - CompVis/stable-diffusion: A latent text-to-image diffusion model
2、 Denoising Diffusion Probabilistic Models
3、How to come up with good prompts for Stable Diffusion - Stable Diffusion Art
标签: