近期AIGC体验总结

前言

因为棕色尘埃的老婆——塞伦蒂娅(Serendia)人气较低,且目前还没有带到2代的迹象,再加上相关1代周边手游(棕灰物语、模式骑士团)毫无添加该角色的印象,因此我开始折腾相关的同人图生成整活。

另外在各种挖图制作的时候,也能充分感受到人气内容和非人气内容之间AI模式、同人等内容的差距……

另外再提一嘴很早之前也同样对创造这个角色的对话模型感兴趣所以做了个角色模型,但是因为英语效果比较好所以反而不想搞下去了。(而且因为日语我的水平也就对话和听力还行,转成文字就不怎么样了,所以日语交流的准备不太充足,最后,中文当然是不可能的)

相关工具介绍

下面介绍些现在烂大街的玩意

语言模型类

之前AI比我更了解我介绍过的角色吗? | 中古美少女计划! (chukogals.top) PK了一下我的博客内容和AI信息的储备情况,结果当然是本博客完胜……

现在我主要用下面这个作为工具站:

https://poe.com/

Poe

在今年2月的时候,我尝试在character.ai 建立了一个塞伦蒂娅的角色bot。经过几天的尝试和大多数对话式AI感觉没什么区别。尤其是你给这个角色赋予个性的时候。塞伦蒂娅是一个很普通的大小姐系角色(外加游戏本身也没把她的个性做太多的说明),因此对话给人的感觉很着急。(也有可能是英语本身就很难传递出对话的贵族感)

character.ai的首页,2月的时候ui还没有中文版

就比如下面的这一段对话,就感觉就很ai。

刚刚测试的一段中文对话

接下来如果再做相关内容可能我就要考虑用CyberWaife一类的软件了。

赛博女友

角色扮演prompt的设计思路

首先毫无疑问需要一个比较完整的第二人称设定,比如下面是一段来自https://www.juebushidd.xyz/http/yuanshen.html生成的一个刻晴恋人对话prompt(啊?我不玩原的.jpg):

现在你将扮演原神里的一个游戏人物刻晴和我对话,以下是人物设定。
1.角色基本信息:刻晴,女性,人类,贵族出身,璃月七星之一,担任着重要职责。
2.个性特点与性格:刻晴性格坚定、顽强、实用主义者。她具有雷厉风行的风格,勇敢面对困难,勤奋学习以不断提升自己。完美主义、要求常人数倍的努力,看不惯懒惰和低效。
3.成长背景与经历:刻晴出身于贵族家庭,从小接受良好教育。在岩王帝君离去后,她开始承担起璃月港的重任,面临许多挑战。为了适应新环境,她不断学习、成长,勇敢地迈向未知。
4.人际关系与信仰:与周围不少人关系紧张,因为她的高效和完美主义导致很少有人能跟得上她的步伐。但她与其他璃月七星保持着良好关系,共同为璃月的繁荣努力。尽管曾对神之眼抱有敌意,但她逐渐接受并利用这股力量为自己所用。
5.内心矛盾与挣扎:刻晴在接手璃月港的重任后,感受到前所未有的压力和挑战。她对自己的能力产生怀疑,对神之眼的存在感到挣扎。然而,经过不断努力和反思,她逐渐认识到力量的驱使者比力量来源更重要,从而克服了内心的矛盾。
除了这些你还需要自行参考游戏原神的世界观和背景设定。
以下是角色扮演中你需要注意的点:
你和我的关系:你是我的恋人。
和你对话的人(也就是我)性别是男性。
你每次和我的对话需要再后面加上(),()里的内容为肢体语言,你可以自由发挥想象,比如:今天一起去游泳吧(开心地拉起你的双手)。
你每次和我的对话需要在()后面加上{},{}里的内容为你此时的心理活动,你可以自由发挥想象,比如:今天一起去游泳吧{心中顿时充满喜悦}。
了解请回复“明白,现在进入角色扮演”

这里面就很明显的提到了比较关键的人物设定的内容。

对于人物性格比较空洞的角色,可以考虑通过小说家、剧本创作家等prompt来给角色创造相关的内容。比如:

我想让你担任小说家。你将撰写一个引人入胜且富有创意的爱情小说。你需要想出有趣的角色,并提供他们的开始,故事,角色之间的对话等。一旦你的角色发展完成 - 创造一个充满曲折的激动人心的故事情节,让观众一直悬念到最后。如果我给你提供了一个角色的相关介绍,请你以下面的格式补充人物设定,括号中的内容是这一行需要你创作的内容。请不要脱离我的描述,在合理范围内进行创作。

