[中文 | Part1] 一些AI图像相关的小心得
你好,这里是insane。自今年5月接触生成式AI起,我进行了许多关于调整参数和提示词的试验,生成了一些看得过去和不太能看的图片,做了一些风格和人物模型。我会在这篇文章内分享一些零散的AIGC试验心得、经验之谈,以及与许多朋友交流后了解到的一些知识,如果对你的图像生成与模型训练有帮助就再好不过。请注意这篇文章的经验基于Illustrious与NoobAI等SDXL基础的模型,不一定适用于flux、腾讯混元、通义千问等基于大语言模型的图片模型。另,笔者对ComfyUI一无所知,故本文不含相关内容。文章英语版为使用豆包(即梦AI)进行翻译得到文本,我再次进行了人工校正。本文实质上是一个初学者的想到哪写到哪的心得与一些无关的闲话牢骚,同样面向已经初步了解但还不太熟悉AIGC相关的朋友,对浸淫此道已久的朋友可能是满篇废话,如果有错误欢迎大家批评纠正。关于底模1. illustrious类底模和noobai类底模相比,一般来说noobai类底模自身风格会稍弱些,对画师风格lora的还原性会更强一些。但同样的,noobai类底模会需要更多质量词达到illustrious类的一些所谓“高质量”画面风格。2. 注意底模作者对训练素材、采样方式、调度方式、cfg scale的描述。一般来说,noobai基底的因为含danbooru数据更多,多态性会更强;加入了真实风格素材的会相对欠稳定些;一些采用dpmpp 2m sde gpu + sgm uniform的微调底模相对稳定性会欠佳,同时拥有更强的风格、动态、色彩表现;cfg scale的大小会影响画面各个元素的强度,如果欠拟合或者画面发灰了可以适量调高至6-9,某些时刻偏高cfg可以改善底模不稳定的情况。3. tensor上NoobAI类型的lora与Illustrious的底模联用效果一般不错,但是可能出现VAE的异常,互换后也同样,且NoobAI类型底模可能会出现噪声图完全不能拟合的新问题,这些都可以开启A1111解决。4. 不要迷信数据集越大越好,这意味着更多的噪声和相对不稳定的结果。5.底模存在自身的刻板印象,出现频次高的特征会挤占你的prompt所描述的非常规特征。例如你生成一副双人、男女、年龄差的CP互动图,底模的刻板印象会让“活泼的年下女生与严肃的年上男生”“没头脑与不高兴”这样刻板的模式化特征充斥你每一次重新生成的图片,无论你怎么指定二人分别的动作与表情。6.ILXL/NAIXL底模存在相当丰富的画师名tag、角色tag,此点在后面的片段会说明。底模特征相对lora特征更稳定,生成多人时更不易出现特征错乱,混合多种风格时也不易崩溃。但双刃剑的一点,底模特征会比lora的刻板印象更根深蒂固,调整细节会更艰难。(底模隐性权重这一块)7.对于刚接触AIGC且用上illustrious的朋友,推荐底模依旧是泛用性很好的WAI-ILLUSTRIOUS V14。8.特别的,如果非特别注明半写实/junk系底模在无特别质量词、风格词、媒介词的情况下偏半写实,那么这个底模可能有些特殊的表现力。9.ILXL/NAIXL中,质量词不会带来Pony XL那样巨大的画面提升。换言之,曾经绝对禁忌的负面prompt,在ILXL/NAIXL里是可以选择的风格化质量词,且越新的底模这种能力越明显。另外Pony XL专用的score_x系列质量词在绝大多数ILXL/NAIXL里完全无效,还有可能被理解成画面中的文字,不建议使用。(不过有传说WAI ILLUSTRIOUS系列里score_x很有提升,笔者没有测试过)10.有经验的创作者都知道SDXL这个基础就卡在这上不去下不来,但还是喜欢SDXL的效果。无论你是初学者还是老手,享受使用这个特别的工具即可。关于LoRA等1. NAIXL的风格lora用在ILXL底模上可能效果会打折扣,可以靠这个效果来进行精细的风格强度调节,且过拟合风险更低。2. 少即是多,lora数量更少,更不容易被lora的刻板印象夺舍自己本来想要的画面效果。每个lora的权重同理。3. 质量提升类的lora(增加细节的、增强背景的、增强光感的等等)要慎用,其一是可能会增加图像的“癌味”、“油腻”程度,其二依然是存在刻板印象覆盖掉你的prompt的风险(尤其在prompt存在复杂结构与相对少见概念时),其三是许多用量大的质量提升模型会提供非常、非常程式化的元素。4. 比起依赖lora的效果,可以更多尝试不同prompt,对自己对于画面元素的把控能力也有提升。5. lora权重宜中不宜高(0.8即为通用解),尤其是自己训练的人物lora,往往为了追求还原而过多过少存在过度训练。如果发现有些lora效果不明显,可考虑优先降低其它lora权重(其次再考虑提高该prompt权重)。6. 混合画风lora请根据自己喜好调配权重,一般来说,建议0.3~0.6。7. 对于同画师的画风模型,一般来说,LyCORIS优于locon优于lora。8. Pony Diffusion XL的embbeding对ILXL/NAIXL几乎没用。9. 比起调整lora权重以控制画面,调整prompt里单独词组的权重会更容易调整些。10. 生成人物图像时善用openpose和depth这两种控制网络,权重0.8即可。11.Pony Diffusion XL的lora无法在ILXL/NAIXL中很好地保持一致性,人物lora最为明显。风格lora大致同理。12.修手lora很难在所有情况下都稳定提供良好的手部结构,如果修手lora都不太有用,说明缺乏有效的正负提示词/存在模型训练问题/权重或生成采样步数或高清采样步数过重导致过拟合或过度采样。13.角色特征不稳定可以尝试从两个部分增强特征,第一是多种同一角色lora降低权重后联合使用,第二种是使用转义符角色名来调用底模中该角色数据(假设存在,同样的该方式适用于画师画风)。后文会详细说明转义符的使用,感谢耐心阅读14.接上条,需要特别说明的是,底模中的角色与lora角色一定存在细节差异,同样的底模角色想要变更基础设定会更加困难,慎重使用。15.双人生成的情况中,底模角色的稳定性和双人特征混合的概率远低于lora角色。后文会介绍一种针对特征混杂相对有效的prompt格式。16.negative prompt功能的lora和embedding等模型对illustrious收效甚微。17.自然语言训练的lora对于自然语言prompt,有强化SDXL系列底模“理解”自然语言的作用。常用的一个就是比较多见的薄涂风格lora(搜索usnr即可)。18.DMD2是减少采样步数的lora,使用时权重放在0.8即可,推荐步数4~8,推荐cfg scale 1~3,一般不需要更改采样器调度器等其他参数。关于prompt等关于怎么自己搭建prompt已经有很多站内外文章指导,本文不会详细提及相关内容,仅限一些自己探索出的概念与小细节1.令人沮丧的事实,提示词无论怎么复杂、嵌套、转义、精细权重调整,实际出图效果依然看运气。并且可能出现一通操作后效果还不如简单提示词加上好的风格lora的情况。2.提示词贵精不贵多,不要看到什么词都往正向负向内填充,有时会带来负强化。同样的,这样泥沙俱下的提示词会影响你真正表意的提示词的准确度。3.我个人将正面提示词简单分为几类(主体词,质量词,风格词,结构词,特殊构造,每一类下还可细分)加上负面词一类,并非严格分类和清晰分界,只是称呼方便,以下围绕不同种类提示词说明prompt结构。4.主体词人物词:包含人名(人物触发词),人数,外表,情绪,衣着,动作(肢体&手势),交互,干湿,生理状态,多人结构等等物体词:包含道具,伴生物,特效等等场景词:包含场景主题(抽象/非抽象),场景物体,时间点,光影,明度,饱和度,色彩主题等等5.质量词等级词:图像的总体评估分级,对ILXL/NAIXL目前在正向仅用masterpiece画质词:画质分级(某些时候也是画面风格/画面细节程度分级),适当使用可提升多方面细节表现,例如amazing quality, absurdres, high-res, 4K质量概念:诸如皮肤材质、物品材质、背景质感、效果质感&风格等,例如textured skin, background details, transparent, translucent, volumetric lighting, detailed shading, blurred reflection, photo realistic6.风格词介质词:画面展示在什么样的介质上,影响画面主体的范围和一些质感,需要使用转义符内书写medium避免歧义,例如screen \(medium\),mirror \(medium\)媒体词:画面的画种/媒体类型,例如impasto, oil painting, digital art, gouache, watercolor, photo氛围词:画面的情绪/氛围感(比较玄学的一类词汇),效果其实是不确定的(部分与角色情绪交叉)。但可能有效。例如tranquil, serene atmosphere, gloomy, miserable, peaceful, nostalgic画师风格:基于ILXL/NAIXL的底模都拥有大量基于danbooru网站数据的画师数据,使用danbooru记录的画师名,在前方加上 artist: 即可引用对应画师老师的风格,这种风格不仅是改变人物,对几乎所有画面元素和布局都会造成影响。一般来说,没有接近100~200张绘图的画师名效果不明显。画师风格可以进行组合,请自由调整权重。一般来说,多个画师名联用后人物特征会趋于平均,此时你加载的风格lora就可以成为焦点。7.结构词精度词:决定元素在画面中显示精细或模糊,在需要调整的实在元素前加上 blurry, detailed 等词汇,与画质词部分交叉。例如blurry background, blurry acting body, detailed face, perfect eyes视角词:决定画面/主体的展示角度,注意左右的概念基本无法控制,前后视角只对画面主体生效。例如from behind, from side, frontal view, dutch angle, dynamic angle, upside down, landscape, panorama透视词:决定画面主体透视、透视形变、景深,也包含部分视觉效果,例如foreshortening, perspective, depth of field, intense shot, motion blur, fisheye方位词:决定元素在画面中的排布,因为底模训练中标签已经是模糊对应,效果极不稳定。例如around, at side, beneath, at above, side by side8.特殊构造转义符:形如 xxx \(yyy\)的构造,用于对前方词组的消歧义/精确索引/元素范畴转换。后方的转义词汇可以是任何语义范畴(物体,作品名,概念,嵌套结构等等等等),没有什么固定格式,请自由探索。例如你希望star这个元素不是出现在天空背景里而是一种五角星形状的物体/效果,可以将star改写为 star \(symbol\)。引用词:形如source_xxx \(yyy\)的构造,其中xxx是yyy的范畴,可以是游戏/动画/系列等各种范畴,yyy是该作品具体的名称。该构造用于强化该作品数据的相关性,一般是为了增强还原度。也可以用作风格迁移。底模角色:形如 character name \(series name\)的构造,用于直接从底模数据中调用对应角色形象,稳定性胜于lora角色,但相对的,因底模刻板印象的存在,调整难度高于lora角色,且通常只有热门角色才能拥有多套可替换服装。有些时候可以底模角色与lora角色联用后通过精细调整权重来微调角色的外形,以期更高还原度。底模角色因为其天生偏心(仅限数据量高的热门角色表现良好,低数据角色几乎没法用)且调整使用困难,其实在AIGC中就业率非常低下。(除了部分中登老登不会有人用)角色区:形如1character<character details>的构造,用于多人生成中减少角色特征的随机交换,目前笔者测试量也不算许多,这样的构造对lora角色有一定帮助,但不能完全消弭特征交换。据说对底模角色效果更佳,几乎不会出现特征交换。模型调用:形如<lora:xxx:权重数值>的构造,似乎在tensor在线使用中无效。拼贴/平行结构:形如{xxx|yyy|zzz}的花括号+分隔符的构造,用于同范畴内不同元素的拼接/并置,因为底模刻板印象(各个元素在训练集内出现频次不同导致的隐性权重不同)的存在,效果不稳定。权重调整:存在两种方式调整prompt权重。第一种通过在词组后接入权重数值进行调整(范围0.0~1.4,A1111解析下为0.0~2.0,不建议调整至负数范围,极易图像崩溃);第二种通过方圆括号调整,(xxx)形式的圆括号,每嵌套一层权重乘以1.1,[xxx]形式的方括号,每嵌套一层权重除以1.1。(笔者没有确认这个说法的准确性)。另外,括号嵌套不建议超过2~3层,容易权重溢出导致图片崩溃。否定词:在正面提示词内的负面提示词,在元素前方加no以排除这种元素,例如no human。否定词部分稳定部分不稳定,部分完全无效,反而会强化你想排除的元素。语法词:例如BREAK, AND, OR等逻辑语言,效果偏玄学。自然语言:鉴于SDXL基础的模型对自然语言堪比金鱼的理解能力,不建议全篇提示词采用自然语言书写。但涉及到一些复杂结构且无法使用标签化语言描述清楚时,自然语言还是有一些很有限的作用。9.负面词负面词一般少有完全自己书写,以挪用他人的负面词为主,但了解其构造依然有必要。排除范畴:在基础上排除各种不需要的元素/特征,包括低质排除(worst quality, blurry face等)、风格排除(为了使需求的风格不被其他风格污染,如排除涂鸦、单色画)、物种排除(anthro, furry, human等)、性征排除(放入不需要的二元性别与非二元性别,及对应性征)、怪诞排除(令人不快不适的非常规元素)、突变排除(一般用于排除非正常人体特征)、非图像排除(水印、文字、对话框、链接、签名等)、错误排除(与突变排除部分交叉,也包括图像中截断、渲染错误、花屏、毛刺、修改痕迹等)等等。对于现在的ILXL/NAIXL,不再需要Pony XL那样叠杀人书一样叠排除范畴,仅使用正面提示词已经可以效果不错。许多原本的负面词常客也是可选的正面风格。调整范畴:排除范畴外的负面词,一般用于几种情况:1.避免底模与lora的高频词污染自己想要的效果;2.用于精确化某些特征,比如一个拥有多套可替换服饰的角色lora,生成其中某种时,可以将另一种服饰加入负面词内,再例如通过加入某些颜色主题来调整画面色相色温;3.用于画面风格的调配,比如通过在负面词内加入“ai-generated, ai-assisted, photorealistic, oily, shiny, glossy, reflection, lighting, smooth, textured, porcelain, skin details”来减少图像的“癌味儿”(算法生成感、油腻感);4.当lora不好用时,补救的措施之一。