基于云服务器使用DreamBooth训练主体

资源整理

参考教程:StableDiffusion/NAI DreamBooth自训练全教程 - 知乎 (zhihu.com)

云服务器平台:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL

镜像链接:CrazyBoyM/dreambooth-for-diffusion/dreambooth-for-diffusion、

代码仓库:CrazyBoyM/dreambooth-for-diffusion: AIGC模型训练工具箱 (完整封装、一体化训练stable diffusion, 可训练定制自己的独特大模型风格、人物,开箱即用,内含详细教程)


话不多说,结合我看的教程,对我自己的训练过程进行一个具体的记录。

环境搭建

根据我之前的文章《云服务器平台AutoDL--基本介绍与使用感受-CSDN博客》,无需自己搭建环境,直接在AutoDL平台选择一个3090机器拉取镜像,镜像链接(其中包含如何使用的视频教程)如下:CrazyBoyM/dreambooth-for-diffusion/dreambooth-for-diffusion: 首个完整封装、一体化训练stable diffusion dreambooth的镜像环境,可训练定制自己的独特大模型风格、人物,开箱即用,内含详细教程。 - CG (codewithgpu.com)

创建的实例如下:

(因为我训练了几次,每次的参数、训练内容都不太一样,为了保留过程,我分开在多个机器上进行了训练,所以有好几个实例)

其中每个服务器实例的具体配置如下:

图中的实例根据需求对数据盘进行了150GB的扩容

在上述镜像中,已经直接将所有需要使用的命令写在了文件夹下的“运行.ipynb”文件中。

一些基本的操作(文件夹位置的移动、工作路径的切换...)在这个.ipynb文件中已经描述的很清楚了,本文不再赘述。

根据教程所述,在拉取的镜像中已经包含了两个官方提供的模型,如下图所示。

其中,nd_lastest.ckpt用于二次元图像训练,v1-5-pruned.ckpt用于三次元图像(偏写实风格)训练。

虽然但是,在我拉取的镜像中并没有用于三次元训练的模型文件,然后我又去hugging face上进行了下载和上传。

下载地址:runwayml/stable-diffusion-v1-5 at main (huggingface.co)

这个写实风格的模型文件因为参数比较丰富,因此较大,一共有7.7G,上传起来比较缓慢。

hugging face似乎是有着大用处的,以后有时间一定好好研究一下!

基于此,我分别进行了二次元图像和三次元图像的训练,接下来分别进行讲解。

二次元图像训练

数据集准备

互联网图像搜集,这里就使用了比较可爱的海绵宝宝形象。

使用镜像中提供的程序将图像剪裁成512*512的大小。

模型文件转换

转换ckpt检查点文件为diffusers官方权重,转换二次元风格模型:

!python tools/ckpt2diffusers.py \
    --checkpoint_path=./ckpt_models/nd_lastest.ckpt \
    --dump_path=./model \
    --vae_path=./ckpt_models/animevae.pt \
    --original_config_file=./ckpt_models/model.yaml \
    --scheduler_type="ddim"

运行效果如下图所示。

训练过程

二次元图像在开始训练前需要给图片加上描述,具体过程参考.ipynb文件。

修改train_object.sh文件中的相关设置,修改的部分如下图所示。

然后运行该文件。

!sh train_object.sh

中间过程命令行输出如下图所示。

训练到最后的命令行输出如图所示。从图中可以看出训练2000步只需要20min不到的时间,并且最终的训练用时18:42和一开始预估的17:37来去不大。

图像生成

修改test_model.py文件,主要将调用路径改为训练好的模型,然后结合实际生成效果,调整提示词、生成步数、每次生成的张数。

运行test_model.py

!python test_model.py

几个生成的结果如图所示。

Prompt: a photo of spongebob_squarePants, dark background, look ahead

Prompt: a photo of spongebob_squarePants, white background, sad

三次元图像训练

数据集准备

我在网上又搜集了霉霉的图片,然后准备代入模型训练。

还是通过tools/handle_images.py将搜集到的图像裁剪成512*512的大小。这里我没有再另外将图像下载到本地进行显示。

模型文件转换

这次转换的是v1-5-pruned.ckpt模型文件。

!python tools/ckpt2diffusers.py \
    --checkpoint_path=./ckpt_models/v1-5-pruned.ckpt \
    --dump_path=./model \
    --original_config_file=./ckpt_models/model.yaml \
    --scheduler_type="ddim"

训练过程

修改模型的输入输出文件夹,修改相关的prompt,这次我将训练的总步数设置为10000步,每1000步进行一次模型保存,具体的训练过程如下:

图片多了之后这里的预生成似乎也慢了很多。

 从图中可以看出10000步的训练时间大概在1.5h左右。

这里需要注意的是,如果中间过程保存的模型较多(比如500步保存一次)可能会使免费的50GB数据盘跑爆,请根据实际需求进行扩容或调整模型保存的间隔步数。

另一个需要注意的问题是,扩容之后我虽然没有跑爆数据盘,但是我确实没有拿到第10000步的训练模型,训练过程中我离开了,等我离开足够长的时间再回来,发现.ipynb中运行的cell卡住了,没有报错也没有再继续输出了,查看模型文件夹,也是空的,但是第9000步的训练模型确实是完成了,时间有限,我也没再跑了。

图像生成

这里的prompt在开头都是与训练时相同的a photo of <taylor> person,后面跟的提示词分别是in white/pink/blue dress,设置的生成步数为30,最终生成的图像如下:

这是每次生成三张,生成几次之后挑选出来的比较好的结果。这里使用的模型基本是第2000/3000步训练时保存的模型。

说句题外话:从PPT复制时同时选中三张图片,粘贴过来就自动合成了一张,布局与PPT中一致,以后可以用于并列放图。

至此我的所有复现过程全部讲解完毕。

反思

最终训练后的模型生成图像的效果不是太好,经过分析后可能的原因如下:

1. 训练步数过长可能过拟合,过短可能学习不充分;

最终展示的结果并没有使用最终的训练模型,使用9000步存下来的模型效果也就那样,对比2000/3000步出来的结果并没有明显的优越性,训练时长上去了GPU还要花更多的钱。

2. 训练输入图像3-5张就够了;

训练效果的好坏似乎与输入图像的张数多少没有直接关系。

3. 训练时的相关参数未调试。

由于我并不研究图像方面,对于相关参数调整会带来的效果并不清楚,时间有限,也没有进行深入研究。

其他的资源

有机会可以再看下(其实我也不懂为什么他训练出来的效果就这么好呜呜呜)。

runwayml/stable-diffusion: Latent Text-to-Image Diffusion (github.com)

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

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

相关文章

[Linux]vsftp配置大全---超完整版

[Linux]vsftp配置大全---超完整版 以下文章介绍Liunx 环境下vsftpd的三种实现方法 一、前言 Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的FTP服务器&#xff0c;目前已经被许多大型站点所采用&#xff0c;如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。…

Ubuntu20.04 Mysql基本操作知识

#Mysql基本知识 运行环境Ubuntu20.04 1.开启mysql服务 sytemctl start mysql不然&#xff0c;命令行进入myql交互行提交命令后&#xff0c;就会出现4200错误。 2.显示所有数据库 SHOW DATABASES;注意复数s&#xff0c;毕竟很多数据库 3.新建数据库test CREATE DATABASE …

推理和行动协同(Reason and Act,ReAct)和代码生成

文心一言 当我们将“推理和行动协同&#xff08;Reason and Act&#xff0c;ReAct&#xff09;”的概念应用于代码生成时&#xff0c;我们可以理解为一种指导原则或方法论&#xff0c;它强调了在代码生成过程中进行深思熟虑的决策&#xff08;Reason&#xff09;和有效执行&am…

Python | Leetcode Python题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution:def maxProfit(self, prices: List[int]) -> int:n len(prices)buy1 buy2 -prices[0]sell1 sell2 0for i in range(1, n):buy1 max(buy1, -prices[i])sell1 max(sell1, buy1 prices[i])buy2 max(buy2, sell1 - …

C#WPF数字大屏项目实战01--开发环境与项目创建

1、学习目标 -界面布局 &#xff0c;- 模板调整&#xff0c;- 控件封装&#xff0c;- 图表&#xff0c;- 通信对接&#xff0c;- 动态更新 2、开发环境 开发工具&#xff1a;Visual Studio-2022-17.8.6-Community 运行时框架&#xff1a;.Net 6或Framework 4.5以上 UI框…

链表(2)反转链表

题目描述 反转一个单链表。&#xff08;题目来源&#xff09; 思路一 其实&#xff0c;反转一个单向链表&#xff0c;我们可以看成是将链表中的每个结点的指向反向&#xff08;即从后一个结点指向前一个结点&#xff09;。 我们在考虑情况的时候&#xff0c;还是可以先考虑一般…

【环境栏Composer】Composer常见问题(持续更新)

1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…

在龙芯安装docker compose

安装过程报错&#xff1a;pynacl无法安装 原因&#xff1a;未知 解决尝试&#xff1a;单独安装pynacl 执行&#xff1a;pip install pynacl 报错&#xff1a; 再次执行dockerscompose撒谎啥 少了头文件 dev&#xff0c;表示c编译器有问题 python是c编写的 喵的 搞了半天是我…

github有趣项目:Verilog在线仿真( DigitalJS+edaplayground)

DigitalJS https://github.com/tilk/digitaljs这个项目是一个用Javascript实现的数字电路模拟器。 它旨在模拟由硬件设计工具合成的电路 像 Yosys&#xff08;这里是 Github 存储库&#xff09;&#xff0c;它有一个配套项目 yosys2digitaljs&#xff0c;它可以转换 Yosys 将文…

独立开发的轻量级简洁开源论坛BBS PHP源码

最新的轻量级开源论坛php源码发布啦&#xff01;这是一款独立开发的论坛系统&#xff0c;可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者&#xff0c;这款论坛系统非常适合你入门学习。不过&#xff0c;需要注意的是&#xff0c;由于它并没有进行商业化改造&#xf…

mysql定时备份数据库

一、使用navicat进行自动备份 1、选择自动运行&#xff1b;2、创建批处理作业&#xff1b;3、选中需要操作的数据库&#xff1b;4、保存&#xff1b; 1、设置任务计划&#xff1b;2、新建触发器&#xff1b;3、选择执行时间&#xff1b; 完成这些之后&#xff0c;就可以了。 my…

Nginx一个端口代理多个vue项目,通过不同路由转到不同系统,反向代理Apache进行文件处理

需求&#xff1a;由于一些因素限制&#xff0c;需要尽可能的少开放外部端口访问&#xff0c;这里将多个vue项目通过一个nginx端口进行代理&#xff0c;由不同的路由来确定访问哪些项目&#xff0c;apache同理 nginx代理多个vue项目 安装和配置nginx的基础教程这里就不写了&…

C++ | Leetcode C++题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 max(buy1, -prices[i]);sell1 max(…

【开源】在线考试系统 JAVA+Vue.js+SpringBoot 新手入门项目

目录 一、项目介绍 二、项目截图 三、核心代码 【开源】在线考试系统 JAVAVue.jsSpringBoot 新手入门项目 一、项目介绍 经典老框架SSM打造入门项目《在线考试系统》&#xff0c;包括班级模块、教师学生模块、试卷模块、试题模块、考试模块、考试回顾模块&#xff0c;项目编…

同济大学胡维老师分享经管科研范式变革下的工具与实践|和鲸社区“101数智领航计划”

5月22日&#xff0c;和鲸科技成功举办“101数智领航计划”系列直播活动&#xff0c;以“经管科研范式变革下的工具与实践”为主题&#xff0c;探讨数智时代人工智能技术对于经管领域学术研究与实践应用的影响。 活动特邀同济大学经济与管理学院助理研究员胡维老师担任主讲嘉宾…

第八十九周周报

学习目标&#xff1a; 论文 学习时间&#xff1a; 2024.05.25-2024.05.31 学习产出&#xff1a; 一、论文 SAN: INDUCING METRIZABILITY OF GAN WITH DISCRIMINATIVE NORMALIZED LINEAR LAYER 将GAN与切片最优输运联系起来&#xff0c;提出满足方向最优性、可分离性和单射…

医院内跌倒的预测模型构建(Boruta+lightgbm+DCA分析)

医院内跌倒的预测模型构建&#xff08;BorutalightgbmDCA分析&#xff09; 跌倒有时候是很严重的事情&#xff0c;常常听说骨质疏松的老年人跌倒后造成髋骨骨折&#xff0c;导致长期卧床&#xff0c;进而导致肌肉萎缩、肺炎等等并发症&#xff0c;最终导致不良预后。医院内的跌…

【Nacos源码分析01-服务注册与集群间数据是同步】

文章目录 了解CAPBASE理论Nacos支持CP还是AP集群数据同步实现集群数据一致性源码 了解CAP CAP理论的核心观点是&#xff0c;一个分布式系统无法同时完全满足一致性、可用性和分区容错性这三个特性。具体而言&#xff0c;当发生网络分区时&#xff0c;系统必须在一致性和可用性之…

JavaSE:SE知识整体总结

1、引言 历时一个多月的学习&#xff0c;已经掌握了JavaSE的知识&#xff0c;这篇博客就来做一下SE知识的总结~ 2、数据类型和变量 Java中的数据类型分为基本数据类型和引用数据类型。 2.1 基本数据类型 基本数据类型共有四类八种&#xff1a; 四类&#xff1a;整形、浮点…

​​​​​​​Beyond Compare 3密钥被撤销的解决办法

首先&#xff0c;BCompare3的链接如下 链接&#xff1a;https://pan.baidu.com/s/1vuSxY0cVQCt0-8CpFzUhvg 提取码&#xff1a;8888 --来自百度网盘超级会员V7的分享 1.问题现象 激活之后在使用过程中有时候会出现密钥被撤销的警告&#xff0c;而且该工具无法使用&#xff…