stable diffusion打造自己专属的LORA模型

通过Lora小模型可以控制很多特定场景的内容生成。

但是那些模型是别人训练好的,你肯定很好奇,我也想训练一个自己的专属模型(也叫炼丹~_~)。

甚至可以训练一个专属家庭版的模型(family model),非常有意思。

将自己的训练好的Lora模型放到stableDiffusion lora 目录中,同时配上美丽的封面图。

lora

(plen_me、plen_vivi,这两个是我训练的和家里人的模型~_~)

这样就可以将你的Lora模型和其他Lora模型融合使用了。

再配上Controlnet基本可以,将自己的pose+特征融入到其他任何lora模型中。

【1】
下面我们看下如何训练自己的模型。

(我的炼丹炉配置,win10+i7F+4080 )

首先,Lora模型可以通过lora-scripts 脚本进行训练。

仓库地址:https://github.com/Akegarasu/lora-scripts

找个目录拉下来,先安装sd-scripts子项目,然后安装lora-scripts项目。

(敲黑板)重点看下sd-scripts 子项目:
https://github.com/kohya-ss/sd-scripts/tree/b5c60d7d62d6bb4a174ac09327dc517fc4446523

要严格按照作者给的步骤安装。(要不然会有很多奇怪的问题)

如果顺利的话大概安装需要30min左右。(需要kexue上网应该就不用多介绍了)

【2】
接下来准备需要训练的图片。

根据最后的生成效果,要找头像清晰的,脸部轮廓清楚的,背景最好是白色的。

然后就需要我们将图片进行预处理。

先将图片放在一个文件夹里,然后定一个预处理之后的文件夹名字。

然后在stablediffusion中找到【训练】【图像预处理】模块

lora

按照说明,填入预处理图片路径和目标目录,然后选择【Deepbooru生成标签】。然后点击【Preprocess】,等处理完成。

到目标目录下,看下生成的标签信息。

lora

lora

这些标签就是训练模型的图片特征了,基本上生成出来的标签还是要check下。

如果某个重要的标签丢失,或者识别错误(girl识别成boy ~_~)会直接影响炼丹质量。

【3】
将预处理目标文件夹复制到lora-scripts脚本的主目录的train目录中。(如果没有就创建一个)

如果你有多个训练集合可以在train中创建一个目录,然后放到这个目录中。

训练自己的专属模型,需要依赖一个主模型。真人特征的模型貌似用 chilloutmix_NiPrunedFp32Fix 比较流行(这个模型很强大,你懂的!)。

模型地址:
naonovn/chilloutmix_NiPrunedFp32Fix at main

将下好的模型文件复制到lora-scripts->sd-models文件夹中。

【4】

准备工作差不多了,我们编辑下训练脚本。

lora-scripts目录中的train.ps1 脚本文件。

# Train data path | 设置训练用模型、图片
$pretrained_model = "./sd-models/chilloutmix_NiPrunedFp32Fix.safetensors" # base model path | 底模路径
$train_data_dir = "./train/test" # train dataset path | 训练数据集路径

$pretrained_model:就是我们下载的训练模型的基础模型,把名字换掉。
$train_data_dir:训练数据目录。

    # Train related params | 训练相关参数$resolution = "512,512" # image resolution w,h. 图片分辨率,宽,高。支持非正方形,但必须是 64 倍数。$batch_size = 2 # batch size$max_train_epoches = 20 # max train epoches | 最大训练 epoch$save_every_n_epochs = 2 # save every n epochs | 每 N 个 epoch 保存一次

$resolution:如果你的图片预处理的时候没有调整过,这里就保持默认。
$batch_size、$max_train_epoches:如果你的卡不是很强,这里的参数可以小一点。(这两个参数主要控制训练的次数和显存加载的张量数据集)。

    # Output settings | 输出设置$output_name = "meoutput" # output model name | 模型保存名称

$output_name:用默认的也行,最好自定义一个名字,避免重复生成覆盖原来模型。

保存,然后右键 【使用PowerShell运行】。

(这里还是要祈祷下,不一定能一次成功。~_~)

脚本在运行过程中会出现一些'triton'加载失败的错误。

lora

lora

但是其实不影响模型的训练(我查了下好像是windows电脑就不支持这个模块)。

这里的错误如果不能正常执行,大概率是前面敲黑板的地方你没有仔细看。

等模型训练完。(我15张图,大概跑了10min左右。)

我们看下output目录输出的模型文件。

lora

这里的模型文件保存的个数,是train.ps1脚本文件里设置的。

最后我们要通过验证这些模型准确度,选用哪一个。

