查看原文
其他

AI绘画-SD三次元人物模型训练(炼丹)教程

Chitsing 觉悟之坡 2023-07-23

欢迎来到觉悟之坡AI绘画教学系列之第33篇。

(三上Yua老师平行世界作品-by Stable diffusion)

三上Yua老师平行世界品-by Stable diffusion

之前发布过2篇动炼丹教程,使用的都是秋叶lora script 训练包。主要训练二次元动漫人物,还是蛮好用的。

但在实际上,我们除了训练二次元人物之外,也常常要训练三次元人物。

比如福利姬老师可以训练自己然后穿上各种美美的衣服来拍照,减少自己的日常工作量。

我们也可以训练模特人物之后,获得自己的AI模特(注意,商用需授权)。

还有的女生,也有用自己照片训练自己的lora,可以让这个电子替身在赛博世界,替自己穿上美美的衣服,去各种地方,还能保留自己最美的年华和最好的样子。

总之,三次元炼丹还是有蛮多应用场景的。

但是,三次元炼丹比二次元炼丹相对要复杂一些(难一些),因为三次元里面的人物,是三维的,比二次元人物多一维,也就代表着机器需要学习更多数据才能学会你的人物特征,也意味着如果有一点没学会或者没学对,都会让你的人物训练功亏一篑(不像,崩图,泛化性差等)。

下面,给大家分享一下我们这边的炼丹经验和步骤吧。

1.下载训练包

(1)下载星空大佬(独立研究员-星空)的lora训练包,大概2.8G

https://pan.baidu.com/s/13bitXRlVRlcZrbo0s_lF0w?pwd=dpmt

下载完解压。记得路径里面不要有中文。

2.安装python3.10版本

(如果你电脑已经有python3.10的其他版本,也可以不用安装。如果非3.10,则要安装一下3.10)

(1)官方下载地址https://www.python.org/downloads/release/python-3108/

(2)下载安装python

记得勾选path再点击install now,后面就是按默认的选项即可。

装好之后,开始菜单打开cmd命令提示符,输入python,可以看到版本号说明安装好了。

3. PowerShell 管理员模式打开 执行Set-ExecutionPolicy Unrestricted

(1)开始菜单输入powershell,用管理员身份运行

(2)输入Set-ExecutionPolicy Unrestricted并回车,如果提示y/n则输入y再回车。没提示就不用管。

4.安装环境依赖

右键单击训练包里面的install.ps1,选择用powershell运行。

等待他安装完毕。如果安装中间报错。则关掉这个install.ps1的黑色小窗重新右键单击install.ps1用powershell运行,以再次执行安装。

安装完成后,他会显示下面菜单。

可以通过数字按键来选择选项,0是第一个选项,1是第二个选项,以此类推。选好按回车确认。

建议按照以下选择来设置:

This machine(本机)

No distributed training(非分布式训练)

No

Yes

Inductor

yes

5.准备训练集(图片素材)

下面就以我们熟悉的三上Yua老师为例,来准备素材吧。

(1)准备好合适的照片集合,建议准备50张以上的照片素材,且分辨率需要是你目标训练分辨率的2倍以上(比如你想训练512x512的,那素材至少1024x1024),方便后续裁剪和加工。不要少于30张。要有不同的角度。不能都是正脸大头照。

注意:

脸部有遮挡的不要(比如麦克风,手指,杂物等),

背景太复杂的不要(比如广告板,上面一堆字,或者夜市背景太乱)

分辨率太低的不要(目标分辨率2倍以下的不要,方便裁切),

光影比较特殊的不要(比如暗光,背光等)。

不像本人特征的不要(比如大部分训练集都是长发,那么短发显脸大的不要)

化妆太浓重的,美颜太严重的不要。

(2)把图像裁剪成合适大小。

训练真人建议至少裁剪成512*768,如果显存够大,最好裁剪成1024像素以上。(图像越大,训练速度越慢,显存占用越高)

三种裁剪方法,从快而不精确到慢而精确的方法依次是:

a)用webui的图像预处理(preprocesser)自动裁剪(见后面打标部分)。

b)用https://www.birme.net/之类的图像批处理软件裁剪。

c)用photoshop,美图秀秀之类的软件手动裁剪图像。

6.Tag打标和tag整理

(1)在stable diffusion webui的train(训练)-preprocess images(图片预处理)下面,输入你裁剪后的图片地址和输出结果地址。

下面输入图片尺寸(或者你想裁剪成的图片尺寸。上面说的裁剪图片最懒最快的方法就是这里)。

接着选择split和use deepbooru for caption。

再点击preprocess开始对图片进行处理。

预处理完,你会发现目标文件夹里面每个图片旁边出现了一个txt文件,打开一看,里面是每张图片的tag(标签)

(2)整理每个图片的标签,每个图片对应的标签第一句加上你要训练的trigger word(触发词),比如我要叫做sanshangyua,就打开每一个tag文件(txt)文件,在最前面加入sanshangyua这个关键词。

这一步可以使用BooruDatasetTagManager 之类的tag管理工具批量处理提升效率。(https://github.com/starik222/BooruDatasetTagManager/releases

部分专属人物特征需要从tag里面删除。

部分tag里面没体现的重要场景可以手工补充tag。也可以用类似tagger之类的工具再跑一次tag来优化。

7.设置训练文件夹

训练包里面新建一个train文件夹,里面放上你要训练的trigger word建一个文件夹。比如我就建一个sanshangyua文件夹,下面再建一个10_sanshangyua文件夹,里面放入刚刚处理完的图片文件和tag文件。

8.设置训练参数并开始训练。

(1)右键点击并用powershell运行训练包里面的run.ps1文件

(2)根据运行结果把提示的地址放浏览器地址栏打开

(2)选择训练基础模型,建议使用sd1.5或者chilloutmix系列模型。

(3)设置训练集地址和输出地址以及训练的lora名字

(4)打开训练参数(training paramenters)页面设置训练参数,没有标注的参数新手请按默认值。老手可以调着玩。

(5)训练参数-高级设置,use 8bit adam的勾记得去掉。其他的基本不用动。然后点击最下面的开始训练。

(注意,我这768x1152的分辨率在执行的时候报错了,显示说  assert max(resolution) <= max_bucket_reso,然后我把Enable buckets的勾去掉了就能正常运行。大家如果也报错分辨率相关问题,建议使用512*512或者512*768的经典分辨率,相对不容易出错。)

(6)等待训练结束

训练完成,接着可以去output文件夹找到相关的文件,sanshangyua-xxxx.safetensors就是我们的训练成果。

我分辨率比较大,训练了20轮,所以时间比较长,花了五个多小时。

大家如果图片分辨率小一些比如512x512,20-30张图片,20轮,大概1小时左右。如果显卡更好速度会更快。

9.训练测试

(1)把output文件夹中生成的几个safetensors文件,放到stable-diffusion-webui-old\extensions\sd-webui-additional-networks\models\lora文件夹里面。(注意,需要提前下载安装sd-webui-additional-networks插件。)

(2)设置测试prompt参数

测试prompt这里有3个注意点,

a)基础模型要使用你的训练模型,比如你用的sd1.5或chilloutmix系列,那么你测试画图时要用的基础模型最后也用sd1.5或者chilloutmix系列基础模型。

b)记得在prompt区域加上你的trigger word触发词,比如我的是sanshangyua。Prompt区域还要加一个人物本来没有的特征,比如白发。以便测试泛用性。

c)本身因为我训练集的图片是1:1.5的,因此出图比例我也写1:1.5的512x768

(泛用性指的是,你训练的lora模型能否和其他模型很好的结合和拓展,比如你用chilloutmix训练的,那么用ralistic version模型能否跑出好图。比如换衣服是否自然顺畅,比如是否能自然顺畅出全身照等(前提是你没有训练全身照)。)

(3)设置xyz参数

a) additional networks随便选一个lora,激活additional networks插件。

b)设置xyz参数

x轴设置为 addnet model 1,然后点击小黄笔记本,自动引入所有lora文件名。

Y轴设置为 addnet weight1,然后输入0.6-1.

设置xy让系统自动用不同的lora分别以0.6-1的权重跑prompt指令。

c)等待xyz出结果

10.对比结果,筛选表现好的lora进一步测试或回炉重造

(1)通过xyz对比图,看哪一个训练结果表现最好,最像的同时泛化性最好。

如果没有则回去调整训练参数重新训练。如果调整训练参数没用的话大概率是训练集问题,重新收集整理裁剪训练集,并优化tag。

(2)如果有表现比较好的lora,则复制出来,放到stable-diffusion-webui/models/lora文件夹下面。随机跑几张图再测试一下,没问题就修改lora名称,删掉多余lora,方便后续使用。

(3)*可选 如果有又像又不像的,可以把对应lora拉出来,再去重复训练一次,epoch设置5,每1 epoch保存一次。再优中选优。但是最好不要重复训练太多次,否则容易过拟合,要么图像崩坏,要么泛化性非常差。

(4)记录训练参数,数据,测试数据,便于下一次迭代。


答疑:

1.之前都是推荐用秋叶的训练包,现在怎么用星空的训练包?

秋叶的训练包我发布过线上线下版,因此这次换一个训练包,让大家多一个选择。(而且星空这个训练包其实底层是github上面一个很流行的lora训练项目kohya_gui https://github.com/bmaltais/kohya_ss的汉化增强版)。

各lora训练包的用法其实差不太多,主要参数也还是那几个。

另外,秋叶训练包提示triton报错不用管,正常,但是如果提示找不到其他包/模型,那么就需要点多几次install确保环境依赖安装完整。

2.本文的方法可以用于训练动漫人物吗?

可以。但训练动漫可以不需要这么多图片,有些训练参数也可以优化。可以参考我之前的lora篇教程。

3.训练模型对硬件有什么要求

建议显存8G以上,低于8G容易训练失败。实在不行可以用线上版训练。


最后提醒,训练自己的照片请注意保管好训练成果,不要泄露你的Lora,避免引来不必要的麻烦。训练他人照片尤其是商用请先获得授权,否则有侵权法律风险。


好了,大家都学会了吗?学会了记得点赞关注在看三连哦~

如果不会,有问题也可以私。

那么今天的课,先上到这里吧,下次再见,下课!

<End>


历史教程文集,请查看AI绘画教章合集

关注我们,更多有用又有趣的AI绘图技能知识持续更新中~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存