Stable Diffusion:使用自己的数据集微调训练LoRA模型

Stable Diffusion:使用自己的数据集微调训练LoRA模型

  • 前言
  • 前提条件
  • 相关介绍
  • 微调训练LoRA模型
    • 下载kohya_ss项目
    • 安装kohya_ss项目
    • 运行kohya_ss项目
    • 准备数据集
    • 生成关键词
    • 模型参数设置
      • 预训练模型设置
      • 文件夹设置
      • 训练参数设置
    • 开始训练LoRA模型
      • TensorBoard查看训练情况
    • 测试训练的LoRA模型
      • 文字生成图像(txt2img)
  • 参考

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入YOLO系列专栏、自然语言处理
    专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

前提条件

  1. 安装 Python 3.10.6 :https://www.python.org/downloads/release/python-3106/
  2. 安装 git:https://git-scm.com/download/win
  3. 安装 Visual Studio 2015, 2017, 2019, and 2022 redistributable:https://aka.ms/vs/17/release/vc_redist.x64.exe

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • AIGC(人工智能生成内容)是指由人工智能系统创建或生成的内容。它涉及使用人工智能技术,如机器学习、自然语言处理和计算机视觉,生成各种形式的内容,包括文本、图像、视频、音乐等。
  • 稳定扩散(Stable Diffusion)是一种用于概率建模和图像处理的方法。它基于扩散过程的理论,旨在对图像进行平滑和去噪处理,同时保持重要的图像结构和细节。
  • 稳定扩散方法通过在图像上应用非线性扩散算子来实现平滑和去噪。与传统的线性扩散方法不同,稳定扩散引入了非线性项,以更好地保留图像的边缘和细节。
  • 稳定扩散的核心思想是在扩散过程中考虑梯度信息,并根据梯度大小和方向来调整扩散速度。这样可以在平滑图像的同时,有效地抑制边缘的模糊和细节的丢失。
  • 稳定扩散方法在图像去噪、边缘保持、纹理增强等方面具有广泛应用。它提供了一种平衡平滑和保持图像结构的方法,可以应用于计算机视觉、图像处理和模式识别等领域。
  • LoRA模型全称是:Low-Rank Adaptation of Large Language Models,可以理解为Stable-Diffusion中的一个插件,仅需要少量的数据就可以进行训练的一种模型。
  • LoRA模型可以用于大语言模型的微调,可以用来降低微调成本。
  • LoRA模型可以和大模型结合使用,干涉大模型产生的结果。
  • LoRA采用的方式是向原有的模型中插入新的数据处理层,从而避免了去修改原有的模型参数,从而避免将整个模型进行拷贝的情况,同时其也优化了插入层的参数量,最终实现了一种很轻量化的模型调校方法。
  • LoRA建议冻结预训练模型的权重并在每个Transformer块中注入可训练层(秩-分解矩阵)。 LoRA还可以用于Stable-diffusion中的交叉关注层,从而改善用文字生成图片的效果。
  • LoRA模型的个头都比较小,常见的都是144MB左右,使用的时候要与精简版(prund)的Stable Diffusion1.5模型配合使用。
    在这里插入图片描述

微调训练LoRA模型

下载kohya_ss项目

  • 官方源地址:https://github.com/bmaltais/kohya_ss.git

在这里插入图片描述下载解压后,项目目录,如下图所示。
在这里插入图片描述

安装kohya_ss项目

  1. 打开终端并导航到所需的安装目录。
    进入kohya_ss目录:

    cd kohya_ss
    
  2. 执行如下命令运行setup脚本:

    .\setup.bat
    

如果没有报错,则安装成功。

运行kohya_ss项目

在Windows上,使用gui.bat脚本并在终端中运行它,命令如下:

gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share

运行成功后,可在浏览器输入http://127.0.0.1:7860/打开,如下图所示。
在这里插入图片描述

注:详细使用教程可查阅此项目中的README.md文件

准备数据集

在kohya_ss项目下,创建一个train目录,具体内容如下:
在这里插入图片描述

  • image : 图片放在这里。
  • log:训练记录
  • model:模型保存路径
  • image目录还有一个子目录,比如本文这里是100_Freeman,100表示100个steps,会直接影响训练的步数和效果,Freeman表示图片人物名称。
  • 创建好目录,将处理好的图片放在00_Freeman目录,然后就要准备做关键词生成。

生成关键词

  • 具体步骤:Utilities->Captioning->BLIP Captioning

在这里插入图片描述
成功生成,会出现TXT文件,如下图所示。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

模型参数设置

预训练模型设置

在这里插入图片描述

文件夹设置