【5】

将这些模型文件全部复制到

E:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora

对应的扩展忙碌下。
如果还没有安装 sd-webui-additional-networks 扩展,记得先到扩展中安装。

也可以直接用git地址安装(有时候这个扩展查询有点问题)
https://github.com/kohya-ss/sd-webui-additional-networks.git

然后我们测试下这几个模型哪一个不错。

顺利安装插件之后,就可以在界面上看到 【Additional Networks】功能菜单。

lora

要测试自己的模型,基础模型还是要选用我们训练的 chilloutmix_NiPrunedFp32Fix 模型。

prompt可以用自己提取的标签作为测试。

批次可以适当多点,到时候可以选择。

lora

lora

这个过程大概需要个20min左右。(可以喝点茶等待创作了~_~)。

来一起见证AI的创作吧 ~~!

lora

图片的上方是每一个模型名称,左边是特征权重,组成的一个二维表格。

lora

有点那个意思 hhh。

下面这些就有点辣眼睛了 。

lora

lora

根据自己的眼光,我们挑选一个相对比较不错的模型。

整体觉得这个模型不错,我们记下模型的名字。

lora

将这个模型复制到 E:\stable-diffusion-webui\models\Lora 目录中。

lora

可以给你的模型配上一个封面,只要文件名和模型名一样就可以了。

【6】

有了自己的专属模型,就可以结合其他lora模型一起使用了。
我们试下水墨风格。

下载lora模型:Moxin_10
下载基础模型:dalcefoPainting_3rd.safetensors

(有些基础模型在C站没有,可以到huggingface上找找,再不行github上肯定有)

lora

点开这个红色的收缩面板。

lora

刷新一下,让lora模型文件重新加载下。

然后选择我们保存的lora文件,此时这个模型的prompt设置会在文本框里。

lora

然后再选择水墨风模型 Moxin。

调整下每一个模型的权重,此时可以将我们自己的模型特征调大些。

如果没啥问题,我们就去C站找这个lora比较好的prompt拿过来用。

lora

lora

lora


这张虽然有点辣眼睛,但是特征是有了。

lora


这一张比较像我女儿 ~_~。

最后,stablediffusion+lora等AIGC属于开挂技术,我们还是要遵纪守法做一个好同志!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RT1052 的周期定时器

文章目录 1 PIT 周期中断定时器2 PIT定时器的使用3 PIT定时器配置3.1 PIT 时钟使能。3.1.1 CLOCK_EnableClock 3.2 初始化 PIT 定时器3.2.1 PIT_Init 3.3 设置 通道 0 的 加载值3.3.1 PIT_SetTimerPeriod 3.4 使能 通道 0 的中断3.4.1 PIT_EnableInterrupts 3.5 开启 PIT 定时器…

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境,本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…

Redis缓存预热

说明:项目中使用到Redis,正常情况,我们会在用户首次查询数据的同时把该数据按照一定命名规则,存储到Redis中,称为冷启动(如下图),这种方式在一些情况下可能会给数据库带来较大的压力…

监听器Listener详解

1、Listener 是由Java编写的WEB组件,主要完成对内置对象状态的变化 (创建、销毁)和属性的变化 进行监听,做进一步的处理作用:主要对session和application内置对象监听。 2、对application监听 package cn.mldn.lxh.l…

AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

