草庐IT

stable diffusion(Lora的训练)

Pigeon_SG 2023-06-22 原文

以坤坤为例,上网随便找了几个坤坤的人脸图像,作为训练的数据集 

1 训练环境搭建

建议看一遍教程,虽然这个up主好像不是很专业的样子,不过流程差不多是这样的,重点关注一下虚拟环境搭建完之后,在终端选择配置的操作,就是一堆yes no,的选项,跟着视频来就行了。

1.1 git clone 项目

本地找个训练环境存放的文件夹,利用git工具拉取训练webui环境

git clone https://github.com/bmaltais/kohya_ss.git

拉取后会有这样的目录,执行红框内的setup.bat文件就能安装训练的虚拟环境了(和之前搭建的SD框架虚拟环境类似,但是安装的python库版本会有所出入,如果不想有版本冲突的话,建议直接在这里就不需要操作任何配置了)

1.2 cuda加速安装

项目网站上有安装的教程,用于加速训练过程的,支持30和40系显卡

1.3 打开训练的webui

和打开SD webui类似,直接点击这个目录下的gui.bat文件,看到url网址出现就能打开网站了。

2 图片的预处理

 简单来说训练过程中需要图像和对应的图像描述,类似于其他机器学习中的数据和标签。在stable diffusion的webui里可以找到图像预处理模块。输入到lora训练网络中的数据集应该长这样:

结果展示

2.1 裁剪

因为本文一开头搜集到的图像分辨率不一样,训练过程中最好使用同一的分辨率,这里可以通过剪裁网站批量处理人物图像。这里推荐使用512*512的分辨率。这个网站还能同一重命名图片,有强迫症的人很支持。

2.2 利用stable diffusion webui预处理

在ui的这个界面输入刚刚批量裁剪完的图像,和输出的目录。就能得到以下21张512*512并且带有描述文本的训练集了。

 ……这里坤坤的被预处理自动标记为1girl了,大家可以手动修改一下这个标签,然后检查其他的描述是否存在不合理的情况,酌情删除和增加即可。

3 模型的训练和使用

3.1 文件路径安排

回到lora训练的webui上,在dreambooth LoRA栏目下添加源模型,因为本次训练的是真实人物模型,笔者就选择了这个比较合适的大模型。

 子栏目Folders按照这个格式放置刚刚处理的图片,这里的文件命名只需要注意10_cxk,前面的数字,是每次训练过程中网络训练单张图片的次数。其余的路径名大家可以自定义。

 子栏目training parameter就是训练过程中需要炼丹的参数,大家根据自己电脑的配置来修改,数据量大的,显存足够的情况下,batchsize可以调高。学习率和epoch次数都是比较常见的修改参数。这里用了8个epoch去训练,每次epoch结束后都会保存当前的Lora模型。结果是这样的:

 大家可以根据训练的loss值来选择计算机认为较好的结果,当然loss越小拟合得越好,太小则会过拟合,泛化性能不足。

3.2 lora模型挑选

刚刚一共训练了八个cxk_lora模型,但看loss值不好挑选最佳的模型,这里回到stable diffusion webui里,利用脚本来观察那个lora模型比较好。

3.2.1 插件安装

需要安装红框里的插件,才能利用脚本一次性使用多个lora进行对比,当然,大家可以不用插件,一个一个去生成,但是就是会比较麻烦,有插件就方便一些。

3.2.2 比较模型 

把刚刚整完的lora模型放到这个插件的model/lora目录下,就能在界面看到这样的效果。记得大模型要选择你训练的时候的基底模型。附加网络随机选取,这个插件不用选择开启。但是网络类型和模型是需要选取的,为的是让后面的脚本能识别你要进行对比的lora模型。

 脚本里这样设置,选择XYZ 绘图脚本

X轴类型选择刚刚插件内的额外网络模型(也就是你的Lora模型)

Y轴选择这个模型需要运用的程度,等价于prompt语法中的<lora:cxk_model_xxx:0.5>,因为有些情况下,会出现模型的过拟合,若是应用占比过大,反而效果不好。

出图结果:

 可以看到拉,cxk_lora-7这个模型配合上0.9左右的占比,实现的效果比较好。

3.3 lora应用

选择刚刚合适的模型,放入到这个目录下(其实应该可以修改代码,这样就不用复制来复制去了。。还占用空间,不过fine拉,看代码也是个很长的过程)

 然后就能在stable diffusion webui里愉快地出图啦~

 这里的插件和脚本都不需要开启了。记得关闭。

相关链接

训练工程——kohya_ss

剪裁工具——photosoft