在这里插入图片描述

训练参数设置

在这里插入图片描述

开始训练LoRA模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
训练完成后,会在model文件夹里生成一个.safetensors模型文件
在这里插入图片描述

TensorBoard查看训练情况

在页面上,点击Start TensorBoard,打开网址http://127.0.0.1:6006,即可查看。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试训练的LoRA模型

测试模型,需要使用到stable-diffusion-webui项目,具体安装方法,可查阅Window下部署使用Stable Diffusion AI开源项目绘图

  1. 将kohya_ss/train/Freeman/model目录里的Freeman_bs2_epoch50_fp16.safetensors模型文件分别拷贝到stable-diffusion-webui项目里的stable-diffusion-webui/models/Lora目录和stable-diffusion-webui/models/Stable-diffusion目录下。
    在这里插入图片描述
    在这里插入图片描述

  2. 在stable-diffusion-webui目录下,使用webui-user.bat脚本并在终端中运行它,命令如下:

webui-user.bat

在这里插入图片描述

运行成功后,可在浏览器输入http://127.0.0.1:7861/打开,如下图所示。
在这里插入图片描述

  1. 选择自己训练的LoRA模型
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

文字生成图像(txt2img)

 <lora:Freeman_bs2_epoch50_fp16:1>Freeman a beautiful woman with glasses and a white dress,modelshoot style,beautiful light,photo realistic game cg

在这里插入图片描述

参考

[1] https://github.com/bmaltais/kohya_ss.git
[2] https://github.com/AUTOMATIC1111/stable-diffusion-webui
[3] https://github.com/camenduru/stable-diffusion-webui
[4] https://www.kaggle.com/code/camenduru/stable-diffusion-webui-kaggle
[5] https://blog.csdn.net/wpgdream/article/details/130607099
[6] https://zhuanlan.zhihu.com/p/620583928

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入YOLO系列专栏、自然语言处理
    专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

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

相关文章

基于Googlenet深度学习网络的信号调制类型识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 深度学习与卷积神经网络 4.2 数据预处理 4.3 GoogLeNet结构 4.4 分类器 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ............…

聚焦电力行业CentOS迁移,麒麟信安受邀参加第六届电力信息通信新技术大会暨数字化发展论坛并发表主题演讲

为加快推进“双碳”目标下的新型能源体系和新型电力系统建设&#xff0c;深化新一代数字技术与电力业务的融合发展&#xff0c;促进电力行业关键技术自主创新、安全可控&#xff0c;助力电力企业数字化转型升级和高质量发展&#xff0c;2023年8月9-11日&#xff0c;第六届电力信…

攻防世界-warmup

原题解题思路 只有一张图片&#xff0c;就查看源代码&#xff0c;有一个source.php。 查看source.php&#xff0c;白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的&#xff0c;构造payload。 http://61.147.171.105:55725/sourc…

Dockerfile制作Web应用系统nginx镜像

目录 1.所需实现的具体内容 2.编写Dockerfile Dockerfile文件内容&#xff1a; 默认网页内容&#xff1a; 3.构建镜像 4.现在我们运行一个容器&#xff0c;查看我们的网页是否可访问 5.现在再将我们的镜像打包并上传到镜像仓库 1.所需实现的具体内容 基于centos基础镜像…

8.部署项目

项目地址&#xff1a;RuoYi-Cloud-Plus: 项目正式入驻 dromara 开源社区 迁移地址: https://gitee.com/dromara/RuoYi-Cloud-Plus 1.获取源码 需要有gitee账户 先把源码fork到自己的仓库中 需要多等待一段时间 勾选对应的环境 构建项目 2.sql导入 将sql导入到与sql文件名…

【uniapp】中 微信小程序实现echarts图表组件的封装

插件地址&#xff1a;echarts-for-uniapp - DCloud 插件市场 图例&#xff1a; 一、uniapp 安装 npm i uniapp-echarts --save 二、文件夹操作 将 node_modules 下的 uniapp-echarts 文件夹复制到 components 文件夹下 当前不操作此步骤的话&#xff0c;运行 -> 运行到小…

批量爬虫采集完成任务

批量爬虫采集是现代数据获取的重要手段&#xff0c;然而如何高效完成这项任务却是让许多程序员头疼的问题。本文将分享一些实际操作价值高的方法&#xff0c;帮助你提高批量爬虫采集的效率和专业度。 目标明确&#xff0c;任务合理划分&#xff1a; 在开始批量爬虫采集前&…

怎么查看小程序中的会员信息

