jjzjj

关于stable diffusion的embedding训练的一篇随笔

一只五等分的灰鸽子 2023-12-08 原文

前言

嗯,因为最近ai绘画很火啊,而且可以本地部署,很多人开始投喂ai然后画一些喜欢的东西,这是刚接触4天的笔记,那么我整理下目录,来展示一下这篇笔记都有什么吧。

1,绘画的关键词和反向关键词

2,调参,高清与面部修复

3,embedding模型的训练素材准备与原理建议

4,炼丹注意事项

那么首先来聊第一条

关键字:这个运行原理是根据一个大模型(下载之后的model),也就是你安装之后的大致这个路径下的文件,以.ckpt结尾

models\Stable-diffusion

你是可以通过C站来下载这些(需要魔法),C站本身并不是特别稳定,而且还有一些小bug,这边推荐小猫,不过你既然已经看到训练的篇幅了,那么说明你已经有些了解了,并且一般安装之后是会自带一个model的,所以不用担心。因为除非自带的有特别说明,否则不会对某类图片绘画有特殊偏向。比如我下了一个cat宠物猫模型,那么即使我输入的和猫无关词汇,仍会有关于猫的图片生成。
好了,现在我们聊一下关键词。字面意思,这个就是你希望ai画些什么,又不希望画什么,在没有一个很好地模型的初期,当然是越详细越好,你可以通过百度翻译或者CHATGPT的对话,来把你需要的关键字转换为英文,可以用","或者空格隔开。当然,你也可以用一些已经训练好的模型,从点击这里,我们可以在主页面上选取需要的下载好的模型。