有关stable diffusion(Lora的训练)的更多相关文章

  1. ruby - 在 Ruby 中训练神经网络 - 2

    在神经网络方面,我完全是个初学者。我整天都在与ruby​​-fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到StackOverflow并询问这里的知识渊博的人。我有一组样本——每天都有一个数据点,但它们不符合我能够找出的任何明确模式(我尝试了几次回归)。不过,我认为看看是否有任何方法可以仅从日期预测future的数据会很好,而且我认为神经网络将是生成希望表达这种关系的函数的好方法.日期是DateTime对象,数据点是十进制数,例如7.68。我一直在将DateTime对象转换为float,然后除以10,000,000,000得到一个介于0和1之间的数字,我一直在将

  2. ruby - 在 Ruby 中为 XOR 训练神经网络 - 2

    我正在尝试训练一个前馈网络来使用Ruby库AI4R执行异或运算。然而,当我在训练后评估XOR时。我没有得到正确的输出。有没有人以前使用过这个库并得到它来学习异或运算。我使用了两个输入神经元,一个隐藏层中的三个神经元,一个输出层,正如我看到的预计算XOR前馈神经网络就像这样。require"rubygems"require"ai4r"#Createthenetworkwith:#2inputs#1hiddenlayerwith3neurons#1outputsnet=Ai4r::NeuralNetwork::Backpropagation.new([2,3,1])example=[[0,

  3. 关于yolov5训练时参数workers和batch-size的理解 - 2

    关于yolov5训练时参数workers和batch-size的理解yolov5训练命令workers和batch-size参数的理解两个参数的调优总结yolov5训练命令python.\train.py--datamy.yaml--workers8--batch-size32--epochs100yolov5的训练很简单,下载好仓库,装好依赖后,只需自定义一下data目录中的yaml文件就可以了。这里我使用自定义的my.yaml文件,里面就是定义数据集位置和训练种类数和名字。workers和batch-size参数的理解一般训练主要需要调整的参数是这两个:workers指数据装载时cpu所使

  4. NEUQ-acm 预备队训练Week4—BFS/DFS - 2

    1.深度优先搜索(DFS)深度优先遍历主要思路是从图中一个未访问的顶点V开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底…,不断递归重复此过程,直到所有的顶点都遍历完成。例题P1605迷宫题目描述给定一个N×MN\timesMN×M方格的迷宫,迷宫里有TTT处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。输入格式第一行为三个正整数N,M,TN,M,TN,M,T,分别表示迷宫的长宽和障碍总数。第二行为四个正整数SX,S

  5. 必看新手教程!一篇就够!pycharm链接云服务器--yolov5 yolov7训练自己的数据集(矩池云) - 2

    趁着寒假期间稍微尝试跑了一下yolov5和yolov7的代码,由于自己用的笔记本没有独显,台式机虽有独显但用起来并不顺利,所以选择了租云服务器的方式,选择的平台是矩池云(价格合理,操作便捷)需要特别指出的是,如果需要用pycharm链接云服务器训练,必须要使用pycharm的专业版而不是社区版,专业版可以使用SSH服务连接云服务器。关于专业版的获取,据我所知一是可以买,二是如果你是在校大学生,可以用学生证向JetBrain申请专业版使用权,我就是通过这种方式激活专业版账户的,我记得当时两三天官方就发激活邮件了,还是很人性化的,使用期一年。下面开始正题本教程只涉及将yolov5及yolov7跑通

  6. 对于训练时loss出现负值的情况 - 2

    在训练时候loss出现负值,就立马停下来分析一下原因在哪。最有可能是损失函数出现问题,开始只使用交叉熵损失时没有出现过,在加上了diceloss时就出现了问题。于是就去diceloss中寻找原因。1:首先需要明白语义分割的GT,每一个像素点的值就是像素的类别。#-*-coding:utf-8-*-importnumpyasnpfromtorchvisionimporttransformsimporttorchfromPILimportImageimg=Image.open('C:/Users/翰墨大人/Desktop/0003_lable.png')#图像所在位置img1=np.array(i

  7. javascript - Codility 训练 : Find the maximal number of clocks with hands that look identical when rotated - 2

    这是问题的链接:https://codility.com/demo/take-sample-test/clocks问题是我不能从中得到100分(只有42分)。运行时间还可以,但对于某些测试用例,代码给出了错误的答案,但我无法弄清楚问题出在哪里。有人可以帮帮我吗?这是我的代码:functionrotate(arr){varmin=arr.reduce(function(a,b){returna>b?b:a});while(arr[0]!=min){varfirst=arr.shift();arr.push(first);}}functionsolution(A,P){varpositio

  8. javascript - CoffeeScript 或 JavaScript 中的基本 NLP——Punkt 标记化,简单训练的贝叶斯模型——从哪里开始? - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题?更新问题,使其仅关注一个问题editingthispost.3年前关闭。Improvethisquestion我当前的网络应用项目需要一点NLP:通过Punkt等将文本标记为句子;用从句分解较长的句子(通常用逗号,除非不是)贝叶斯模型适合于感觉均匀的分段段落,没有孤儿或寡妇,并且最小的尴尬split(也许)...如果您有NLTK,其中大部分是一项幼稚的简单任务—我这样做了,有点:应用程序后端是Tornado上的Django;你会认为做这些事情不是问题。但是,我必须以交互方式提供需要标记器的用户反馈,因此我需要对数据

  9. 训练自己的点云数据进行3D目标检测 - 2

    目录前言一、准备工作1.pcdet整体架构2.pcdet数据流3.kitti_dataset.py理解二、自定义数据集类的编写(参考kitti_dataset.py进行修改)三、修改eval部分四、可视化总结前言使用OpenPCDet框架训练自己的点云数据并进行可视化,涉及到以下四个方面:1.准备工作2.修改dataset进行训练3.修改评估代码4.可视化一、准备工作1.pcdet整体架构共分为data pcdet、models、ops、tools、utils几个部分data:存放数据pcdet文件夹:datasets,models,ops,utils,configdatasets(文件夹):

  10. go - 如何从 LoRa App 服务器接收数据? - 2

    我从LoRa节点收集数据,然后网关转发到lora服务器,最后,数据到lora应用服务器。但我找不到以下界面。(https://docs.loraserver.io/lora-app-server/integrate/data/)enterimagedescriptionhere 最佳答案 您需要实现一个MQTT客户端(或使用命令行客户端,如https://docs.loraserver.io/lora-app-server/integrate/data/中建议的mosquitto_sub),然后订阅指定节点的接收主题。您发布的图像不

随机推荐