商家通过查看会员信息&#xff0c;可以更好地了解用户&#xff0c;并为他们提供更个性化的服务和推荐。接下来&#xff0c;就将介绍如何查看会员信息。 商家在管理员后台->会员管理处&#xff0c;可以查看到会员列表。支持搜索会员的卡号、手机号和等级。还支持批量删除会员…

Rancher-RKE-install 部署k8s集群

一、为什么用Rancher-RKE-install 1.CNCF认证的k8s安装程序。 2.有中文文档。 二、安装步骤 1.下载Rancher-Rke的二进制包-下面是项目的地址 GitHub - rancher/rke: Rancher Kubernetes Engine (RKE), an extremely simple, lightning fast Kubernetes distrib…

代码随想录打卡—day21—【二叉树】— 8.21

1 530. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差 想法&#xff1a;先直接中序遍历&#xff08;升序的序列&#xff09;过程中相邻两个数的差值取min&#xff0c;自己写一次AC代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* …

关于视频监控平台EasyCVR视频汇聚平台建设“明厨亮灶”具体实施方案以及应用

一、方案背景 近几年来&#xff0c;餐饮行业的食品安全、食品卫生等新闻频频发生&#xff0c;比如某火锅店、某网红奶茶&#xff0c;食材以次充好、后厨卫生被爆堪忧&#xff0c;种种问题引起大众关注和热议。这些负面新闻不仅让餐饮门店的品牌口碑暴跌&#xff0c;附带的连锁…

爬虫工具的选择与使用:阐述Python爬虫优劣势

作为专业爬虫ip方案解决服务商&#xff0c;我们每天都面对着大量的数据采集任务需求。在众多的爬虫工具中&#xff0c;Python爬虫凭借其灵活性和功能强大而备受青睐。本文将为大家分享Python爬虫在市场上的优势与劣势&#xff0c;帮助你在爬虫业务中脱颖而出。 一、优势篇 灵活…

32.Netty源码之服务端如何处理客户端新建连接

highlight: arduino-light 服务端如何处理客户端新建连接 Netty 服务端完全启动后&#xff0c;就可以对外工作了。接下来 Netty 服务端是如何处理客户端新建连接的呢&#xff1f; 主要分为四步&#xff1a; md Boss NioEventLoop 线程轮询客户端新连接 OP_ACCEPT 事件&#xff…

分享图片 | 快速浏览网页资源,批量保存、一键分享图片

前言 小伙伴学习吉他&#xff0c;有时需要在互联网搜索曲谱资源&#xff0c;而多数曲谱均为图片&#xff0c;并且为多页&#xff0c;在电脑上显示练习很不方便&#xff0c;需要停下来点击鼠标进行翻页&#xff0c;影响练习的连贯性。 为了解决上述问题&#xff0c;通常把图片…

【数据分析入门】Jupyter Notebook

目录 一、保存/加载二、适用多种编程语言三、编写代码与文本3.1 编辑单元格3.2 插入单元格3.3 运行单元格3.4 查看单元格 四、Widgets五、帮助 Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 …

宇宙原理:黑洞基础。

宇宙原理&#xff1a;黑洞基础TOC 黑洞的数理基础&#xff1a;一个由满数组成的数盘&#xff0c;经过自然演进&#xff0c;将会逐步稀疏化、最终会向纯数方案发展&#xff1b;纯数方案虽然只有{2}、无数&#xff08;虚拟&#xff09;、{0,1,2,3}&#xff08;虚拟&#xff09;、…

jenkins同一jar包部署到多台服务器

文章目录 安装插件配置ssh服务构建完成后执行 没有部署过可以跟这个下面的步骤先部署一遍&#xff0c;我这篇主要讲jenkins同一jar包部署到多台服务器 【Jenkins】部署Springboot项目https://blog.csdn.net/qq_39017153/article/details/131901613 安装插件 Publish Over SSH 这…

量子非凡去广告接口

量子非凡去广告接口&#xff0c;免费发布&#xff0c;请各位正常调用&#xff0c;别恶意攻击 >>>https://videos.centos.chat/weisuan.php/?url

深入浅出带你玩转栈与队列——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 目录 1.栈 1.1栈的概念及结构 1.2栈的结构特征图 ​编辑 1.3栈的实现 1.3.1栈的初始化 1.3.2进栈 1.3.3出栈 1.3.4销毁内存 1.3.5判断栈是否为空 1.3.5栈底元素的读取 1.3.6栈中大小 1.4栈实现所有接口 2…

Python“牵手”拼多多商品评论数据采集方法,拼多多API申请步骤说明

拼多多平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;拼多多API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问拼多多平台的数据&#xff0c;包括商品信息、店铺信息、物流信息&#xff0c;评论数据等&a…