Stable Diffusion训练Lora模型

以下内容参考:https://www.bilibili.com/video/BV1Qk4y1E7nv/?spm_id_from=333.337.search-card.all.click&vd_source=3969f30b089463e19db0cc5e8fe4583a

1、训练Lora的2个重点步骤

第一步,准备训练要使用的图片,即优质的图片

第二部,为这些图片打标,即精准的tag

2、图片要求

数量建议20-50张,最多100张图片

不好的图片:模糊的,动作扭曲的,脸部被遮挡的,背景比较复杂的图(扣掉背景)

分辨率:如果以sd2作为基础模型,需要768*768以上

批量调整图片尺寸:https://www.birme.net/?target_width=512&target_height=512

批量调整图片格式:https://www.wdku.net/image/imageformat

3、图片打标

需要安装两个插件:Tagger 以及 dataset tag editor(地址:https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor)

(1)Tagger插件

图片生成tag信息的txt文件,通常输入目录和输出目录一致。

(2)Dataset Tag Editor

对tag进行处理

1)删除重复的单词,Remove duplicate tags

2)删除属于人物特征的tag,比如人物的眼睛、眉毛、鼻子、头发长度等代表人物本身的属性。凡是绑定在人物身上的,就要把它们删除。(因为后续我们需要根据lora名称直接生成这些特征,所以需要模型根据lora名称直接学到这些特征,而不需要再提供其他提示词

以下内容参考: https://www.jianshu.com/p/e8cb3ba45b1a

4、训练

安装训练图形化工具kohya,日本人写的。

(1)下载

工程地址:https://github.com/bmaltais/kohya_ss

下载后在服务器的位置:/data/work/xiehao/kohya_ss

(2)安装工程依赖包

进入该目录,安装依赖包:pip install -r requirements.txt

(3)生成执行的配置文件

执行accelerate config命令,我的配置如下:

(4)启动训练图形化界面

执行命令:python kohya_gui.py --listen 0.0.0.0 --server_port 12348 --inbrowser

5、实战

(1)从百度下载了25张zhangluyi的图片

(2)图片裁剪为768*768

https://www.birme.net/?target_width=768&target_height=768

(3)图片都转为jpt格式

https://www.wdku.net/image/imageformat

(4)使用Tag插件提取tag

批量提取的方式

执行后在linux上生成了相应的txt文件

(5)通过Dataset Tag Editor处理标签

首先,移除重复项以及人物特征提示词

然后,保存这次修改。

(6)在SD的训练模块对训练集的文件名进行处理

生成的文件信息如下:

这些文件需要放在10_zly的目录下。目录名前面数字_字母前面的数字是每次训练过程中网络训练单张图片的次数,这个目录命名很重要,定位这个bug花了我一个小时

(7)在kohya中进行训练

完成数据集准备之后,就可以在kohya进行训练了。

首先,配置基座模型信息。

Pretrained model name or path指定的linux位置对应的模型,需要包含model_index.json、tokenizer目录等信息,不能只有一个safetensors文件。可以通过git lfs clone下载https://huggingface.co/digiplay/majicMIX_realistic_v4(18G)。

 这个关键点很重要,定位加下载处理花了我几个小时

然后,配置训练目录

接着,配置训练参数

Optimizer这个不能使用默认的值,目前源码中只支持如下5种:

一个个试过去,看下哪个不报错。

成功执行后日志如下图所示,训练占用6G左右的GPU显存资源,训练时长20分钟,最后生成的lora 10M左右。

(8)在stable diffusion webui中检测lora模型效果

训练完成后,将Lora目录放到sd根目录extensions/sd-webui-additional-networks/models/lora下面

Webui上界面操作如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/83698.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【vue3】对axios进行封装,方便更改路由并且可以改成局域网ip访问(附代码)

对axios封装是在main.js里面进行封装,因为main.js是一个vue项目的入口 步骤: 在1处创建一个axios实例为http,baseURL是基础地址(根据自己的需求写),写了这个在vue界面调用后端接口时只用在post请求处写路由…

【深入解析:数据结构栈的魅力与应用】

本章重点 栈的概念及结构 栈的实现方式 数组实现栈接口 栈面试题目 概念选择题 一、栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数…

Masterstudy主题 - 用于线上教育、在线学习和在线课程的LMS WordPress主题

Masterstudy主题是每个人的最佳选择!它是一个完整的线上教育WordPress主题,适合所有想要创建在线课程、辅导和语言中心、在线学习平台并在全球范围内传播知识的人。这是一个完美的教育主题,旨在满足学习行业的需求。 网址:Master…

【数据结构练习】单链表OJ题(一)

目录 一、移除链表元素思路1:思路2: 二、反转链表三、链表的中间节点四、链表中倒数第k个节点五、回文结构六、合并两个有序链表 一、移除链表元素 题目: 思路1: 在原来的链表上进行修改,节点的数据是val的删除&am…

axios 各种方式的请求 示例

GET请求 示例一&#xff1a; 服务端代码 GetMapping("/f11") public String f11(Integer pageNum, Integer pageSize) {return pageNum " : " pageSize; }前端代码 <template><div class"home"><button click"getFun1…

时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图)

