|
作者:symon导语StableDiffusion技术把AI图像生成提高到了一个全新高度,文生图Texttoimage生成质量很大程度上取决于你的提示词Prompt好不好。本文从“如何写好提示词”出发,从提示词构成、调整规则和chatGPT辅助工具等角度,对文生图的提示词输入进行归纳总结。一背景介绍StableDiffusion是一种文生图AI模型,由互联网上数百万图像和文本描述对训练而来,通过理解文本描述与图像信息的内在关联,不断利用扩散过程进而得到满意的生成[1]。比如,通过一串提示词,midjourney会输出这样的情侣合照:A pair of young Chinese lovers, wearing jackets and jeans, sitting on the roof, the background is Beijing in the 1990s, and the opposite building can be seen —v 5 —s 250 —q 2.一对年轻的中国情侣,穿着夹克和牛仔裤,坐在屋顶上,背景是20世纪90年代的北京,可以看到对面的建筑图1用midjourneyv5生成的情侣图没错,这两位并不是真人,而是由AI一键生成的,毫无违和感!你可能会想这有什么了不起的,随手一搜就有好几G嘛。这项技术的有趣之处在于,还可以让模型生成一些先前不存在具有组合元素的高质量图像。比如说,你可以生成不同画家风格的明星照片,下面以19世纪印象派画家VincentvanGogh和19世纪美国画家画家JohnSargent风格来画下EmmaWatson肖像画(EmmaWatson是《哈利波特》中赫敏的饰演者)图2不同画家风格下的EmmaWatson肖像prompt1:VincentvanGogh’spaintingofEmmaWatson;prompt2:JohnSargent’spaintingofEmmaWatson从图2可以看到,生成对面部和阴影控制得比较好,整体艺术风格还是比较协调的,能把画师风格和具体人物以一种比较和谐的方式融合到一起。图3StableDiffusion组成结构那计算机是如何理解输入文字呢?图3给出了stablediffusion整体结构示意图,利用文本编码器textencoder(蓝色模块),把文字转换成计算机能理解的某种数学表示,它的输入是文字串,输出是一系列具有输入文字信息的语义向量。有了这个语义向量,就可以作为后续生成器imagegenerator(粉黄组合框)的一个控制输入。stablediffusion更多技术介绍和文本编码器工作原理可以查看《【AI绘画】十分钟读懂StableDiffusion运行原理》。要想生成出满意照片,输入合适提示词就变得非常重要,接下来就从“如何写好提示词”出发,对文生图的提示词输入方法进行归纳总结。二如何写好提示词?写出一份比较好的提示词是文生图技术的关键。但是,写出一份好的prompt并不容易,下面针对“如何写好提示词”这个问题,从提示词构成、调整规则和chatGPT辅助等角度,来介绍下如何优化输入提示词。1正面提示词要写好一份提示词,遵循原则为尽可能详细并且具体,从不同角度进行详细描述。下面从9个角度来介绍输入关键词。常用的关键词类别包括如下:(1)主体subject(2)媒介medium(3)风格style(4)画家artist(5)website(6)分辨率resolution(7)额外细节additionaldetails(8)色调color(9)光影lighting当然,输入提示词时,不需要包括到每个类别,只需作为一个列表检查下哪些可以用到。下面通过添加每个类别的关键字来生成一些图像,来说明和介绍下每个类别。为单独观察提示词效果,实验时不会使用负面提示词(在下个模块会更详细介绍)。(1)主体主体subject,是指想在图像中看到的主体,要尽可能详细描述以避免出现描述不足的问题。假如要生成一个在施法的女巫,新手可能会这么写:A sorceress这个描述词也太简单了吧,要提到女巫长什么样,增加她形象相关的描述词,比如说她穿了什么?在施什么魔法?是站着,跑着,或者飘浮在天上?主体背景在哪里?Stablediffusion并不能猜到这些内容,我们要更详细地表达各个元素信息。画人物对象的一个常用技巧是使用名人的名字,名人由于在训练集中出现频次较大而训练充分,是控制生成人物形象的一种好办法。作为演示,把女巫形象设置成EmmaWatson的样子,她因饰演《哈利波特》中的赫敏一角红遍全球,也是stablediffusion里最常使用的一个关键词。把她想象成一个会使用闪电的神秘女巫,并增加一些形象要求,提示词如下:Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing对应的生成图如下:图4EmmaWatson女巫图利用名人名字来控制人物形象,直接原因就是训练时用到了一定量样本,包括不同角度和不同场景,使EmmaWatson得到了充分训练。要是使用更早些或者小众点的演员,效果就不一定这么好了。(2)画风画风medium,是指生成的画风,包括插画illustration、油画oilpainting或摄影风photography等。这类描述词影响力很大,单独一个画风描述词就能很大程度地改变风格。比如添加下关键字“digitalpainting(数字绘画)”,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting对应的生成图如下:图5EmmaWatson女巫图+画风可以看到,这些图像的画风从普通照片变成了数字绘画风。这里也列出一些常用画风,关键词说明Portrait肖像画风,用于生成脸部或者头像Digitalpainting数字艺术风格Conceptart2D插图风格Ultrarealisticillustration画风真实和逼真,用于生成人物Underwaterportrait模拟水下的人物特写,头发会飘起来(3)风格风格style,是指主体形象的艺术风格,比如印象派、超现实主义、波普艺术等。通过添加一些风格描述词"hyperrealistic,fantasy,surrealist,fullbody",Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body对应的生成图如下:图6EmmaWatson女巫图+风格这里感觉又多了一些变化,前面关键字已经包含了部分风格关键字导致变化不大,但是保留这些风格提示词也可以。这里也列出一些常用风格。关键词说明hyperrealistic超现实主义,会增加细节和分辨率pop-art波普艺术风格Modernist现代派,色彩鲜艳和高对比度artnouveau新艺术风格,追求平面化(4)画家画家artist,类似于强修饰符,是指用特定画家作为参考来生成他们风格的图像。当然也可以使用多个画家名字来生成混合风格。继续在提示词里再加上19世纪的超级英雄漫画家StanleyArtgermLau和肖像画家AlphonseMuchaEmma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha对应的生成图如下:图7EmmaWatson女巫图+不同画家这里看到,把两位画家的风格融合到一起,效果还不错。这里也列出一些常用画家,关键词说明JohnCollier19世纪肖像画家StanleyArtgermLau偏写实和现代风格JohnSingerSargent擅长女性肖像,偏印象派AlphonseMucha擅长画平面肖像(5)网站有一些小众网站,比如说Artstation和DeviantArt这样的网站收集了许多画风独特的图像。在提示词中添加网站名称,也可以把图像引向这些风格。试下在提示词里再加上“artstation”,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha, artstation对应的生成图如下:图7EmmaWatson女巫图+网站变化不是很大,但看起来有点像Artstation网络下载下来的了。(6)分辨率分辨率Resolution,表示生成图像的清晰度和细节程度。继续添加这方面关键字“highlydetailed,sharpfocus”,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha, artstation, highly detailed, sharp focus对应的生成图如下:图8EmmaWatson女巫图+分辨率看起来变化不大,因为前面生成已经非常清晰了,但补充一下也无妨。(7)额外细节额外细节additionaldetails,可以继续用来修改。继续添加这方面关键字“sci-fi,stunninglybeautiful,dystopian”,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha, artstation, highly detailed, sharp focus, sci-fi, stunningly beautiful, dystopian对应的生成图如下:图9EmmaWatson女巫图+额外细节(8)色调色调color,是指通过添加颜色关键字来控制图像整体颜色,可以把颜色应用到某个物品上或者是整体色调。利用关键字"iridescentgold"让整张黄一点,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha, artstation, highly detailed, sharp focus, sci-fi, stunningly beautiful, dystopian, iridescent gold对应的生成图如下,看起来就很黄了!图10EmmaWatson女巫图+色调(9)光照光照lighting,是指图像里的光照描述,改变光照可以对图像效果产生巨大影响。试试添加关键字“cinematiclighting,dark”,Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing, digital painting, hyperrealistic, fantasy, Surrealist, full body, by Stanley Artgerm Lau and Alphonse Mucha, artstation, highly detailed, sharp focus, sci-fi, stunningly beautiful, dystopian, iridescent gold, cinematic lighting, dark对应的生成图如下,影视光照就出来了!图11EmmaWatson女巫图+光照总结下,生成时针对主体添加一些关键字,就能够得到比较不错的;通常不需要填写很多提示词来获得高质量,比如画家、网站和风格在一定程度上是有些重合的。也可以借助一些stablediffusion提示词网站来获取更多灵感Ai画廊-AI关键词生成器2负面提示词负面提示词和正面提示词是同等重要的,使用负面提示词也是生成迭代过程的一个重要环节。要解释负面提示词的工作原理,这里需要先理解不使用负面提示词时采样是如何工作的不使用负面提示词的采样过程在stablediffusion采样阶段,①首先用文本提示词作为指导条件,利用条件采样对图像进行去噪;②采样器使用无条件采样对同一图像进行去噪,这里不使用文本指导,但它仍然会扩散到某一个图像,比如说下面的篮球或者红酒杯(它可以是任何随机主体);③扩散过程中实际上是计算条件采样和无条件采样的差异,并按照采样步数重复这个过程。图12不使用负面提示词的采样过程使用负面提示词的采样过程负面提示词是通过影响无条件采样实现的。利用负面提示词,在上面第②步里就不是使用空提示来生成随机对象了。从技术上说,正面提示词会引导采样过程生成与文本相关的图像,负面提示词则会在采样过程来引导远离相关图像。需要说明,扩散过程是发生在隐空间latentspace里,而不是图像空间,这里仅作为技术示意。图13使用负面提示词的采样过程负面提示词,即填入不想要的主体或者身体部位,以在采样过程中避免出现。比如说,sdv1版本不擅长生成手,就可以在负向提示词里输入“hand”或者“extralimbs”来隐藏或修正。下面会从4个角度来介绍可以使用负面提示词的应用场景,分别是:(1)移除物体removingthings(2)修改modifyingimages(3)关键词切换keywordswitching(4)修改风格modifyingstyles(1)移除物体负面提示词的第一个直接用法是移除任何不想在中看到的内容。比如,在提示词输入“Portraitphotoofaman”,得到下面两张,都看起来比较严肃。图14提示词输入“Portraitphotoofaman”的生成接下来试着去掉他们胡子,看起来更年轻一点,因此在负向提示词里输入“mustache”,就可以生成一些没有胡子的男人,如图15所示。当然,要想完全去除右边男人的胡子,可通过增强负向提示词“(mustache:1.3)”来告诉采样过程去除胡子操作的重要度提高30%。图15在负向提示词里添加“mustache”的生成(2)修改负向提示词也可以用于在得到较满意图像时,利用负面提示词进行微调。这里不需要移除任何东西,而只需要对主体做一些细微修改。比如,利用下面提示词得到一张比较满意的唯美照片后,发现可能由于刮风导致头发都飘起来了,就可以添加负面提示词“windy”让头发正常下垂。正面提示词输入如下,emma watson as nature magic celestial, top down pose, long hair, soft pink and white transparent cloth, space, D&D, shiny background, intricate, elegant, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, 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负面提示词“theear:1.9):0.5”的生成通过这种方式,就对负面提示词使用更大强度1.9,且不改变组成,得到了接近原始图像的微调图像,并且把耳朵用头发遮得更严实。(4)修改风格负面提示词不仅能用来修改内容,也可以用来修改风格。为什么要用负面提示词来修改风格?在正面提示里添加过多单词也会混淆扩散过程,把一部分信息放在负面提示词里的效果会更明显。操作1Sharpening。为了让更清晰,除了在正面提示词里使用关键字“sharp”或者“focused”,也可以在负面提示词里使用“blur”,来让更为清晰。图18添加负面提示词“blurry”的生成操作2“Photorealistic”。使用负面提示词“painting”或者“cartoon”,使生成更倾向写实主义。当然,要是想保持原有结构,可继续使用前面提到的关键词切换,使用负面提示词“thepaintingcartoon:1.9):0.3”,可得到图19中更接近原始图像但增加了写实主义风格的生成图像。图19负面提示词“thepaintingcartoon:1.9):0.3”的生成下面给出了一份通用的负面提示词,可以复用到你的场景,这些负面提示词可以让主体更突出,具有层次感。ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face, blurry, draft, grainy总结下,负面提示词也扮演着十分重要的作用,用负面提示词在采样过程引导远离相关图像。如上面介绍,可以用来微调生成,如移除物体、修改,或者修改风格等一系列操作。3微调提示词利用正面和负面提示词还不能生成很满意的照片,还需要做进一步细节调整?还有一些提示词调整技巧,下面会从3个用法角度来介绍如何微调提示词,(1)关键词权重(2)()和[]语法(3)关键词混合(1)关键词权重关键词权重,是指通过语法“(keyword:factor)”来调整关键词权重,其中factor为权重值,小于1表示减低重要度,大于1表示增大重要度。下面这个例子调整了关键字“dog”的权重值。如下图所示,增大“dog”权重一般会生成更多狗,减少权重则降低了生成狗的数量。这种技术也可以应用到风格style或者光照lighting调整。dog, autumn in paris, ornate, beautiful, atmosphere, vibe, mist, smoke, fire, chimney, rain, wet, pristine, puddles, melting, dripping, snow, creek, lush, ice, bridge, forest, roses, flowers, by stanley artgerm lau, greg rutkowski, thomas kindkade, alphonse mucha, loish, norman rockwell.图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之间的数字。举个例子,输入提示词“Oilpaintingportraitof[JoeBidenonaldTrump:0.5]”,采样步数设置为30。这里指的是,第1~15步,提示词为“OilpaintingportraitofJoeBiden”;第16~30步,提示词为“OilpaintingportraitofDonaldTrump”。解释一下,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了解stablediffusion技术吗?答案是不了解,因为它的训练数据只截止于2021年9月。幸运的是,它了解什么是文生图text-to-image和DALL-E模型,可以利用这块知识构建提示词工程。图23chatGPT是否了解stablediffusion、text-to-image和DALL-E技术?如何调用chatGPT呢?最直接的方式是上chat.openai.com使用,内网也有一些中转方式,比如用企微里的chatGPT机器人或者搭建一些内部平台,这里不过多介绍。下面介绍使用chatGPT来生成一个人物特写照片,这是比较难的一个任务。让chatGPT生成高质量提示词,也是需要一些技巧的,包括以下三点:(1)指定画风,比如oil-painting油画风等;(2)确定主体,如前面提到用一个明星名字是个不错选择;(3)给出具体例子的话往往学的更快。综合一下,输入ChatGPT的提示词如下:Examples of high quality prompt for stunning close-up photorealistic illustration of Ana de Armas for text-to-image models (Stable Diffusion, midjourney or Dalle2) are– portrait of beautiful happy young ana de armas, ethereal, realistic anime, trending on pixiv, detailed, clean lines, sharp lines, crisp lines, award winning illustration, masterpiece, 4k, eugene de blaas and ross tran, vibrant color scheme, intricately detailed– alberto seveso and geo2099 style, A highly detailed and hyper realistic portrait of a gorgeous young ana de armas, lisa frank, trending on artstation, butterflies, floral, sharp focus, studio photo, intricate details, highly detailed, by Tvera and wlop and artgermGive me more examples.chatGPT的回复为:A photorealistic, highly detailed illustration of Ana de Armas in a vintage Hollywood style, reminiscent of the golden age of cinema, with a focus on glamour and elegance.A close-up illustration of Ana de Armas in a neo-noir style, reminiscent of the film noir genre, with a focus on shadows, contrasts, and a sense of danger.把这些提示词输入到stablediffusionv1.5里,使用DPM++2MKarras采样器,迭代步数为25,分辨率为502×704。负面提示词使用上面提到的通用版本。chatGPT提示词1:A photorealistic, highly detailed illustration of Ana de Armas in a vintage Hollywood style, reminiscent of the golden age of cinema, with a focus on glamour and elegance.图24chatGPT提示词1的生成chatGPT提示词2:A close-up illustration of Ana de Armas in a neo-noir style, reminiscent of the film noir genre, with a focus on shadows, contrasts, and a sense of danger.图25chatGPT提示词2的生成这里只进行了初步尝试,生成效果看起来还不错,可以后续进一步深入挖掘。此外,还可以使用magicPrompt模型。基于GPT-2模型,它使用了大约8万条stablediffusion优质提示词训练而来,旨在为stablediffusion生成完善提示词。只要输入主体,就能补全各种细节,体验网址如下:MagicPromptStableDiffusion-aHuggingFaceSpacebyGustavosta图26magicPrompt功能示例三本文小结AI绘画各种技术和应用不断涌现,也很大程度上提高了不少行业产出效率。这篇文章主要介绍stablediffusion里的提示词prompt,从提示词构成、调整规则和chatGPT辅助等角度出发,介绍如何更好地输入提示词,才能更好地控制AI绘画生成。参考链接1、GitHub-CompVis/stable-diffusion:Alatenttext-to-imagediffusionmodel2、DenoisingDiffusionProbabilisticModels3、HowtocomeupwithgoodpromptsforStableDiffusion-StableDiffusionArt
|
|