再特别聊一下反向关键字,这个选词的时候一般很抽象,比如我想画一张景色图,那么正向关键词我可能会填:杰作,春天,湖畔,山边,蓝天(以上都需要英文)这一类的词。那么反向关键词我会填:低质量,模糊不清,这一类的词汇,因为在没有练出具体风格的时候,我们完全不了解会出现什么问题,把问题写在这一栏,就可以减少出现概率。
(不过这还是无法完全避免,比如初期我尝试画furry风格的图片,总是会出现3条以上的尾巴,即使我规定正向:一条尾巴;反向:尾巴超过一条,仍然可能会让ai理解错误,这类东西需要我们慢慢来。

第二条调参,面部与高清修复


可以看到东西很多,不过初期我们可以调动的参数一般是:
采样方法,采用迭代步数,面部修复,高清修复,高度宽度,提示词相关性,生成批次和数量。
采样方法可以凭自己喜欢来挑,采用迭代会增加你显卡的转速(不是),让你的出图质量提高,面部修复指的是,有时候你的绘画可能出现各种掉san的问题,比如没有鼻子,嘴歪眼斜,甚至有两张嘴,两个鼻子这一类问题,这个重绘幅度默认是0.7,我们一般不需要去调整这个属性,有条件的可以开启,会大幅缩短你炼丹准备时间。
高清修复顾名思义,就是更清晰,你可以选择不同的放大算法来让图片质量更高,不过过于手绘的个人建议不开,这个默认开启是两倍放大,并不会对画内容本身重绘。
批次和数量就是你希望画多少次,每次多少张,比如出去散步可以挂80-100张,回来之后就可以查看抽卡绘画的结果啦。相关性并不是越高越好,很多时候你并不知道自己想要什么,ai的一个错误理解有时会把你希望的画面提升不止一个层次,这有点像写了一个bug,但是这个bug没有显著危害,甚至有收益,那我们就用就好啦,需要自行斟酌,调高一点点或者保持现状。

素材准备与训练事项

首先,你已经准备要训练一个画风,那么你需要有至少50张图,这里要求画风相同,严禁混合,清晰度尽量一样,你可以用自己ai画的图来炼丹,这样可以很大程度减轻这个问题,我们可以在这个页面来做最开始的准备。

创建一个名称,初始化文字可以不填写,词元向量看自己需求,一般从7-16,大概是从ai画风练习到ai画师练习,画师练习指的是更加专一的一类,比如动物。画风没有这么苛刻,比如中世纪风,赛博风,这一类的。

图像预处理


一般来说按照这个页面填写就可以,原目录即是你自己打算训练的图库,目标目录需要你自己在桌面上或者某个位置新建一个空白文件夹,并把文件位置填写上,然后我们点预处理就好了。

炼丹事项:

1,炼丹对电脑配置要求很高,一般来说,不建议a卡,显存8g以下是练不了的,当然也有方法,不过麻烦就是了。
2,你并不需要一个100%训练的ai,反复跑画风并不一定会得到你满意的结果。

最后,炼丹开始


最大步数根据你自己需要。画风15000-18000差不多就行,画手3-4w差不多,数据集目录就是上文让你新建的文件夹目录,下面打钩按图走,其他所有参数都不需要改,然后点击左下角训练即可。然后你就可以挂机干别的去啦~比如补补番,玩玩手机,总之,训练会消耗非常大的资源和很长的时间,这个时间基本就告别电脑游戏了,消耗最高的一次是我跑的环境是15g显存,稳定占用14.7g。
最后,有刚研究的小白可以一起聊一聊,评论私信都可。

有关关于stable diffusion的embedding训练的一篇随笔的更多相关文章

  1. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  2. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  3. ruby - 关于 Ruby 中 Dir[] 和 File.join() 的混淆 - 2

    我在Ruby中遇到了一个关于Dir[]和File.join()的简单程序,blobs_dir='/path/to/dir'Dir[File.join(blobs_dir,"**","*")].eachdo|file|FileUtils.rm_rf(file)ifFile.symlink?(file)我有两个困惑:首先,File.join(@blobs_dir,"**","*")中的第二个和第三个参数是什么意思?其次,Dir[]在Ruby中有什么用?我只知道它等价于Dir.glob(),但是,我对Dir.glob()确实不是很清楚。 最佳答案

  4. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  5. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

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

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

  7. ruby - 关于 Ruby/ChefSpec 编码风格的反馈 - 2

    我是Ruby的新手,但过去两周我一直在对Chef测试进行大量研究。该测试使用ChefSpec和Fauxhai,但它看起来不是很“像ruby”,我希望社区能给我一些编码风格的建议。有没有更好的方法来编写这样的嵌套循环?Recipe/foo/recipes/default.rbpackage"foo"doaction:installendRecipe/foo/spec/default_spec.rbrequire'chefspec'describe'foo::default'doplatforms={"debian"=>['6.0.5'],"ubuntu"=>['12.04','10.04

  8. 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,

  9. ruby - 关于 ruby​​ 类变量的困惑 - 2

    假设一个使用类变量的简单ruby​​程序,classHolder@@var=99defHolder.var=(val)@@var=valenddefvar@@varendend@@var="toplevelvariable"a=Holder.newputsa.var我猜结果应该是99,但输出不是99。我想知道为什么。由于类变量的范围是类,我假设@@var="toplevelvariable"行不会影响类中的变量。 最佳答案 @@var是Holder的类变量。而顶层的@@var不是Holder的同名类变量@@var,是你在创建类Obj

  10. 一文解决关于VLAN所有的疑惑 - 2

    一文解决关于VLAN所有的疑惑VLAN基本概念为什么需要VLAN?怎么在交换机上划分VLAN,VLAN的工作原理有了子网,已经隔离了广播,还需要VLAN干啥?只进行子网划分,不进行VLAN划分VLAN划分与子网划分附加VLAN信息的方法VLAN划分交换机的端口类型(Access和Trunk)一、访问链接二、汇聚链接汇聚链接VLAN间通信为什么要进行VLAN间通信?路由器实现VLAN间通信路由器和交换机的连接方式通信细节三层交换机实现VLAN间通信加速VLAN间通信三层交换机与路由器三层交换机路由器路由器和交换机配合构建LAN的实例使用VLAN设计局域网的特点VLAN增加网络的灵活性不使用VLA

随机推荐