时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图) 目录 时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图)效果一览基本介绍程序设计学习总结参考资料效果一览 基本介绍 时序预测 | MATLAB实现ELM极

linux部署clickhouse(单机)

一、下载安装 1.1、下载地址 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区阿里巴巴开源镜像站&#xff0c;免费提供Linux镜像下载服务&#xff0c;拥有Ubuntu、CentOS、Deepin、MongoDB、Apache、Maven、Composer等多种开源软件镜像源&#xff0c;此外还提供域名解析DNS、…

Android企业项目开发实训室建设方案

一 、系统概述 Android企业项目开发作为新一代信息技术的重点和促进信息消费的核心产业&#xff0c;已成为我国转变信息服务业的发展新热点&#xff1a;成为信息通信领域发展最快、市场潜力最大的业务领域。互联网尤其是移动互联网&#xff0c;以其巨大的信息交换能力和快速渗透…

JVM——JDK 监控和故障处理工具总结

文章目录 JDK 命令行工具jps:查看所有 Java 进程jstat: 监视虚拟机各种运行状态信息 jinfo: 实时地查看和调整虚拟机各项参数jmap:生成堆转储快照**jhat**: 分析 heapdump 文件**jstack** :生成虚拟机当前时刻的线程快照 JDK 可视化分析工具JConsole:Java 监视与管理控制台连接…

Flink内核源码解析--Flink中重要的工作组件和机制

Flink内核源码 1、掌握Flink应用程序抽象2、掌握Flink核心组件整体架构抽象3、掌握Flink Job三种运行模式4、理解Flink RPC网络通信框架Akka详解5、理解TaskManager为例子&#xff0c;分析Flink封装Akka Actor的方法和整个调用流程6、理解Flink高可用服务HighAvailabilityServ…

【二分查找篇】速刷牛客TOP101 高效刷题指南

文章目录 17、BM17 二分查找-I18、BM18 二维数组中的查找19、BM19 寻找峰值20、BM20 数组中的逆序对21、BM21 旋转数组的最小数字22、BM22 比较版本号23、BM23 二叉树的前序遍历 17、BM17 二分查找-I 思路步骤&#xff1a; step 1&#xff1a;从数组首尾开始&#xff0c;每次取…

微服务中间件--分布式事务

分布式事务 a.理论基础1) CAP定理2) BASE理论 b.Seata1) XA模式1.a) 实现XA模式 2) AT模式3) TCC模式3.a) 代码实现 4) Saga模式5) 四种模式对比6) TC的异地多机房容灾架构 a.理论基础 1) CAP定理 分布式系统有三个指标&#xff1a; Consistency&#xff08;一致性&#xff…

GRPC 链接 NODE 和 GOLANG

GRPC 链接 NODE 和 GOLANG GRPC 了解 什么是GRPC gRPC 采用了 Protocol Buffers 作为数据序列化和反序列化的协议&#xff0c;可以更快速地传输数据&#xff0c;并支持多种编程语言的跨平台使用gRPC 提供“统一水平层”来对此类问题进行抽象化。 开发人员在本机平台中编写专…

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…

WXML中的条件语句

wx:if 和 hidden 的使用 1.在js中定义数据 Page({ data:{ type:1,flag: false}, }) 2.在wxml中使用wx:if 和 hidden&#xff0c; block用于包装组件(不会渲染为任何标签) <!-- 条件渲染 --><view wx:if"{{type 1}}">男</view><view wx:elif…

Wappalyzer - 技术剖析工具的必备浏览器扩展

目录 前言一、Wappalyzer简介1.Wappalyzer的背景和由来2.Wappalyzer的目标和优势 二、Wappalyzer的工作原理1.检测技术栈的方法和策略2.数据库和规则集的更新 三、如何使用Wappalyzer1.安装Wappalyzer浏览器扩展2.在浏览器中使用Wappalyzer进行技术剖析 总结 前言 在当今的数字…

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统&#xff0c;在我们身边几乎随处可见。…

SpringBoo t+ Vue 微人事 (十一)

职位修改操作 在对话框里面做编辑的操作 添加对话框 <el-dialogtitle"修改职位":visible.sync"dialogVisible"width"30%"><div><el-tag>职位名称</el-tag><el-input size"small" class"updatePosIn…

Linux学习之ssh和scp

ls /etc/ssh可以看到这个目录下有一些文件&#xff0c;而/etc/ssh/ssh_config是客户端配置文件&#xff0c;/etc/ssh/sshd_config是服务端配置文件。 cat -n /etc/ssh/sshd_config | grep "Port "可以看一下sshd监听端口的配置信息&#xff0c;发现这个配置端口是22…

ubuntu 编译安装nginx及安装nginx_upstream_check_module模块

如果有帮助到你&#xff0c;麻烦点个赞呗&#xff5e; 一、下载安装包 # 下载nginx_upstream_check_module模块 wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master# 解压 unzip master# 下载nginx 1.21.6 wget https://github.com/nginx/…