社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  aigc

AIGC教程:Stable Diffusion精进,如何训练特定画风LoRA模型?

GameLook • 2 年前 • 412 次点击  

「 点击上方"GameLook"↑↑↑,订阅微信 」

文生图只是AI生成能力的起步,如今,随着同行们的探索增加,很多人已经开始通过Stable Diffusion训练风格化的模型,即将AI变成一个特定画风的画师。

最近,就有一位开发者分享了自己训练风格化LoRA模型的经验和技巧,并且通过本地训练和Google Colab Notebook两种方式展示了方法与结果,让无论是否有强大GPU配置的同行都可以上手。

以下是Gamelook听译的完整内容:

今天要分享的是我在Stable Diffusion和LoRA风格领域的探索,LoRA,即Low-Rank Adaptation,大型语言模型的低阶自适应,它是一种可以将扩散模型带向全新层次的技巧。LoRA最初设计是为了教模型学习新概念,目前为止大多数用来训练角色。

然而,如果你仔细思考,主题和角色都是一种概念,艺术风格也是概念。无论如何,LoRA训练模型的主要优势之一,就是它比Dreambooth模型更小,而且更加模块化。

很多人都用Stable Diffusion训练风格化艺术,我对于LoRA的探索,主要是聚焦在复制或者融合特定的美术风格,如果你对于LoRA背后的理论和数学感兴趣,可以参考这篇论文进行深入研究:https://arxiv.org/abs/2106.09685

对我来说,在深入研究之前,我更喜欢先上手体验,这就是我们今天要做的事情。进入流程之前,首先要确保我们得到了所有需要的东西:你首先需要安装Stable Diffusion的AUTOMATIC1111 webui,加上你计划要训练的具体模型,我想要训练的是Vanilla模型(Stable Diffusion 1.5 ema 以及anything 4.5 pruned模型)。

接下来,你要准备带有说明文字的文本文件(.txt文件),这是训练LoRA模型的一个关键组成部分,所以我会在稍后进一步详细讲解。

最后,你需要一个可以训练LoRA的设备或笔记本,如果没有强大GPU的电脑配置也不用担心,你仍然可以跟上进度。实际上,我会将今天的分享拆解为两部分:对于第一部分,我会使用对用户非常友好的Kohya sd脚本,这里是它的详细介绍(https://github.com/kohya-ss/sd-scripts),你还可以通过创作者的视频了解更多内容。我将在Stable Diffusion 1.5版本训练这个模型。

对于第二部分,我将使用谷歌Colab Notebook作为LoRA训练者,这里,我将使用自己探索的经验训练anything v4.5 pruned模型。

    第一部分:Kohya本地GUI训练

如我们之前所说,首先我们会使用对用户比较友好的Kohya的GUI,不要担心,安装过程非常直接,将其复制到你的电脑之后,在命令提示符程序输入“.\gui.ps1”,它就会告诉你本地主机链接(如图)

进入下一步之前,我尽量对自己的硬件和装备做到透明,我的显卡是RTX 3090,显存为24GB,这意味着我不用担心显存开销,可以轻松训练我的LoRA模型。

现在,如果你想要学习我的流程,但又缺乏强大的显卡,这也不会有问题,你可以调整自己的设置来降低模型训练对于显存的要求,不幸的是,我没有一个更低配的GPU来测试将设置降低到什么程度才能训练,不过,通过对于图片中的设定调整(可能需要全部关闭),你或许可以在低配电脑上训练。

1.1、数据集准备

接下来,我分享一些让数据集准备更流畅的事情,最初,我只打算训练图形绘制,比如美术师vofan的作品,这些是他的一些作品,他是动漫插画师领域比较著名的美术师。可以看到有些图片来自小说封面,这些都是她做的插画。

在进行文字说明之前,我们现需要对这些文件进行重命名,比较有用的一个技巧就是,确保你的所有文件都是同一种文件格式,比如JPG或PNG,以免在批处理的时候出现重复文件名。

这里是一个需要避免的做法,在Windows系统文件夹下,全选所有图片并点击这里的重命名icon,为所有图片选择一个名字(我选择的是graphic_illust),点击回车键,你所有的图片都被重新命名,唯一的区别就是它们的后缀数字变化。

然而,可以看到这里有些古怪,比如名字是graphic_illust (1)的文件有两个,其实我们可以发现后续几乎所有的数字名都有重复,这是因为,我的图片格式既有JPG,又有PNG,所以批处理的时候自动将不同格式的文件进行了排序,于是就出现了重名文件,这是我们不希望的结果。

我们需要避免这样的现象,但怎么做到呢?这里介绍一个简单的解决方法:

我的方法是打开命令提示符程序(cmd),导航到图片文件夹,然后将所有的JPG转换成PNG格式,或者将所有PNG转换成JPG,只是为了让你文件夹内的所有文件保持为同一种格式。所以,你可以输入“ren *.jpg *.png”然后按回车键,这样文件夹内所有文件就会变成PNG格式。

然后,我们会到上一步,再次批处理重命名(参考此前步骤),这样我们就不会有重复的文件名了。

下一步,将这些图片放到图片处理工具中,我这里使用了birme,我发现自己的电脑配置可以支持768×768尺寸的图片训练,所以我将图片裁剪成这个分辨率尺寸。

接下来是给你的图片增加说明文字,处理好所有的图片之后,进入gui界面,点击utilities标签,选择BLIP Captioning,将你的图片文件夹(文件路径)输入到指定位置。

如果想要训练特定风格,你可以在这里增加前缀,比我们这里输入“VOFANstyle”,但我并不只是用它来训练这一位美术师的风格,所以我选择留空,这里是我选择的配置:

说明文字处理完成之后,回到文件夹,就可以看到每张图片都有了一个txt说明文档:

我用来编辑说明文字的工具是Visual Studio Code,可以看到这个界面,打开一个图片文件,然后点击右上角的icon,第二个窗口打开TXT文件。现在的问题是,我们是为什么增加说明文字?如果我们要训练一个角色,那么所有图片的说明都是同一个角色,这样它才能被识别。

所以我们这里可以把一个女孩(a girl)换成初音未来(Hatsune Miku),不过,我们并不是要训练一个角色,所以不用更换。

我们想要训练的是一种风格,所以会描述除了图片风格之外的一切,因此我们不会使用“插画(an illustration of)”或者“照片(a photo of)”之类的术语。基本而言,我们希望对想要改变的一切进行说明,这一点刚开始可能有点难以理解,但我会尽量解释的直观一些。

这个案例中,“一个绿色长发在空中飘扬的女孩(a girl wiht long green hair is flying through the air)”描述相当准确,但还不够精准。我要描述的是一个蓝绿色眼睛、绿色双马尾长发的少女(a teenage girl with teal eyes and long teal hair in twin tails),然后删掉其余所有描述,将在空中飞扬(flying through the air)留在最后。

那么,除了上述特征之外,她还有什么特点?可以看到,她穿了一件白色衬衫,白色短裙,黑色毛衣围在腰间,还穿了一件蓝色连衣裙,腿部暴露在外,还有一双蓝绿色溜冰鞋。随后,还可以看到蓝天白云。

完整说明文字:a teenage girl with teal eyes and long teal hair in twin tails, wearing a white colored blouse, white skirt, black sweater tied around waist, blue dress, exposed legs, teal rollerskated, blue sky with white clouds, flying through the air

那么,我为何要在这里描述的这么具体呢?如果我不在这里描述,那就意味着我希望LoRA学习这些东西,如果我不描述蓝绿色眼睛,那么最终生成的所有角色都会有蓝绿色眼睛。所以,一定要将能够改变的所有东西描述出来。

这里是我要修改的第二个图片描述,可以看到这里的描述是错误的(a woman sitting at a table with a book and a cigarette),很明显这里缺失了一些东西,所以我们把它改为:

“a young woman with medium length hair, closed eyes, wearing a white collored blouse, green dress, school uniform, green hair ribbon, desaturated light brown ribbon, looking up to the right side, book in the foreground, blurry building in the background”

我觉得这些足以描述图片里的内容了,当然,这一步是非常耗时间的,因为你需要检查很多的文字,如果想要获得良好的数据集,就需要恰当处理这些说明文字。所以,我需要开始做这些事情,然后开始训练。

1.2、Kohya_ss设置

现在我到了GUI里的Kohya SD脚本部署界面,点击Dreambooth LoRA标签,也就是我们要使用的这个。

前面说到,我要使用Stable Diffusion的1.5版本模型,所以点击图片中的书页icon,等待它加载模型路径,而且要保持下边两个勾选框为空。

下一步是工具标签,Kohya的文件夹有些独特,而且必须遵循一定的传统,图片中的设定是我已经设置好的:

点击下方的准备数据集按钮即可。

随后,点击复制信息到文件夹标签(Copy info to Folders Tab),这很有用。

然后我们来到文件夹(Folders)标签,我们不用手动输入文件夹路径,它是上一步已经设置好的。对于模型输出名字,我这里设置为lora_example_01。

接下来是训练参数设置,打开Training Parameters之后看到的是默认设置,然而,由于我的数据集训练了157张图片,这些默认设置表现不会很好。经过了多次尝试之后,我发现使用修改后的设置配置文件好很多,所以我将它们加载到训练参数里。

在正常的LoRA模型训练中,你或许不会像我一样使用那么多的图片,所以可以将训练频率提高一些,因为我使用的数字非常低。然后我们具体来说其他设置。

对于训练批处理大小(train batch size),如果你的GPU显存低于8GB,我建议将其设置为2甚至为1,它代表的是你可以同时运行的平行计算数量;随后是回合数(epoch),它代表的是你对一个数据集进行反复传播的次数,你可以调整这个数字,但我强烈建议至少大于1,因为这会成为你的快照文件(snapshot file)或者保存的LoRA文件。

最后我应该有15个LoRA文件,每个回合都有一个,你需要这些文件因为它们代表不同的时间点,你可以通过它来查看你的结果是否过度拟合。

接下来是精确度,如果可以使用bf16精准度模型,一定要用它,如果训练的时候出错,使用fb16就行。对于LR Scheduler设置,选择constant就行,训练频率是默认的,如果你的文本编码器或unet学习频率为空白,它就会使用默认数值。

随后是network rank和network alpha设置,通常来说,你应该保持跟我一样或者相同的数值。对于768×768像素这样的高分辨率图片,使用更高的network rank是个好主意。对于非动漫模型的风格化训练,将其设置为200或者更好会更好一些。

根据我个人的经验,在数值256左右的时候会开始得到糟糕的结果,所以我建议不要设置那么高。或者,如果你想要这样高的设置,就需要进一步降低unet学习频率。

然后是高级设置,可以看到我的设置,你可以和我的设置一样,因为Stable Diffusion 1.5模型是在CLIP SKIP1基础上训练的,所以将其数值保持为1,对于动漫模型或其他V3版本,将clip skip设置为2。

我还启用了洗牌描述(shuffle caption),如果你发现LoRA训练有些颜色问题,你可以启用颜色增强(color augmentation)功能,但它随后会关闭这个页面中的cache latent,所以,如果颜色成为了大问题,你可以尝试启用这个功能。

总而言之,这就是我使用的设置,所以就可以开始训练模型了。但在此之前,我还需要提到一件小事,也就是步数计算,它会出现在控制台输出界面,如果你要训练的批处理大于1,总训练步数实际上会有比较大的差别,因为它是图片数量、重复次数与回合的乘积,我使用了157张图片,所以我的训练步数是35325步。

然而,我的训练批处理数量是6,所以我需要用总步数除以6,我之前说过,这是你同时运行的平行数量,因此得到的结果是5888步左右。当我真正训练的时候,它呈现的结果是5888步,而非总步数35325步训练结果。

如果一切就绪,你就可以按训练按钮开始训练。

如果看power shell,可以看到最大训练步数是5888,随后是加载我的checkpoint,然后或许是cache latents。

现在它会计算步数,对我来说,总的训练时间在12个小时或15个小时左右,但这是对于15个回合、157张图片,而且分辨率较高、network rank也达到了200。所以,这并不是标准的训练时间,如果训练数量合理,LoRA的训练时间在30分钟到2小时之间。

1.4、分析结果

如果你的训练没有出错,那么恭喜。进入你建立的文件夹,然后打开模型文件夹,你应该可以看到与回合数一样多的文件,所以我这里有15个文件,全选复制粘贴到Stable Diffusion LoRA文件夹(stable-diffusion-webui/models/lora),确保所有的文件都在这里,否则就没办法进行下一步。

接下来是分析我们的LoRA模型,我的方式是选择一个非常标准和简单的指令以及负面指令,想要激活并使用你的LoRA模型,点击这里的红色按钮,进入lora标签,搜索你的lora名字,我的是graphic_illust_12。

选择一个,lora会以这种形式出现,随后,我使用lora写指令的方式是这样:

这就是我告诉Stable Diffusion加载LoRA风格学习信息的方式,然后粘贴负面指令,接着将采样方式设置为习惯使用的方式。

接下来,我在脚本选项下打开XYZ选择,还记得回合数是以LoRA名字格式保存的,所以这里使illust_12,随后是五个0,然后是一个整数,LoRA的权重或强度在冒号之后。我想要一个不仅能展示回合模型的变种,还能改变LoRA权重的网格。

为此,我首先要为X类型选择Prompt S/R,代表搜索和替换,这里我想要替换的是模型数字,所以我要将这里的000007改成变体num,接下来在X数值里,我写入NUM, 000001, 000002…..0000014。

如果你理解了这个逻辑,那么后面就会比较直接了,比如Y类型选择Prompt S/R,然后在Y值输入STRENGTH, 0.1, 0.2……0.9, 1。并且将1改成strength,这样在输入指令之后,我至少会得到一个14×10或者10×14的展示变体的网格,别忘记将模型选择为你训练的模型,这里我已经选择了1.5 pruned-emaonly,所以,根据你的实际需要,选择不同的东西。

接下来我输入指令,它看起来网格已经生成好了,点击之后就是这样的效果:

我觉得最好是点进输出结果文件夹,把它放到Photoshop里,这样可以更好地观察一切,现在图片太小,很难知道是否有过度拟合。

这是Photoshop里的视图,横轴是X,竖轴是Y,这时候我们可以选择应该进一步测试哪个回合了。有人建议,LoRA强度为1的时候不应该有过度拟合。幸运或者不幸的是,由于尝试了很多次,我们并没有得到特别糟糕的结果。

接着是聚焦于网格里的右下角,这里我们可以看到LoRA更高强度与回合的结果。更多回合意味着训练处理的时间更长,我个人想要开始分析的是回合7,这时候图片形状更清晰,强度为1。

如果你了解游戏,最终的世界让我想起这种风格:

哪怕数据里并没有这样的风格。

这里甚至还有影线标记(hatching mark),算是比较令人开心的意外。

随后,如果我们持续增加回合数,你会看到发生了一些令人困惑的事情,比如这里第八和第九回合的睫毛膏或者眼影,但到了第十回合的时候它们消失了。在强度为1的时候,从10回合到14回合,我们开始得到了非常好的插画效果,实际上做到了数据集想要它做的事情,或者说是我想要LoRA模型做到的效果。

然而在倒数第二个回合,我们发现了一些人为现象(artifacting),所以13和14回合有些失控。如果我们用粗略的方式分析结果,可能就会因为过度拟合而放弃最后几个回合。

如果细看,我们会发现14回合强度0.8和0.9的表现非常不错,所以个人来说,基于实验结果,我会继续并且在webui用几个不同的指令测试最终的15回合,来看它到底是真的过度拟合,还是因为我生成时使用了比较糟糕的种子数字,所以我们开始尝试:

1.5、确定最终LoRA模型

这里我们进入了stable diffusion webui界面,我希望测试最终回合,这里不会有任何数字附加,所以我们用随机种子测试强度1加入指令。

这些是我们的结果,个人而言我很喜欢。如果达不到你想要的清晰度,可以将lora强度降为0.9或者更低。

我们保留种子数字,将强度降低为0.9,可以看到人为痕迹消失了。当然,这些地方始终可以通过局部重绘(impainting)来提高,所以我并不太担心文生图部分。

那么,我们为何不尝试其他选择呢?比如将指令里的白色头发改为金色头发,这意味着我们的LoRA模型并没有被限制。如果我们不能通过指令的变化改变输出结果,那就意味着我们的LoRA模型出现了过度拟合,这是我们应该注意的另一件事。

如果结果是金色头发,就像图片中的这样,那么我们就可以继续了,这就是测试LoRA角色的方法。

但是,如果是LoRA模型没被训练的东西,得到的结果是怎样呢?这也是我们风格训练的目的,所以我准备了一些指令来进行测试。

1.6、应用LoRA风格

这里我们将指令中的角色相关内容去掉,将强度改回1,种子改为随机(-1),我们可以先测试一个户外环境的生成,比如意大利北部的名山多洛米蒂山(Dolomites),然后看它是否能够生成与其相关联的图形。

可以看到,结果很不错,它的结果是形状与多洛米蒂山一致,不过是不同的风格。

那么,换成室内场景是否可行呢?比如图书馆,我们就可以得到插画风格的图片。

然后我们来测试一些非常随机的东西,比如韩剧《非常律师英禑》,她喜欢一直飞来飞去的鲸鱼,所以我们可以将指令修改为flying whales来看得到什么结果:

这些结果很酷,我个人很喜欢。如果觉得太强烈,可以降低强度,但哪怕是强度为1也不会有人为痕迹。我们可以修改为0.8:

从我的分析来看,不管你输入什么指令,LoRA模型都不会出现过度拟合,当然,也或许是我没有找到对的测试方法来发现过度拟合。不过,我觉得这是一个不错的尝试。

所以,接下来我会开始动漫风格的LoRA训练,相信很多人都会感兴趣。

    第二部分:用Google Colab训练Kohya LoRA模型

在开始训练LoRA之前,我们像以往一样要从数据集开始。这里我选择的是日本插画师redjuice的作品,他也以shiru这个名字被很多人熟知。Shiru的意思是汤,这里我选择的是768×768像素的图片,如果不熟悉我是如何准备数据集的,请参考第一部分。

这里可以看到,所有图片都有同样的名字,唯一的差别就是后缀数字,而且都是PNG格式。

2.1、数据集准备

由于这里假设你不会使用Kohya本地安装,而是使用Google Colab,所以我这里改变了添加说明文字的流程来使用AUTOMATIC1111里的网页扩展tagger。

所以点击extensions,可以看到我已经安装了tagger,随后点击Tagger标签,就可以看到如下界面:

这里的文字说明流程与第一部分(blip captioning)不同,由于这次我们将使用clip skip 2模型训练,通常是动画风格,这里是v4.5 Pruned模型,一定要确保使用Danbooru风格的标签,你很快就会知道我说的是什么意思。

点击“从目录批处理(batch from directory)”标签,在输入目录里放入正确的路径。如果你想要在其他标签之前添加一个标签,比如redjuicestyle,对我而言,我通常不使用token带引用风格,所以这里我会留空。因此,我也不知道这里最好的方法是什么,如果了解过第一部分,就会知道这样的选择对于LoRA来说也非常好。

如果一切满足你的需求,可以点击interrogate按钮,然后检查控制台:

它在加载这些文件,完成之后我们跳转到数据集文件夹,看是否有说明文件。

2.2、改良描述说明

可以看到每一个对应的图片都有了说明文件,然而我们还没有结束,还需要再次打开VS code软件进行编辑。

这是VS Code界面,左侧是我打开的数据集里的图片,右侧是它的描述文字,第一眼看去,我们可以发现其中的很多都是正确的。比如有婚纱、手套、肘部手套、冠状头饰、白色连衣裙等等,都是图中有的内容。

我不希望对每个细节都作出修改,但在这里有些东西是需要改变的,比如这里的角色描述是有名字参照的,如Mikasa Ackerman、Annie Leonhardt、Ymir(图片中并不存在),还有Christa Renz。这里的名字对我们来说是个问题,就像在第一部分说过的那样,我们希望描述的是所有我们希望改变的东西。如果将名字留下来,它就会作为一个记号,会影响LoRA最终的风格。

我们希望LoRA对于每张图片只在单一概念上做出妥协,所以,去掉所有的角色名即可,然后检查所有的描述文件,去掉其中的名字。

2.3、Kohya Colab Notebook

现在,我们的数据集已经恰当地被描述,接下来进入Google Colab Notebook,如图所示,它的用途非常直观,不过我会逐个介绍。

第一部分是Clone Kohya Trainer,只需要按播放按钮,它会提示你Kohya没有得到谷歌认证,只要选择运行即可,完成之后会有一个绿色对号。

接下来是安装dependencies,再次点击对应的播放按钮,它就会开始处理、安装Python包体,这需要一段时间,因此需要等待所有东西完成。

随后是1.3.1,登录Huggingface社区,确保你有一个Huggingface账号,并拥有一个具备写入职能的标记(token),我这里粘贴我的标记,然后点击播放按钮。

下一步是Mount Drive,点击播放,连接到Google Drive,完成之后,点击左侧的文件夹icon,就可以看到drive文件夹。

然后是为Colab打开特殊的文件浏览器,点击播放按钮,等待完成。

第二部分,我们开始下载想要使用的模型,我使用的是Anything v4.5 pruned,选择之后点击播放按钮,它就会开始下载,并且从Huggingface同步。

你可以跳过2.2,因为不会使用定制模型,所以我们直接说2.3,下载可用的VAE,我们使用的是动漫风格,所以看到选项是anime.vae.pt直接点击播放按钮即可。

第三部分是数据获取,定义你的训练数据位置,将训练重复次数设置为10,其他随便改就行,因为它们的影响并不大,点击播放按钮之后,它会在左侧创建文件夹,位于Dreambooth文件夹之内。

随后是上传数据集,其余第三部分和第四部分的东西都可以跳过,因为我们在本地准备了数据集。

接下来是定义重要文件夹,也就是第五部分,项目名写成“shiruillust”,将预训练模型路径改为Anything -v4-5,将后缀Safetensors改为ckpt(即checkpoint)。

对于VAE,我们在左侧已经有了一个,点击复制路径,粘贴到对应位置就行。其他的设置看起来还好,不过,对于输出目录,我希望改为本地硬盘,因此勾选输出到硬盘驱动即可。随后点击播放按钮,开始定义我的文件夹。

由于我们跳过了数据上传,所以你要到本地数据集文件夹,全选,然后拖拽到左侧的训练数据文件夹。

这是我的Kohya训练设置,我将回合设置为20,学习频率改为0.0001,network rank选了160,所以回到colab,将5.2部分的network dim设置为160,学习频率设置为1e-4,其余设置如图。

随后点击播放按钮。

然后是开始LoRA Dreambooth,我选择了fb16,但我不认为Colab GPU能够处理,所以保持fp16不变。你可以将分辨率调至我在本地训练时的768,但是这会导致程序崩溃,因为内存不足,因此分辨率尽可能调低,通常可以调至512,这里的设置是640。

回合数设为20,将save_n_epochs_type设置为save_every_n_epochs,将保存回合类型值设为1,这样它就会像第一部分那样,从0.1、0.2一直到1。

其余设置看起来还可以,然后可以检查代码,看是否有数字出错,如果没问题,就可以点击播放按钮。

我们这里发现了一个错误,这是好事,因为我也犯错了,可以看到是我的本地路径写错了,所以回到预训练模型路径,我没有在路径里写上pruned,所以最好是直接复制路径粘贴,然后再次运行5.2,接下来是运行5.3。

这会持续一段时间,大约一个半小时,等待其完成就可以了。

如果你想知道自己的文件在哪里,进入Google Drive,你会在My Drive文件夹下看到Dreambooth文件夹,所有一切都应该在这里的output文件夹里。点开之后可以看到所有的回合结果,最后结果是没有数字的文件。

你可以全选,右键,然后选择下载,它们会被打包为一个Zip文件,解压然后复制粘贴到Stable Diffusion下的LoRA模型文件夹,然后打开webui。

2.4、分析LoRA模型

现在我们进入了webui,已经加载了LoRA,我的名字是shiruillust,我会选择最后一个没有数字的文件,运行,看它是否可行。

先删掉LoRA,生成一张图片作为种子,然后黏贴LoRA模型,将图片种子代码粘贴到seed,然后点击生成,它应该会给我一个风格化的结果:

可以看到结果图片的确有redjuice风格。

我们将批处理量改为4,种子随机,然后再看结果:

四张图片看起来有些粗糙,但看起来还是可行的。所以,接下来我们重复第一部分的步骤,创造一个图片网格。

不过在此之前,我们先看看能否改变图片的部分内容,比如将金发改为红头发,如果结果图片没有改变,那就意味着我们的模型是有问题的:

可以看到,它可以改变角色头发的颜色,有些图片甚至将连衣裙颜色也变成了红色,想要精准控制,我们只需要随后将指令写的更具体即可。

回到脚本选项,将之前用过的XYZ值复制粘贴到对应位置,不过这里的回合是20,所以要将NUM增加到000019,其余保持不变。

然后将批处理量改为1,将LoRA里的数字改为num和strength,确保使用Prompt S/R,然后点击生成。

我们将结果图片在Photoshop里打开,然后只看最后几回合的结果,到了第9回合左右,才有一点redjuice风格的味道,到了14回合的时候可以看到比较大的变化。我这里只选择最后回合,它应该会给出最好的结果。

所以,我回到Stable Diffusion,然后用最终回合做一些生成测试。

2.5、验证最终LoRA模型

的确有redjuice风格。

如果记得开头,你们会发现有一个redjuice风格的赛博朋克角色Lucy,所以我们这里测试模型能否通过使用LoRA模型组合,来生成对应结果。

2.6、组合使用LoRA模型

这里我们粘贴指令,最初的代码是本地训练版本,但我这里要改为Colab版本,看它是否可行。

Redjuice风格的Lucy。

增加批处理量,看它是否仍然有效:

生成结果是令人满意的。

然而,你可以在训练阶段做更多次重复或更多回合,因为步数太少会有些略显不足。

再用本地训练的LoRA模型生成,可以看到结果好一些:

但这也可能是因为我用了VAE。

看起来没有太大的区别。

接下来我再用一个风格进行LoRA模型Colab训练,这是Lycon制作的LoRA,这次我们用来自《王国之心》的角色Aqua测试:

看起来像是Aqua

将批处理量改为4,可以看到风格也是持续的,看起来的确像是redjuice画的。如果想要保持不饱和色彩,你要卸掉VAE,我们可以试试:

有些图片没有出现粉色带子,这里我们需要调低角色LoRA风格或者角色强度,但整体结果已经完成了。

再来测试去掉VAE之后的Lucy:

可以看到这里的redjuice风格更明显了。

我所有训练的模型都可以在Civitai找到,希望能够有你需要的风格训练方法。不过,我也还在尝试之中,这些方法的确带给我比较满意的结果,希望也能帮到你们。

····· End ·····




GameLook每日游戏产业报道

全球视野 / 深度有料

爆料 / 交流 / 合作:请加主编微信 igamelook

广告投放 : 请加 QQ:1772295880

      长按下方图片,"识别二维码" 订阅微信公众号

····· 更多内容请访问 www.gamelook.com.cn ·····

Copyright © GameLook® 2009-2023


        觉得好看,请点这里 ↓↓↓ 

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/153712