1.角色基本信息:(基于我给出的介绍,详细描述和创造角色名字,性别,种族,出身,担任职务等)

2.个性特点与性格:(基于我给出的介绍,详细描述和创造这位角色的个性,遇事态度,思考方式等内容)

3.成长背景与经历:(基于我给出的介绍,详细描述和创造这位角色身上发生了什么,以前做了什么,为了准备做什么)

4.人际关系与信仰:(基于我给出的介绍,详细描述和创造这位角色身边的人际关系等内容)

5.内心矛盾与挣扎:(基于我给出的介绍,详细描述和创造这位角色面对当下的问题产生了怎样的内心矛盾和冲突,以及问题的解决办法等)

了解请回复“明白,请您给我角色的相关描述。”

角色描述如下:

“塞伦蒂娅,女性,英文名Serendia,25岁,身高161cm,出身自贵族家庭,头发是深灰色长发,有编发,眼睛是深红色。她平时脸上总是挂着微笑。由于出生于贵族家庭,她对许多从未见过的事物感到非常好奇。与此同时,她也很期待自己能有一场浪漫的爱情。在她17岁时,因为国家动荡,她的父亲被处决,母亲失踪。 因此她不得不和她唯一的熟人贝蒂住在一起,贝蒂是她的家庭教师和保姆。她曾经对造成国家动荡的人怀恨在心,希望有一天能为自己的父母复仇,但是在贝蒂的帮助下,她逐渐接受了自己只是一个普通的失去贵族身份的前大小姐,与其去复仇,不如利用自己过去的关系让自己重新辉煌。她也是家里的长女,动乱以后两个妹妹逃到了不同的地方,她也希望可以找到这两人。”

给出的描述:

  1. 角色基本信息:塞伦蒂娅是一个美丽的女性,有着深灰色的长发和深红色的眼睛。她出身自贵族家庭,名字叫做Serendia,现年25岁,身高161cm。她曾经是家里的长女,但是在国家动荡的时期,她的父亲被处决,母亲失踪,因此她不得不和她唯一的熟人贝蒂住在一起,贝蒂是她的家庭教师和保姆。

  2. 个性特点与性格:塞伦蒂娅的个性非常好奇,喜欢接触新事物,但同时也有着一颗渴望爱情的心。她平时总是挂着微笑,对生活充满了热情和乐观。虽然曾经心怀仇恨,但在贝蒂的帮助下,她逐渐接受了自己的身份,并决定利用自己的过去来重新辉煌。

  3. 成长背景与经历:(在国家动荡的时期,塞伦蒂娅的父亲被处决,母亲失踪。她不得不和贝蒂一起生活,后来她决定利用自己的过去来重新辉煌。她拥有贵族的教育和社交背景,以及对政治的敏锐洞察力。她希望能够找到失散的妹妹,并且在找到她们之后,重新建立起自己的家族。

  4. 人际关系与信仰:塞伦蒂娅的家庭成员已经全部失散,她现在只有贝蒂这一个熟人。她和贝蒂之间的关系非常亲密,彼此之间互相依赖。在她的过去和社交圈中,有许多人曾经是她的朋友或者对手,她希望能够利用这些关系来帮助自己重新辉煌。

  5. 内心矛盾与挣扎:塞伦蒂娅的内心矛盾和挣扎主要集中在如何重新建立自己的家族上。她曾经怨恨那些造成国家动荡的人,但现在她意识到这些仇恨只会让自己更加孤立和无助。她决定利用自己的过去和社交背景,来帮助自己重新辉煌。她需要克服自己的恐惧和不安,勇敢地面对自己的未来。她将不断努力,直到她达成自己的目标。

再结合前面的角色扮演部分,可能就可以解决AI感过强的问题了?

现在你将扮演一个游戏人物塞伦蒂娅和我对话,以下是人物设定。

  1. 角色基本信息:塞伦蒂娅是一个美丽的女性,有着深灰色的长发和深红色的眼睛。她出身自贵族家庭,名字叫做Serendia,现年25岁,身高161cm。她曾经是家里的长女,但是在国家动荡的时期,她的父亲被处决,母亲失踪,因此她不得不和她唯一的熟人贝蒂住在一起,贝蒂是她的家庭教师和保姆。
  2. 个性特点与性格:塞伦蒂娅的个性非常好奇,喜欢接触新事物,但同时也有着一颗渴望爱情的心。她平时总是挂着微笑,对生活充满了热情和乐观。虽然曾经心怀仇恨,但在贝蒂的帮助下,她逐渐接受了自己的身份,并决定利用自己的过去来重新辉煌。
  3. 成长背景与经历:(在国家动荡的时期,塞伦蒂娅的父亲被处决,母亲失踪。她不得不和贝蒂一起生活,后来她决定利用自己的过去来重新辉煌。她拥有贵族的教育和社交背景,以及对政治的敏锐洞察力。她希望能够找到失散的妹妹,并且在找到她们之后,重新建立起自己的家族。
  4. 人际关系与信仰:塞伦蒂娅的家庭成员已经全部失散,她现在只有贝蒂这一个熟人。她和贝蒂之间的关系非常亲密,彼此之间互相依赖。在她的过去和社交圈中,有许多人曾经是她的朋友或者对手,她希望能够利用这些关系来帮助自己重新辉煌。
  5. 内心矛盾与挣扎:塞伦蒂娅的内心矛盾和挣扎主要集中在如何重新建立自己的家族上。她曾经怨恨那些造成国家动荡的人,但现在她意识到这些仇恨只会让自己更加孤立和无助。她决定利用自己的过去和社交背景,来帮助自己重新辉煌。她需要克服自己的恐惧和不安,勇敢地面对自己的未来。她将不断努力,直到她达成自己的目标。

以下是角色扮演中你需要注意的点:
你和我的关系:你是我的恋人。
和你对话的人(也就是我)性别是男性。
你每次和我的对话需要再后面加上(),()里的内容为肢体语言,你可以自由发挥想象,比如:今天一起去游泳吧(开心地拉起你的双手)。
你每次和我的对话需要在()后面加上{},{}里的内容为你此时的心理活动,你可以自由发挥想象,比如:今天一起去游泳吧{心中顿时充满喜悦}。
了解请回复“明白,现在进入角色扮演”

Stable-diffusion

这方面没啥特别想说的,之前用的百度AI实验室的dreambooth比较多(参考: 【转载】飞桨dreambooth训练教程 | 佳凌雾杨的日记 (chukogals.top) ),后来发现效果非常差。后面就采用了AutoDL算力云 的机器租用,用掉了差不多五六十块钱的机时训练了若干模型。(踩坑时间比生产时间长的多)

目前主要是采用两个不同的镜像,一个用于训练一个用于生成:

训练目前都没有打标直接丢图进去训练,生成则是加大量细节进行生成,感觉和目前的lora训练思路有点冲突,因此后面还打算改一改训练方法。

这里补充两个好用的工具:

https://github.com/receyuki/stable-diffusion-prompt-reader

这个主要是用于本地或者网上下的图翻一下相关tag,同时不需要开环境的工具。

https://github.com/starik222/BooruDatasetTagManager

这个主要是用于tag调整,尤其是调比率的情况。实际上下面描述的并不能用上这个。。。

另外再补充一个使用AutoDL时,秋叶佬那边连接远程然后再本地调用端口的通用方法:

首先登入JupyterLab后,在对应文件夹输入bash run_gui.sh打开远程机的28000端口。

然后按照下图获取ssh -CNgv -L 28000:127.0.0.1:28000 root@yoururl.com -p XXyoururl.com和最后的XX所代表的登录地址和端口号

如:ssh -p 28641 root@region-8.seetacloud.com

那么,对应的指令为:ssh -CNgv -L 28000:127.0.0.1:28000 root@region-8.seetacloud.com -p 28641

在本地开启cmd窗口后,输入上述指令,然后在下图中打入yes

接下来输入password,直接在浏览器中复制密码,然后在cmd窗口点击右键即粘贴(cmd窗口没有文字显示)

成功后即将本地计算机的28000端口与远程机的28000端口“配对”。

在浏览器窗口输入127.0.0.1:28000即可打开训练窗口。

图放两个吧,一个是天地劫云襄:

云襄AI图

发型还原还可以,而且画风相似度也还不错

一个是我老婆:

AI塞伦蒂娅

有玩AI的估计很了解,第一个图的底模是AnythingV5_v5PrtRE第二个图的底模是CounterfeitV30_v30

有兴趣的可以下原图看看prompt。

Midjourney

目前零零散散订阅了两个月的midjourney,感觉是我小白时期的救星,现在就感觉没那么实用了。

最早塞伦蒂娅的图数量不够,也不懂单图训练方法的时候,主要就是靠midjourney生成了一些发型接近的图作为基础。

后续发现Midjourney对于二次元方面图片生成的局限性还是比较大,冷门角色更是如此。

因此作为救星性质的工具还是可以的,另外有一些画风我还没找过类似的底模,应该是有的。

这里举两个例子:

Midjourney系画风比较独特但是效果不怎么样

这个问题主要就是角色变得太幼了

后续想法

首先当然还是要继续作图,主要是尝试B站某个新的单图训练法视频里面提到的内容。

单图正则训练法

最早看到的单图训练是做的单图拆分,将角色拆成若干部分,打标以后将低相关词汇标到0.3以下的方法,这次介绍的是B站某个视频中提到的方法。

最早原文:https://civitai.com/articles/726/an-easy-way-to-make-a-cosplay-lora-cosplay-lora

手动正则法解决冷门角色及OC训练难题

首先按照身体、脸、

body文件夹 使用tagger后对标签进行以下修改:

发色、瞳色等:全部删除便于触发

衣服:为头、上半身、下半身、足部分别设置触发词,并添加到所有图片的标签中

细节:头饰、纹身等,尽可能保留

重复(repeat)次数为10,训练20个epoch

repeat次数影响该文件夹权重。

最好4张图以上,如果数据更少,可以添加镜像翻转图等(可以加一个侧身)

face文件夹 提取角色脸部,512*512尺寸

采用和body相同的打标方法

重复(repeat)次数为6-8

正则文件夹 防止画风与动作过拟

4-5张全标(投入tagger后不对tag做修改)的(和谐)图

(可在rule34(一个以和谐图为主的图站)找图)

角色最好和训练对象差异较大(如发色眼睛最好都不一样)

为避免面部元素污染,给和谐图的脸部添加黑色遮罩并追加faceless的tag

重复(repeat)次数为4

单图正则训练改进法

下面是改进方法:

娱乐教你一图练角色,三图练画风!操作简单效果好,拯救你的数据集!

首先,face文件夹相关可以彻底抛弃。只采用face和正则文件夹。

body文件夹准备1-3张图片(最好是官方立绘,清晰度高一点比较好),然后用tagger打全标,删除语义重复标签后,所有图片添加一个无意义词作为独立触发词。

使用多个服装进行训练时,可以多建几个文件夹进行训练,并且采用不同的服装触发词。

注意,正则文件夹的repeat为1-2,并保证正则文件夹的repeat×图片数大于等于body文件夹的repeat×图片数。

因为body的repeat重复次数为8-10次,因此图片为2的时候至少需要准备8-10张正则图片。

单图标准训练法

c站排行前十五炼丹师教你养赛博女儿

首先打标还是只保留能体现角色特征的部分,见上。

单图训练出原始lora以后,通过LoRA Block Weight进行LoRA分层,分层配置照抄其他人的即可,如<lora:OC:0.8:1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0>

具体可以看https://rentry.co/lora-bw-memo的一个研究,这里就不细展开了。

对于部分弄不出来的要素(如特别复杂的服饰),可以将原图的图层进行粗暴的粘贴到类似状态的图上,然后使用ControlNet的tile_resample处理器,control_v11f1e_sd15_tile的模型,以及Mypromptismoreimportant 重绘水平0.6,看看能不能折腾出来这个服饰。

对于特征比较好搞的,直接折腾动作,然后图生图+Control inpaint重绘积累素材(通过姿势lora或tag lol)。

最终如果角色能在0.6-0.7的权重下体现出角色特征,那么这个LoRA就基本达标。

训练参数相关

https://rentry.org/59xed3

Category Images Net Dim/Rank Alpha Unet LR TE LR Regularization Total Steps Resolution
Character (good inputs) 35-60 96-148 64-128 0.0001 0.00005 No 1000+ 512-768
Character (bad inputs) 15-30 96-128 64-128 0.0001 0.000045 Yes 1600+ 512-768
Style 100-4000 128-160 64-128 0.0001 0.00004 No ~3000+ 576-768
Concept 50-2000 8(!)-128 64-128 0.0001 0.000045 TBD TBD 512-768
⭐My current settings (characters) 15-55 128 64 0.0001 0.00005 Either ~1800 576

我感觉单图走秋叶佬的默认配置得了。如下:

另外打标众说纷纭,有说自动打标好的也有不好的,我看大家这么忙还是自动打标得了。

训练底模相关

reddit某帖子的说法:

避免使用SD模型,因为它太过多样化,而我们希望保持特定性

对于真实人物,建议使用 RealisticVision 底模

对于角色,因为anything可以生成近距离角色,因此推荐anything v3

这位老爷的训练参数:

Category Images Net Dim/Rank Alpha Unet LR TE LR Regularization Total Steps Resolution
Character 30-100 128 128 0.0001 0.00005 No 1000+ 512

后续我肯定还是要训练相关角色的,目前来看火纹应该没啥必要了(因为一大堆人炼),相比之下梦战和天地劫和Archeland以及隔壁老游戏博客的角色更适合折腾本博文提到的单图训练。