本教程假设读者已经具备以下条件:
已经安装好 Stable Diffusion,我使用的是秋葉整合包v4。
能够使用文生图功能,即输入提示词,生成相应的图像。
本地训练:需要至少 8GB 显存的 NVIDIA 显卡。
云端训练:支持 RTX 3080、RTX 3090、RTX A5000 等显卡。
本教程将以《CLANNAD》中的女主角古河渚为例,演示如何训练一个角色 LoRA 模型。
我将会上传 LoRA 模型训练项目到云盘,方便大家实践和验证。
百度网盘:https://pan.baidu.com/s/1Eocv4RfBq-auRW3ME3UlPg?pwd=LoRA 提取码:LoRA
LoRA (Low-Rank Adaptation) 是一项数学技术,用于减少训练参数数量,提高微调速度和效果。
最初,LoRA 是微软研究人员为解决大语言模型微调而开发的,现在,Simo Ryu 将其应用到 Stable Diffusion 上,具体详见:
LoRA 通过大量样本来寻找初始对象和目标对象之间的“差异”,而不是“保存”整个目标对象。通过 LoRA 可以将初始对象微调成目标对象。
假设我已经有一件黑色T恤,但是我想要一件印有“垮小脸”的黑色T恤。那么,我不需要再购买一件印有“垮小脸”的黑色T恤,而是通过 LoRA 在黑色T恤上微调出“垮小脸”图案。
进入你的 Stable Diffusion 安装目录,然后进入models\Lora
文件夹,将 LoRA 放到这里。
启动 Stable Diffusion,在“生成”按钮下方,点击“显示/隐藏扩展模型”按钮。
点击扩展选项卡的 Lora 选项,点击你需要的 LoRA,例如"Arknights-Texas the Omertosa v1.0"。
那么<lora:Arknights-Texas the Omertosa v1.0:1>
将会自动添加到"正面提示词"输入框内。
如果你想查看 LoRA 的元数据,将鼠标移动到你需要的 LoRA 上,然后点击“感叹号”按钮。
这样,该 LoRA 的元数据将显示在屏幕中间。
LoRA 提示词格式:<lora:LoRA文件名称:权重>
。
例如,LoRA 文件名称是“Arknights-Texas the Omertosa v1.0”,你想设置它的权重为0.8;
那么该 LoRA 提示词为 <lora:Arknights-Texas the Omertosa v1.0:0.8>
。
如果你和我一样使用秋葉整合包,那么这个扩展插件已经包含在整合包中。
如果你没有安装这个扩展插件,你可以通过 Stable Diffusion 的“扩展”功能,从网址安装:
https://gitcode.net/ranting8323/sd-webui-additional-networks
安装成功后,点击“设置 -> 重载前端”来刷新 Stable Diffusion 界面,或者重启 Stable Diffusion。
进入你的 Stable Diffusion 安装目录,然后进入extensions\sd-webui-additional-networks\models\lora
文件夹,将 LoRA 放到这里。
展开“Additional Networks”面板,默认在“附加模型”选择框中选择 LoRA。
如果模型列表为空,点击“刷新模型列表”按钮。在“模型”选择框中选择你需要的 LoRA,例如“Arknights-Texas the Omertosa v1.0”。
拖动“权重”滑块来设置 LoRA 的权重。勾选“启用”复选框。
训练集 (training set) 是用于训练模型的数据集合。
对于 Stable Diffusion,LoRA 模型的训练集是由文本集和图像集组成的。
在训练过程中,模型需要通过训练集的数据不断地调整模型参数,来提升模型的拟合程度。
具有某种共同特征的图像集合。
包含图像对应提示词的文本集合。
数据搜集是搜集训练模型所需数据的过程。
确定你想要训练的内容,例如人物、物品、服装、动作等等,从中提取出关键词。利用关键词,尽可能地从互联网上搜集相关的图像数据。
你需要按照以下原则搜集图像:
中高质量:图像集的质量决定了 LoRA 出图质量。正所谓“输入是垃圾,那么输出也是垃圾“。
高分辨率:高分辨率图像通常会有更丰富的细节和更好的色彩表现,最好是搜集原始高分辨率的图像。
你搜集的数据数量通常是你需要的数据数量的3到5倍,确保留有一定的冗余空间。
Danbooru 是一家国外收集二次元图像的Booru系图站。该网站在国内已被墙。
具体参考:【科普】各大图站的介绍及使用方法初级指南
我们要训练的内容是古河渚,她是一名二次元角色。由于我们使用的提示词来自 Danbooru 图站上的标签,建议通过 Danbooru 图站获取古河渚相关图像。
在网站左侧搜索栏中输入并搜索“furukawa_nagisa”,搜集中高质量,图片尺寸大于768像素的图像。
我一共搜集了1,774张图像,这些图像来自游戏CG、动画海报、动画截图和同人画作。
数据筛选是从大量的原始数据中筛选出符合特定需求的数据的过程。
当你拥有足够多的图像时,你需要按照以下原则筛选图像:
代表性:图像集应该能够代表图站上各种常见的图像。
多样性:图像集应该包含不同主题、内容和场景的图像。
平衡性:不同类别的关键图像数量应该大致相等。
为了筛选古河渚图像,我新建和命名5个文件夹,分别对应不同的标签:
"close-up"、“portrait”、“upper body”、“cowboy shot”、“full body”、“poses”
我将符合标签的图像放到对应的文件夹中。
由于这是一个初级教程,每个文件夹只包含5张图像,总共30张图像。
数据清洗是去除数据集中的噪音和无关信息,并进行数据预处理的过程。
筛选出来的图像还需要进行编辑:
为带有透明背景的图像添加上白色背景。
去除无关的图像元素,例如其他角色,复杂背景,字符文本等等。
将图像裁剪和缩放成合适的尺寸,例如512 × 512,512 × 768,1024 × 1024等等。
以“full_body_01.jpg”为例,这张图像有多名角色和文本,需要将古河渚部分抠出:
抠出古河渚图像后,将背景填充为白色,图像尺寸设置成 512 × 768,保存文件。
角色 LoRA 模型需要的图像尺寸为768像素,常见的有768 × 768,768 × 512,512 × 768。
如果你使用了其他尺寸,请确保尺寸大小为64的倍数,具体原因详见:Stable Diffusion 工作原理
我们使用的秋葉训练脚本支持分桶技术。如果你不想裁剪图像,也可以选择不进行裁剪。
简单来说,分桶技术会根据图像的纵横比,将不同尺寸的图像分组到不同的桶中,同一个桶中的图像使用相同的图像尺寸。
具体详见:NovelAI Aspect Ratio Bucketing
数据标注是指对数据集中的样本进行人工或半自动标注的过程。
以便AI算法可以从这些标注中学习到模式和规律。
提示词与图像对应着输入与输出。在文生图模式下,输入提示词,就会生成对应的图像。
因此,我们需要为图片集中的每一个图像,准备对应的提示词。这些提示词构成了文本集。
以“full_body_01.png”为例,新建同名文本“full_body_01.txt”,然后在文本中添加图像对应的提示词:
图中提示词是通过标注工具生成的。接下来,我将介绍两种标注工具。
这种标注工具会将图像集裁剪成统一尺寸,并生成相应的文本集。
如果你不想对图像集进行编辑和裁剪,可以直接使用这种方式生成统一尺寸的训练集。
点击“训练”选项,点击”图像预处理“选项。在“源目录”输入框中,输入图片集的位置;在“目标目录”输入框中,输入生成的训练集的位置。输入生成的图片集的宽度和高度。勾选“使用 Deepbooru 生成标签”复选框。
点击“预处理”按钮,在目标文件夹生成训练集。
推荐视频:
【AI辅助设计不系统课程】EP03-Dreambooth训练大模型与ControlNet补充
如果你已经进行了图像编辑和裁剪,不想自动裁剪成统一尺寸,想要得到更准确的文本集。
推荐使用Waifu Diffison 1.4 Tagger。你可以通过 Stable Diffusion 的“扩展”功能,从网址安装:
https://gitcode.net/ranting8323/stable-diffusion-webui-wd14-tagger
安装成功后,点击“设置 -> 重载前端”来刷新 Stable Diffusion 界面,或者重启 Stable Diffusion。
点击WD 1.4 标签器(Tagger)选项,点击“批量处理文件夹”选项。在“输入目录”选项框中,输入处理好的图片集位置。勾选"将结果中的括号进行转义处理"复选框。点击“反推提示词”按钮。
反推过程结束后,在处理好的图片集位置,生成对应的文本集。
如果不需要生成文本集,点击“卸载所有反推模型”按钮,释放显存占用。
推荐视频:
与人工标注相比,标注工具生成的文本集准确度稍低,因此需要进行人工校对。
由于本教程是初级教程,因此跳过人工校对文本集部分。如果你想人工校对标注,可以参考以下原则。
对提示词中的标签进行排序。提升提示词的可读性。
删除提示词中相似的标签。只保留最能体现画面元素的标签。
删除提示词中错误的标签。提升提示词的准确性。
添加提示词中遗漏的标签。需要仔细观察对应的图像。
以文本“full_body_01.txt”为例,机器标注的提示词如下:
1girl, antenna hair, bangs, blue skirt, blush, brown eyes, brown footwear, brown hair, full body, furukawa nagisa, hair ornament, hairclip, hikarizaka private high school uniform, jacket, kneehighs, loafers, long sleeves, looking at viewer, miniskirt, own hands together, pleated skirt, sailor collar, school uniform, shoes, short hair, simple background, skirt, socks, solo, standing, white background, white sailor collar, white socks
我喜欢按照以下顺序,对标签进行排序: ”角色,视角,镜头,姿势,头发,面部,动作,身体,服装,场景,时间,天气,事物“。
furukawa nagisa, solo, 1girl, full body, standing, looking at viewer, antenna hair, short hair, brown hair, hair ornament, hairclip, brown eyes, bangs, blush, own hands together, sailor collar, white sailor collar, jacket, school uniform, hikarizaka private high school uniform, long sleeves, skirt, miniskirt, pleated skirt, blue skirt, socks, white socks, kneehighs, shoes, loafers, brown footwear, white background, simple background
删除相似的标签:
furukawa nagisa, full body, standing, looking at viewer, antenna hair, short hair, brown hair, hairclip, brown eyes, bangs, blush, own hands together, white sailor collar, yellow jacket, hikarizaka private high school uniform, long sleeves, pleated skirt, blue skirt, white socks, kneehighs, brown footwear, loafers, white background, simple background
添加遗漏的标签:
furukawa nagisa, full body, from side, standing, looking at viewer, antenna hair, short hair, brown hair, hairclip, brown eyes, bangs, blush, own hands together, white sailor collar, yellow jacket, hikarizaka private high school uniform, long sleeves, pleated skirt, blue skirt, white socks, kneehighs, brown footwear, loafers, white background, simple background
推荐视频:
由于我使用显卡 GTX 1660s 在本地进行模型训练时,经常遇到各种问题,所以本教程只演示如何在云端 AutoDL 训练模型。你需要注册一个 AutoDL 账号,充值10元用于租借显卡。
本地训练与云端训练的流程基本相同。你可以参考以下视频进行本地训练:
我使用的 LoRA 训练脚本来自 Akegarasu/lora-scripts,你需要下载 train.sh,修改里面的训练参数。
训练步数 = (图像数量 × 重复次数) × 训练轮数
实际训练步数 = 训练步数 / 批次大小
训练步数 (step) 是模型在训练过程中,模型进行参数更新的次数。
模型根据批次大小从训练数据中读取一定数量的样本。模型对这些样本进行向前传播和反向传播,来计算这些样本的损失函数 (loss) 和梯度,并根据梯度来微调模型参数。当模型完成对这些样本的学习和参数更新时,模型推进了一步。
批次大小 (batch size) 是每一步训练中,模型从训练集中读取样本的数量。
在训练过程中,训练数据会被分成多个批次 (batches) 进行处理。每个批次包含一定数量的样本。
增加批次大小会减少模型的实际训练步数。
增加批次大小会使用更多的显存资源,加快训练速度。
增加批次大小的同时适当增加学习率。
重复次数 (repeat) 是模型对训练集进行重复使用次数。
在每次训练轮数中,模型使用的训练数据为重复次数 × 训练集。
增加重复次数会增加模型的训练步数,进而影响微调模型参数次数。
如果图像数量不足,增加重复次数来增加训练数据数量。
训练轮数 (epoch) 是模型对训练数据进行完整训练的次数。
模型根据批次大小将训练数据划分成数个批次。模型对每个批次进行前向传播和反向传播,来计算批次的损失函数 (loss) 和梯度,并根据梯度来调整模型参数。当模型完整地遍历所有批次时,模型完成了一次训练轮数。
增加训练轮数会增加模型的训练步数,进而影响调整模型参数次数。
如果模型欠拟合,增加训练轮数提高对训练数据的拟合程度。
学习率 (learning rate) 是模型在训练过程中,对参数调整的程度。
更新模型参数时,模型根据梯度调整下降方向,根据学习率调整下降幅度。
提高学习率,会加快模型的收敛速度。但过高的学习率,可能导致训练过程不稳定或错过最优解。
降低学习率,会使参数更新更加稳定。但过低的学习率,会导致模型的收敛速度过慢或陷入局部最优解。
根据 THE OTHER LoRA TRAINING RENTRY 的建议,训练步数至少为1500步。
由于图像数量为30张,训练轮数默认为10轮,通过训练步数公式,可以算出重复次数为5次。
我们稍微增加重复次数,重复次数为7次,那么训练步数为2100步。
考虑到这是一个小型训练集,批次大小设置为2,那么实际训练步数约为1050步。
使用文本编辑器打开 train.sh,找到对应的参数进行修改:
# 设置训练用模型、图片
train_data_dir="./train/furukawa-nagisa" # 训练集路径
# 训练相关参数
resolution="768,768" # 图像尺寸为768×768
batch_size=2 # 批次大小为2
max_train_epoches=10 # 训练轮数为10次
save_every_n_epochs=1 # 每完成1次训练轮数,保存1次模型
# 输出设置
output_name="furukawa-nagisa" # 模型保存名称
训练集文件夹名称格式:[重复次数]_[训练集名称]
。
名称为“5_chibi”的文件夹,代表重复次数为5,名称为“chibi”的训练集。
名称为“10_nsfw”的文件夹,代表重复次数为10,名称为"nsfw"的训练集。
名称为“30_red-dress”的文件夹,代表重复次数为30,名称为“red-dress”的训练集。
首先,新建一个名称为“furukawa-nagisa”的文件夹,进入该文件夹。
然后,新建一个名称为“7_autumn-school-uniforms”的文件夹,进入该文件夹。
将图像集和文本集放入到该文件夹。
一个重复次数为7,名称为“autumn-school-uniforms”的训练集就创建完成了。
在 AutoDL算力市场页面 ,选择要租借的显卡,例如 RTX 3090。
在“镜像”选项卡中,点击到“社区镜像”标签,输入"lora"就可以看到秋葉的 LoRA 训练镜像。
选择当前最新的“Akegarasu/lora-scripts/lora-train:v7”训练镜像,点击“立即创建”按钮。
进入容器实例页面,开机成功后点击 “JupyterLab”选项。
打开AutoDL帮助文档,在学术加速页面,根据你租用的显卡所在区域,复制对应的学术加速命令。
例如,显卡在北京A区,那么复制相应的命令:
export http_proxy=http://100.72.64.19:12798 && export https_proxy=http://100.72.64.19:12798
打开终端,粘贴并输入相应的学术加速命令。
然后输入命令bash update.sh
,检查更新。
在左侧文件列表中,进入 train 文件夹,点击上方第二个“创建文件夹”按钮。
首先,新建一个名称为“furukawa-nagisa”的文件夹,进入该文件夹。
然后,新建一个名称为“7_autumn-school-uniforms”的文件夹,进入该文件夹。
点击上方第三个“上传”按钮,将本地文件夹“7_autumn-school-uniforms”里所有文件,上传到云端文件夹“7_autumn-school-uniforms”。
点击文件路径中“文件夹”按钮,返回到“root”文件页面。
点击“lora-scripts”文件夹,返回到“lora-scripts”文件页面。
点击 train.sh,将本地 train.sh 的内容,覆盖到云端 train.sh,按"Ctrl + S"保存修改。
在右侧页面中的选项卡,切换回终端页面。
输入命令bash train.sh
,运行 train.sh 脚本。
耐心等待训练进度条到达100%,在此期间记录每次训练轮数的 loss。
当然,你也可以将整个训练日志复制下来。
在左侧文件列表中,进入 output 文件夹。
右键点击模型文件,点击“下载”选项。将模型文件保存到本地。
将“furukawa-nagisa.safetensors”改名成“furukawa-nagisa-000010.safetensors”。
如果在训练期间出现报错,请尝试将报错信息复制粘贴给 New Bing 或者 chatGPT,寻找可能的问题和解决方案。
计费标准参考AutoDL帮助文档,在充值与计费页面获取容器实例计费信息。
如果要暂停训练,建议回到容器实例页面,点击“关机”选项。
如果要停止训练,建议关机后点击“更多 -> 释放实例"。
拟合 (fitting) 是模型通过学习已有数据集的特征和模式,不断地调整模型参数来适应其特征和模式,从而提升模型对未知数据的预测能力的过程。
欠拟合 (underfitting) 是模型在训练集上的表现较差的现象。
模型对训练数据的拟合欠缺,对训练数据中的共同特征和模式学习过少,导致模型在训练集上的预测能力较弱。
过拟合 (overfitting) 是模型在训练集上的表现优秀,但在新的数据集上的表现较差的现象。
模型对训练数据的拟合过度,对训练数据中的无关特征和噪音学习过多,导致模型在训练集上的预测能力很好,但在新的数据集上的预测能力较弱。
同学A第二天参加期末考试,需要学习知识B来解答题型C。老师给同学A准备了20道同类型的题目,作为训练集。每道题目需要学习2次,即重复次数为2,相当于训练集有40道题目。
每次学习时,同学A会从训练集中取4道题目进行学习,即批次大小为4,相当于将40道题目分成10个批次。在学习过程中,同学A每解答一道题目,就会微调已学到的知识;每完成一个批次的学习,同学A就会根据批次中4道题目共有的特征和规律,来调整已学到的知识。
如果同学A完整地学习训练集中的所有题目,即解答了40道题目,那么同学A完成了一轮训练。训练轮数为5,意味着同学需要进行5轮完整的训练,相当于对40道题目进行5轮的学习。
最后,同学A总共学习200道题目,即解答了50个批次的题目。在学习的过程中,同学A对知识B的拟合程度越来越好,解答题型C也越来越顺利。
同学A只完成了1轮完整地训练,解答了40道题目,就自以为掌握了知识B,于是同学A停止了训练,打游戏去了。
第二天考试,同学A在试卷上看到了原题,但没有完全想起如何使用知识B解决这道题,最终无法完整地解答这道题。
同学A在训练过程中,每道题目重复看了10遍,所有题目完整地过了10遍,相当于同学A学习2000道题目,结果是同学A成功记住了20道题目。
第二天考试,老师根据题型C出了一道新的题目。但是同学A将原题的解答过程,生硬地套用到新的道题目上,最终错误地解答这道题。
进入你的 Stable Diffusion 安装目录,进入models\Lora
文件夹,将训练好的 LoRA 模型放到这里。
启动 Stable Diffusion,在“生成”按钮下方,点击“显示/隐藏扩展模型”按钮。
点击扩展选项卡的 Lora 选项,点击“furukawa-nagisa-000001”。
那么<lora:furukawa-nagisa-000001:1>
将自动添加到"正面提示词"输入框内,但我们暂时删掉它。
在“脚本”选择框中,选择“X/Y/Z 图表”。
在“X 轴类型”选择框中,选择“提示词搜索/替换”,X 轴值如下:
000001:0, 000001:1, 000002:1, 000003:1, 000004:1, 000005:1, 000006:1, 000007:1, 000008:1, 000009:1, 000010:1
脚本会将提示词中的000001:0
替换成000001:1
,然后测试图像;测试完毕后将000001:1
替换成000002:1
,继续测试,依此类推。
在“Y 轴类型”选择框中,选择“随机数种子 (Seed)”,Y 轴值如下:
-1, -1, -1
-1
代表随机数种子。你也可以自己写种子数,例如:111111
, 233333
, 114154
。
接下来,我将使用“模型1”指代“训练轮数为1的模型”,“模型2”指代“训练轮数为2的模型”,以此类推。
验证集 (validation set) 是用于测试模型性能的数据集合。
验证集的数据分布与训练集相似,侧重于测试模型的性能,即对已见数据的预测能力。
我们通过验证集来测试不同超参数的模型,间接观察超参数对模型的影响,从而对超参数进行调优。或者挑选表现最佳的模型,用测试集做进一步测试。
验证集同样由图像集和文本集组成。我们从验证集中选择文本和对应图像A。
设置好 Stable Diffsuion 模型,启用 LoRA 模型,输入提示词生成图像B。
通过比较图像A和图像B,对 LoRA 模型进行评估:
评估模型在细节特征方面上的还原度。如果图像 B 没有准确还原图像 A 的细节特征,说明模型存在欠拟合问题;如果图像 B 还原了图像 A 的细节特征,但是图像 B 的质量严重下滑,画风过于偏向训练集,图像元素混乱,存在过度锐化和噪点现象,说明模型存在过拟合问题。
评估模型在图像语义方面上的准确度。如果图像 B 的图像元素与提示词的标签相差较大,检查训练集中的文本集,是否标注准确;如果多次生成图像 B,发现图像 B 经常出现提示词以外的无关图像元素,检查训练集中的图像集,是否存在污染。
评估模型对未知图像元素的泛化能力。通过修改提示词中的某些标签,来改变图像 B 的图像元素,观察模型观察模型能否很好地适应新的图像元素。
评估模型对某些图像元素的污染程度。随着模型的拟合程度加深,模型增强对细节特征的还原同时,还会增强对某些图像元素的污染。输入与训练集中的标签相差较大的标签,观察不同的图像元素是否会朝着细节特征方向还原,变成相似的图像元素;如果变成相同的图像元素,说明模型存在严重的过拟合问题。
我们从验证集中选择一张图像和对应提示词:
从文本读取提示词,添加<lora:furukawa-nagisa-000001:0>
,并适当加强部分标签的权重:
<lora:furukawa-nagisa-000001:0>, (monochrome), solo, 1girl, furukawa nagisa, (close-up), upper body, looking at viewer, short hair, hairclip, antenna hair, (parted lips), sailor collar, hikarizaka private high school uniform, tree, cherry blossoms, petals
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成768 × 768,点击“生成”按钮:
将提示词中的parted lips
修改成closed eyes
:
<lora:furukawa-nagisa-000001:0>, (monochrome), solo, 1girl, (close-up), upper body, looking at viewer, furukawa nagisa, short hair, hairclip, antenna hair, sailor collar, (closed eyes), hikarizaka private high school uniform, tree, cherry blossoms, petals
在“Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
closed eyes, one eye closed, frown, crying, :d, :o
如果你不确定 Stable Diffusion 模型能否识别出某一个标签,那么只用 Stable Diffusion 模型生成一张图像进行观察。例如,标签;d
,如果在生成的图像中,人物的一只眼睛没有闭合,说明该模型没有识别出该标签;d
。
图像尺寸设置成768 × 768,点击“生成”按钮:
我们修改人物特征标签,修改提示词如下:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, furukawa nagisa, (close-up), upper body, looking at viewer, (long hair, blue hair), hairclip, antenna hair, (blue eyes, parted lips), (black jacket, yellow skirt), tree, cherry blossoms, petals
在 “X 轴类型”选择框中,选择“提示词搜索/替换”,X 轴值如下:
000001, 000002, 000003, 000004, 000005, 000006, 000007, 000008, 000009, 000010
在 “Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
:0, :0.5, :0.6, :0.7, :0.8, :0.9, :1
图像尺寸设置成768 × 768,点击“生成”按钮:
观察不同训练轮数模型在不同权重下的表现。
我们从验证集中选择一张图像和对应提示词:
从文本读取提示词,添加<lora:furukawa-nagisa-000001:0>
,并适当加强部分标签的权重:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, furukawa nagisa, (cowboy shot), looking at viewer, short hair, hairclip, antenna hair, parted lips, smile, sailor collar, hikarizaka private high school uniform, (outstretched arm, index finger raised), school bag, holding bag, outdoors, (road), bush, tree, petals, (sunset, orange theme)
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成768 × 768,点击“生成”按钮:
将提示词中的cowshot body
修改成full body
:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, furukawa nagisa, (cowshot body), looking at viewer, short hair, hairclip, antenna hair, parted lips, smile, sailor collar, hikarizaka private high school uniform, (outstretched arm, index finger raised), school bag, holding bag, outdoors, (road), bush, tree, petals, (sunset, orange theme)
在 “Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
full body, from behind, from above, dutch angle, fisheye, foreshortening
图像尺寸设置成768 × 768,点击“生成”按钮:
我们修改人物特征标签,修改提示词如下:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, furukawa nagisa, cowboy shot, looking at viewer, (twintails, pink hair), parted lips, smile, (white dress), outstretched arm, index finger raised, outdoors, (road), bush, tree, petals, (sunset, orange theme)
在 “X 轴类型”选择框中,选择“提示词搜索/替换”,X 轴值如下:
000001, 000002, 000003, 000004, 000005, 000006, 000007, 000008, 000009, 000010
在 “Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
:0, :0.5, :0.6, :0.7, :0.8, :0.9, :1
图像尺寸设置成768 × 768,点击“生成”按钮:
观察不同训练轮数模型在不同权重下的表现。
我们从验证集中选择一张图像和对应提示词:
从文本读取提示词,添加<lora:furukawa-nagisa-000001:0>
,并适当加强部分标签的权重:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, (dutch angle, lying, on back, from above), furukawa nagisa, looking at viewer, short hair, hairclip, antenna hair, parted lips, sailor collar, hikarizaka private high school uniform, (outstretched arms, open hands), petals, pink background
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成768 × 512,点击“生成”按钮:
将提示词中的dutch angle, lying, on back, from above
修改成sitting
:
<lora:furukawa-nagisa-000001:0>, solo, 1girl, (sitting), furukawa nagisa, looking at viewer, short hair, hairclip, antenna hair, parted lips, sailor collar, hikarizaka private high school uniform, petals, pink background
在 “Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
sitting, bent over, arms up, knees up, hands on hips, on stomach
图像尺寸设置成768 × 768,点击“生成”按钮:
我们修改人物特征标签,修改提示词如下:
<lora:furukawa-nagisa-000001:0>, solo, (1boy), dutch angle, lying, on back, from above, furukawa nagisa, looking at viewer, (blonde hair, green eyes), parted lips, (white coat, black pants), petals, simple background
在 “X 轴类型”选择框中,选择“提示词搜索/替换”,X 轴值如下:
000001, 000002, 000003, 000004, 000005, 000006, 000007, 000008, 000009, 000010
在 “Y 轴类型”选择框中,选择“提示词搜索/替换”,Y 轴值如下:
:0, :0.5, :0.6, :0.7, :0.8, :0.9, :1
图像尺寸设置成768 × 512,点击“生成”按钮:
观察不同训练轮数模型在不同权重下的表现。
通过验证集评估,我们发现:
模型1到模型3,存在欠拟合问题,对人物的细节特征还原不足;模型4到模型6,对人物细节特征还原逐步准确,但还不够稳定;模型7到模型10,对人物细节特征还原准确稳定,但有时会将裙子融合进夹克里,偶尔会出现错误的颜色。建议在提示词中加入颜色标签,或者提高模型的拟合程度。
模型对表情变化的适应表现不错,对视角、动作变化的适应表现一般,提示词的准确有所下降。建议为训练集添加添加更多不同视角、动作等方面的数据,来提升训练集的多样性。建议校对文本集,来提高提示词准确性。
模型对衬衫、裙子等与人物特征标签相近的标签有污染现象,主要集中在形状、颜色方面上。污染程度较小,处于可接受的范围。 检查训练日志,我们发现模型6和模型10的 loss 较低,建议选择模型10进行下一步测试。
测试集 (test set) 是用于测试模型泛化能力的数据集合。
测试集的数据分布与训练集不同,侧重于测试模型的泛化能力,即对未见数据的预测能力。
我们通过测试集来测试最终模型,观察模型在实际应用中的表现,全面评估最终模型的性能和泛化能力。
挑选出表现最好的 LoRA 模型,我们可以通过以下方式进行测试:
生成类似的图像。从训练集中提取出关键标签。从图站上获取高质量的图像和提示词,确保图像涉及不同主题、内容和场景。修改提示词,将关键标签注入其中。使用提示词生成多张图像,根据生成图像来评估模型的表现。
生成创造性图像。构建一个简短的提示词,该提示词只使用关键标签、视角标签和动作标签。用最少的约束方式让 AI 生成图像。根据生成图像来评估模型的表现。
更换 Stable Diffusion 模型。评估该 LoRA 模型和不同的 Stable Diffusion 模型的搭配表现。
使用其他类型的 LoRA 模型。评估该 LoRA 模型和其他类型的 LoRA 模型的搭配表现。
我们随机从 Danbooru 随机选择了一张图像:
根据图像编写提示词:
<lora:furukawa-nagisa-000010:1>, solo, 1girl, furukawa nagisa, cowboy shot, from side, facing viewer, brown hair, hairclip, antenna hair, (^^, closed eyes, open mouth, smile), (hand up, fist, hand over own mouth), sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear, (white background), simple background
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们随机从 Danbooru 随机选择了一张图像,做一下裁剪:
根据图像编写提示词:
<lora:furukawa-nagisa-000010:1>, solo, 1girl, furukawa nagisa, upper body, from side, looking at viewer, brown hair, hairclip, antenna hair, (adjusting hair, tying hair), smile, mouth hold, (arms up, arms behind head), sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear, (white background), simple background
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们随机从 Danbooru 随机选择了一张图像,做一下裁剪:
根据图像编写提示词:
<lora:furukawa-nagisa-000010:1>, solo, 1girl, furukawa nagisa, full body, standing, looking at viewer, brown hair, hairclip, antenna hair, (one eye closed, open mouth), (arm behind back, finger to mouth), sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear, (pink background), simple background
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们想象一个场景:“从侧面看到抱着玩偶的古河渚的全身照”。
根据想象编写提示词:
<lora:furukawa-nagisa-000010:1.0>, solo, 1girl, furukawa nagisa, from side, full body, looking at viewer, brown hair, hairclip, antenna hair, :d, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear, doll, doll hug
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们想象一个场景:“从上面看到吃着面包的古河渚的上身照”。
根据想象编写提示词:
<lora:furukawa-nagisa-000010:1.0>, solo, 1girl, furukawa nagisa, from above, upper body, brown hair, hairclip, antenna hair, eating, bread, holding food, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们想象一个场景:“鸭子坐的古河渚”。
根据想象编写提示词:
<lora:furukawa-nagisa-000010:1.0>, solo, 1girl, furukawa nagisa, sitting, wariza, brown hair, hairclip, antenna hair, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们将 Stable Diffusion 模型切换到 BlueberryMix,编写提示词:
best quality, masterpiece, ultra high res, (photorealistic:1.4), depth of field, <lora:furukawa-nagisa-000010:0.8>, solo, 1girl, upper body, furukawa nagisa, brown hair, short hair, (sailor collar, white sailor collar, jacket, yellow jacket, blue skirt), v arms
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们将 Stable Diffusion 模型切换到 Anything V5,编写提示词:
(masterpiece, best quality), <lora:furukawa-nagisa-000010:1.0>, solo, 1girl, furukawa nagisa, cowboy shot, brown hair, hairclip, antenna hair, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们将 Stable Diffusion 模型切换到 Counterfeit-V3.0,编写提示词:
(masterpiece, best quality), <lora:furukawa-nagisa-000010:1.0>, solo, 1girl, furukawa nagisa, full body, brown hair, hairclip, antenna hair, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们使用其他类型 LoRA 模型 Clothes Spacesuit,编写提示词:
(masterpiece, best quality), <lora:furukawa-nagisa-000010:0.8>, solo, 1girl, furukawa nagisa, cowboy shot, brown hair, hairclip, antenna hair, brown eyes, <lora:Clothes Spacesuit v1.0:0.6>, astronaut, spacesuit, space helmet, gloves, space
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们使用其他类型 LoRA 模型 Chibi ArtStyle,编写提示词:
(masterpiece, best quality), <lora:furukawa-nagisa-000010:1.0>, <lora:Chibi ArtStyle v1.0:0.7>, chibi, solo, 1girl, furukawa nagisa, full body, brown hair, hairclip, antenna hair, sailor collar, blue sweater, yellow jacket, school uniform, blue skirt, white socks, brown footwear
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
我们使用其他类型 LoRA 模型 Doll style,编写提示词:
best quality, masterpiece, ultra high res, (photorealistic:1.4), depth of field, <lora:furukawa-nagisa-000010:0.8>, solo, 1girl, full body, furukawa nagisa, brown hair, short hair, (sailor collar, white sailor collar, jacket, yellow jacket, blue skirt), white socks, brown footwear, <lora:Doll style - Photography v2.0:0.65>, (doll, dd)
我们将提示词复制粘贴到“正面提示词”输入框内,图像尺寸设置成512 × 768,点击“生成”按钮:
通过测试集集评估,我们发现:
该 LoRA 模型能够满足大部分日常需求。能够很好地还原古河渚的人物特征,并且能够较为准确地生成符合提示词的图像。
该 LoRA 模型与日系二次元风格 Stable Diffusion 模型搭配表现很好,与欧美CG风格 Stable Diffusion 模型搭配表现一般,容易将天线呆毛识别成兽耳,与真实三次元风格 Stable Diffusion 模型搭配表现较差,需要增加出图数量,进行“抽卡”。
该 LoRA 模型与其他类型 LoRA 模型搭配表现一般,需要通过多次调整彼此权重来调整它们对 Stable Diffusion 模型影响,来获得合适的图像效果。
最后我们用打造武器来类比整个训练过程。
你是一名铁匠,受国王的委托,去打造最强大的武器,用于消灭半兽人。你前往军营,与经验丰富的老兵进行交流,收集他们与半兽人战斗时,使用各种武器的经验和见解。你将这些经验记录下来,用于打造新武器。
你通过不同的工艺,打造出10把不同的新武器。你将这些武器分发给一支小队,让他们使用这些武器与附近的半兽人进行战斗。你通过观察战斗结果和听取队员反馈,来评估这10把新武器的性能。你根据评估,不断地改进工艺和打造新武器,循环往复,直到你打造出最强大的武器。
最终,你将最强大的武器递交给国王。国王下令在各个战场上进行大规模的测试,全面评估最强大的武器的表现。通过这些测试,你得到了最强大的武器在各个方面的综合表现。