1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 人工智能AI > 正文

人工智能AI

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

1987web2023-08-14人工智能AI177
头条创作挑战赛

头条创作挑战赛

欢迎来到觉悟之坡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://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://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_guihttps://github.com/bmaltais/kohya_ss的汉化增强版)。

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

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

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

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

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

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

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

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

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

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


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

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

nitrosocke/Arcane-Diffusion · Hugging Face

nitrosocke/Future-Diffusion · Hugging Face

要注意这些模型对应的SD版本号,有的是SD1.*的,有的是SD2.0的,还有的是MJ的,有些需要定制版本的程序才能运行。


今天看了一下ControlNet,只是把原理过了一遍,没有实际尝试,等我的新机器配好后再干上一票。

这个工具和常规的Fine-tune差别很大了,一般Fine-tune都是对主模型进行修改(DreamBooth),或者追加(TextualInversion)或者定向裁剪(LoRA),而ControlNet是引导(Guided),通过输入一张框架图来诱拐SD在框架上充实内容,这样可以确保构图的准确性。这个功能很重要,构图是绘画的头等大事,色调其次,细节末之。一幅画所要表达的思想很大程度上在构图时就决定了。

对这个新工具的评价,我有两种观点,因为职业习惯,我通常都是从需求分析开始考虑问题。用SD或者说文生图AIGC的用户一般有两种类型:

  1. 没有绘画基础的人,想完全通过工具自动生成所需的图
  2. 有绘画基础的人,想借助工具来协助自己创作

对于第一类需求,你要做的事就是拼凑内容,你的创作实际上是基于记忆,你想要的一幅人物/景物画,大概率是你记忆中看过的某个电影/电视/动画/漫画片段里一个场景,那个场景就是你的构图,在SD里输入的prompt(咒语)就是试图用文字描述那个场景,可想而知,精准的描述非常困难,再加上SD生成的方式太自由,最终的画面距离你的记忆相差会很大,但也许它生成的效果会比你记忆中的场景更出色。

第二类需求,你希望的是:我直接用手绘速写出构图,然后辅助一些prompt在这个构图上充实细节,即使细节不完美,我也可以通过手绘再加工或者借鉴。比如很多漫画/动画/电影里做分镜的人,他们的构图能力很强,并不希望SD天马行空得布局画面。

基于这两种情况,ControlNet更适合第二类需求,它相对完美的解决了画家/画师/美工/设计者和AI的职业冲突如果一个以绘画为职业的人认为AI有擅长细节描绘的能力就能取代他/她的职业,而忽视了自身的构图/光/色调设计能力,那么大概率他/她不是个合格的从业者,被取代也没什么好抱怨的。

对于第一类需求,因为你必须从图库/电影/卡通等等素材中找到你所需的原图,才能借用ControlNet帮你换掉/充实细节,所以你对画面把控的程度是很低的。如果仅仅是玩玩,问题不大,如果是有特定的商业要求,要自由/完全得满足这些要求,光凭一幅原画是很麻烦的。

不过我可以给一些方法来辅助你,其实ControlNet原论文里就已经提到了:用人体的姿态(Pose)当作原画。当然,实际上不局限于人体,还可以有动物/物件/建筑。

说到这里,已经超出了SD的范畴了,甚至超出了基于扩散模型"(Diffusion)算法的:

Disco Diffusion

Midjourney

Dall.E2

Imagen

上面这些工具都是以2D图像作为处理的基础。AIGC还有一个子领域是3D的内容生成,涉及的工具集比Diffusion家族多出很多,也都是用AI驱动的。先放张动图: