目前互联网上好像还没有一篇详细关于人物lora训练的教学,毕竟ai绘画还处在起步阶段,很多内容对于萌新宝宝来说即使看了教学也很难上手,繁琐的参数细节不经过实践无法理解从而导致无从下手。本人经过大量的学习以及爆肝实验,总结出了如下训练人物lora时的打标规律,仅供参考。总的来说,只有熟练掌握了出图技巧才能掌握tag打标,掌握了tag打标才会训练lora,所以学会熟练地运用文生图功能非常重要,这也是通过人机交互实现AI出图的根本技巧。
一个完善的人物lora需要注意以下三个方面:
第一点,首先你需要对所有的图片素材进行预处理,包括去重复、裁剪和抠图。两张完全一样的重复图片会导致迅速过拟合,并且后期无论用什么提示词都无法改变。图片素材的比例没有必要非得1024*1024,训练时打开bucket功能会省事很多,多一个步骤也会花费大量时间。虽然很麻烦,但是我还是建议运用一键抠图工具将人物抠出来并添加白色背景(切记不能使用透明背景的PNG图片,AI无法识别透明的内容),毕竟素材本身就决定了lora的质量,越干净、质量越高的图片,训练出的效果越好。纯白背景的lora在出图时只需要在负面提示词加上(simple background:0.0)就能随意替换背景了,效果非常好。在当下,PS仍然是一款强大的工具,我个人的工作流是先一键抠图,然后拉到PS中一张一张挨个抠出细节。如果你不会抠图也没有关系,只要保证将图片中的细节全部都描述出来也可以,包括出现的物体,背景等等。注意,我说的是全部,越详细的打标理论上来说lora越“听话”,泛化性也更好,当然这是在保证标注全部正确的前提下。还有一种添加背景的做法是,假如你希望人物出现在某一特定背景,可以把那个背景的图片也放入训练集中一并训练,这样就可以做出该人物在某张特定背景里的图片了,无需后期。(使用layer diffusion就可以切换背景了,不需要这一操作,而且这样做会导致人物模糊,非常不推荐。)
第二点,你需要理解打标的原理,你所标注的tag或者本就存在的tag是在将来出图时你希望可以替换的内容,而要删去的tag就是你希望ai通过触发词来识别出的内容。需要特别注意的是,具有明显错误的标签也需要删去。比如一个动漫女孩的lora会被识别为一个男孩 1boy 或多个女孩 mutiple girls ,这时就需要删去它们。如果你不知道某个标签的具体意义或者是否正确,请先去Danbooru标签列表(https://danbooru.donmai.us/tags)和本地Tag表格查询该标签的实际作用或者可以用此标签出一张图试一下。对于不了解的标签建议实验只删除具有明显错误的标签即可。切记,如果出现具有重复含义的元素,则保留最精准的描述即最小子集。比如角色的手套是长袖露指手套,则需要删除gloves,保留elbow gloves和fingerless gloves。
第三点,手动打标,这一点非常重要。直到现在我还从未训练过任何一个flux的lora,也没用过大模型图生文推理的顶级的批量自动打标工具,比如joytag和青龙大佬的脚本等。但是打标签的原理应该都是一样的,就是不厌其烦的对标签进行增改,直至标签对每张图片的描述几乎全部都完全正确为止。如果有错误或者AI无法理解的标签,就会在训练时的Tensorboard图像中表现出突然飙升的loss值。由于每个人对ai的出图的理解深浅不一,甚至有些人直接在WD1.4自动打标完成以后不做任何修改直接上炉开炼,这就导致即使是同一人物的同一素材,每个人所训练出来的lora效果也不一样。所以接下来是本文重点中的重点,我个人对每张图片详细打标的顺序↓↓↓:
0.按之前所说,删除绝对错误的标签和具有角色基本特征的标签
包括眼睛颜色,头发颜色,头发类型等。需要特别注意的是,如果角色具有其他形态,也就是这些特征将来可被替换,那么对这些基本特征的描述就要保留标注,包括原本形态和特殊形态;
1.视角
例如:from side,侧视角
from behind,后视角
dutch angle,画面角度倾斜,包括非水平或非垂直视角
from below,从下方
from above,从上方
sideways glance,侧瞥,斜视,侧脸的姿势下看向观众
upside down,上下颠倒
构图是一张图片的最基本逻辑,包括摄像机视角和画面整体的角度
2.几等分的身体/部位
例如:close-up,特写镜头,放大镜头
portrait,肖像
headshot portrait,头部特写
upper body,上半身(直到肚脐下方,不包括臀部)
cowboy shot,7等分身体,包括腿的一部分
full-length shot,全身像
eyes focus,眼睛特写
mouth focus,嘴巴特写
face focus,面部特写
ass focus,臀部特写
foot focus,脚部特写
profile,(侧面)头像或证件照,只到肩膀
建议去danbooru搜索上述标签以便理解各个部分的范围
不用每一次都标注上半身与头部描写,最主要的还是把特写镜头描述出来
3.裁剪与否
例如:out of frame,物体有一半或一部分在画框以外
head out of frame,头部在画框以外,多指只有颈部以下描写的
crooped,裁剪过的图片,对于没有头部的特写镜头一定要加,对有涂抹过或者有缺失的图片非常有用
cropped torso,只画出上半身或头部部分,图片中没有出现下半身或涂抹掉的
对某些连出场镜头都没多少的冷门角色来说,裁剪标注十分重要
对于各个图片中显示不完全的部分,包括头发和服装等,需要按照实际描述,比如长头发的角色在某一场景中由于视角或头发被裁剪掉,而且被AI识别为短发,则需要保留短发描述而不能用长发。或者某一装扮只有部分能见导致变为另外的物体,也需要描述为另外的物体。比如过膝长筒靴,在大部分上半身场景里都会被识别为过膝袜(thighhighs),因为其靴子的特征并未表露,所以就需要保留过膝袜的描述。
4.画面亮度与色调
例如:night,dark,画面很暗或夜晚都要加
twilight,黄昏,暖色调
purple theme,紫色调或紫光的图片
blue theme,蓝色调蓝光的图片
silhouette,黑白剪影,类似Bad Apple!!和皮影戏中的效果
其实AI是通过一天中不同时段的关键词来控制不同色调的,比如正常光线可以用 noon或者day 这非常神奇。利用这一特性,甚至可以做到控制人物在不同光线不同画风下的精细控制。
5.面部表情
例如:expressionless,面无表情的
parted lips,嘴唇微张
open mouth,张开嘴
frown,皱眉
furrow brow,内八眉毛
laughing,大笑
shouting,大叫
clenched teeth,咬紧牙关
grin,露齿而笑
surprised,惊讶
blush,脸红
shaded face,阴影脸
即使完全不标注也没事,AI对表情的识别似乎不需要额外标注
6.动作姿势
例如:sitting,坐姿
lying,躺着
on back,平躺
on side,侧卧
on stomach,趴着
leaning,靠着,身体倾斜
leaning forward,身体前倾
leaning back,身体后仰
against,靠着
against wall,靠着墙
crossed legs,二郎腿
crossed arms,交叉双臂,环抱双臂
hand up,抬起手
hand on face,手放在脸上
finger to mouth,手指放在嘴巴上
adjusting hair,撩头发
leg up,抬起腿
hand on hip,手叉腰
open hand,五指张开
floating hair,在风中凌乱的头发,飘散的头发
outstretched arm,伸出手臂
outstretched hand,伸出手
spread arms,手臂平举或微微举起
一些比较奇怪的姿势需要描述尽可能相近的描述,否则会出怪图
7.肢体缺失(并非在画面外)
例如:missing hand,没画出或缺失手部
missing finger,没画出或缺失手指
bad hand,错误的手部
missing leg,没画出或缺失腿部
missing lmibs,没画出或缺失肢体躯干等
no eyes,没画出或缺失眼睛
no mouth,没画出或缺失嘴巴
cropped leg,因裁剪而没有画出的腿部
faceless,没画出脸的,无脸的
还是那句话,素材可以不进行处理,但是标注一定要打,对于没有多少镜头的冷门角色来说,缺失和裁剪描述非常重要!
8.眼睛、头发颜色在不同色调、亮度下需要按照实际颜色标注,比如正常光照下是黄色,绿色光线下即使人眼看到是黄色也要按照实际描述为绿色。例如:原本是蓝色眼睛 blue eyes,在紫色调 purple 时就需要标注真实(而非错觉)的 purple eyes。
9.模糊、缺失细节的眼睛最好要加以 no pupils ,模糊的画面则需要添加 blur (disambiguation)。对话框可以抹去文字内容和边框,然后加上 blank speech bubble。强调某一物体漫画的集中线要加上 emphasis line,强调动作或速度的漫画线要加 motion line,speed line , 动态模糊要加 motion blur。
10.人物服装和其他装饰或物品
所有描述均遵循只保留具有最小子集的最精准描述的原则,除非实在没有其他更接近的描述,毕竟目前AI可以绘画的范围也是有限的。通过标签网站和表格不断细化对服装的精确描述。例如,一个角色的项圈领带是系带式的,就需要添加ribbon choker删除choker。这一过程需要一定的英文基础,因为就连AI推理模型都不一定准确,所以需要耐心的优化。诚然不做任何处理也是可以的,大致的描述对于一般的lora来说也足够使用了,不断抽卡也可以达到类似效果,当然你也希望你的waifu可以完美复活,不是吗?
11.(可选)添加触发词
这一步骤就是在所有素材的tag中的第一位加入某一特定词组,比如erika换成3r1k4这种英文和数字的混合,这样做的好处是可以减少人物出图时的画面混淆,精确调用你的lora数据而非大模型中的已有数据。
*绝大多数情况下,人物lora不需要做正则化。除非当你需要二转三或者其他画风时,做正则化处理效果会非常好。步骤和风格或概念的正则化一样,就是新建一个正则化文件夹,加入该人物(或者不是该人物也可以)在不同风格下的图片作为正则化的修正处理,这样训练出来的lora不会受到原本画风的限制,泛化性更高。
关于训练脚本的参数,少量数据集(8~80)的图片重复数应该是5~10最好,而对于成百上千张的图片素材,可以设置为3甚至2或1。一般情况下,图片数乘以重复数的积的总和应该在200~400之间。轮次数乘以重复数上限应该接近120(一般达不到这么多)。也就是说,假如用r表示图片重复次数,c表示素材图片数量,e表示轮次数,当batch size=2时,r*e=120几乎就是一个上限了,并且没有必要这么多。r的最佳范围为 200/c < r < 400/c 。16g显存的显卡batch size设置为2~4最好,但也不是每次都要设置为4,在训练少量的素材时可以尝试设为2。其他参数:采样器我默认用 prodigy ,效率高而且效果好。
总结:AI可以自动识别的东西其实很少,你需要手动标注清楚,否则可能很难出现可控的结果。当你的标签足够正确时,你的LoRa就会获得高质量。
好了以上就是关于一个没有N卡只能在线(已经换显卡了)一个业余炼丹的玩家的全部心血了,祝你做出心中最完美的LoRa~