单链表. AcWing. 826.单链表 import java.util.Scanner; public class Main{static int[] e new int[100010];//结点i的值static int[] ne new int[100010];//结点i的next指针static int idx,head;//head是头结点,idx存当前已经用到了哪个点public static void i…

【简化程序设计】C++STL“容器适配器“之栈和队列

【STL】容器适配器之栈和队列 stack的介绍和使用stack的介绍stack的使用stack的模拟实现 queue的介绍和使用queue的介绍queue的使用queue的模拟实现 priority_queue的介绍和使用priority_queue的介绍priority_queue的使用priority_queue的模拟实现 容器适配器什么是容器适配器&…

Vision Transformer (ViT):图像分块、图像块嵌入、类别标记、QKV矩阵与自注意力机制的解析

作者:CSDN @ _养乐多_ 本文将介绍Vision Transformers (ViT)中的关键点。包括图像分块(Image Patching)、图像块嵌入(Patch Embedding)、类别标记、(class_token)、QKV矩阵计算过程、余弦相似度(cosine similarity)、Softmax、自注意力机制等概念。主要介绍QKV矩阵…

C# XML 的读写以及和JSON对比

通过我们进行跨平台传输,我们需要把某一个平台特有的数据类型转化为一种通用的数据类型序列化和反序列化 通用形式有两种: 《1》JSON:是一种以键值形式组成 《2》XML:可扩展标记语言 XML文件格式要求: 《1》头部需要有…

基于x-scan扫描线的3D模型渲染算法

基于x-scan算法实现的z-buffer染色。c#语言&#xff0c;.net core framework 3.1运行。 模型是读取3D Max的obj模型。 x-scan算法实现&#xff1a; public List<Vertex3> xscan() {List<Vertex3> results new List<Vertex3>();SurfaceFormula formula g…

NFS、FTP、SMB、WebDav、DLNA协议区别

文章目录 NFSFTP/SFTP/SCPSMB/SambaWebDAVDLNA总结 随着智能化互联时代的来临&#xff0c;家中的智能设备越来越多&#xff1a;电视机、平板、游戏主机、电脑、手机等遍及家中各个角落&#xff0c;同时设备之间共享数据的需求变的越来越强烈。比如同步、备份手机上的照片和视频…

代码随想录Day53动态规划part14|1143.最长公共子序列|1035.不相交的线|53. 最大子序和 动态规划

1143.最长公共子序列 也不考虑顺序&#xff0c;元素之间可以不连续和718很相似&#xff0c;只不过这题要累加不连续的情况 1035.不相交的线 套上一题的程序可以通过&#xff0c;但是实际没有特别理解 53. 最大子序和 动态规划 之前用贪心做的&#xff0c;一旦sum<0&…

springboot log4j2日志 配置路径

一、log4j2 日志由xml配置&#xff0c;如果想改日志路径&#xff0c; 没办法和application.prop 文件读取参数 处理解决办法 二、1、默认解决办法 xml配置死路径&#xff0c;且测试与生产保持一致 <?xml version"1.0" encoding"UTF-8"?> <!…

从使用回溯分割字符串的技巧到前向搜索

题目 131. 分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 答案&#xff1a; class Solution {boolean[][] f;List<List<String>>…

【多线程中的线程安全问题】线程互斥

1 &#x1f351;线程间的互斥相关背景概念&#x1f351; 先来看看一些基本概念&#xff1a; 1️⃣临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。2️⃣临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。3️⃣互斥&…

js 下载url返回的excel数据,并解析为json

XLSX GitHub地址&#xff1a;https://github.com/SheetJS/sheetjs/blob/github/dist/xlsx.full.min.js 需要先引入&#xff1a;XLSX.full.min.js // 下载文件的请求 fetch(downloadFileUrl).then(response > {return rsp.blob() }).then(data > {let reader new FileR…

【密码学】三、AES

AES 1、AES产生2、数学基础2.1有限域GF(2^8^)2.1.1加法运算2.1.2乘法运算2.1.3x乘运算2.1.4系数在GF(2^8^)上的多项式 3、AES算法描述3.1字节代换3.2行移位3.3列混合3.4轮密钥加3.5密钥扩展 1、AES产生 征集AES算法的活动&#xff0c;目的是确定一个非保密的、公开的、全球免费…

HCIP——重发布及路由策略实验

重发布及路由策略实验 一、实验拓扑二、实验要求三、实验思路三、实验步骤1、配置接口IP地址以及环回地址2、配置动态路由协议3、重发布4、更改接口类型5、配置路由策略 一、实验拓扑 二、实验要求 1、使用双点双向重发布2、所有路由器进行最佳选路3、存在备份路径&#xff0c…

软考05根据内存区域大小计算芯片数量

文章目录 前言一、原题二、解题思路1.计算内存区域的大小2.计算每个存储器芯片的容量3.计算芯片数量 总结 前言 从网上看题答案是有了&#xff0c;但是不知道具体的计算过程就很难受&#xff0c;不然下次还是不会&#xff0c;只能自己梳理了 一、原题 二、解题思路 1.计算内存…

Android开发之Fragment动态添加与管理

文章目录 主界面布局资源两个工具Fragment主程序 主界面布局资源 在activity_main.xml中&#xff0c;声明两个按钮备用&#xff0c;再加入一个帧布局&#xff0c;待会儿用来展示Fragment。 <?xml version"1.0" encoding"utf-8"?> <LinearLayo…

手机的python怎么运行文件,python在手机上怎么运行

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;手机上的python怎么运行程序&#xff0c;手机的python怎么运行文件&#xff0c;今天让我们一起来看看吧&#xff01; 1、python程序怎么在手机上运行 python语言应用很广泛&#xff0c;自己也很喜欢使用它&#xff0c;其…