Stable-Diffusion 初体验

发布时间 2023-07-12 14:51:03作者: ZzTzZ

Stable-Diffusion 初体验

入门以及插件的安装

首先是艰难的配置环境,用pycharm连接上了公司的服务器...

由猫仙人老师指导出来的第一张图...

beauty,naked

之后对于一些参数该如何调整十分的好奇,于是上网搜索,发现了一位up讲解入门stable-difussion的教学,个人感觉从插件等内容都不错

靠谱的轩轩的个人空间_哔哩哔哩_bilibili


学习了关于插件的内容,于是尝试装入第一个插件, sd-webui-controlnet

点开网页之后...果然超时了,发现如果打开代理就无法访问本地,不开代理就无法下载插件

于是选择从网页下载,之后上传到服务器

下载后解压到本地的extension文件夹内,随后通过ssh同步到远程

在本机跑起来之后...

image

我们尝试打开网页看一下自己安装的插件

image

可以看到安装成功了!

模型切换

模型在很大程度上影响了Stable-Diifusion的训练结果,包括画风等。

所以更换模型是必须的!!

模型的尾缀应该是skpt和safetensors,大小通常为GB级别,存储在model/Stable-diifusion内

下载模型可以找 Civitai (C站)

  • 可以看到预览图
  • 可以分类
  • 可以点击别人生成的图片右下角的小按钮来看到图片的效果以及训练参数(咒语)

VAE(变分自编码器)

作用

  • 滤镜
  • 微调

示例:

image

很多大模型已经自带VAE了!

下载的VAE放在models/VAE内

  • 但一般C站收录的vae较少
  • 一般从 Hugging Face下载

默认的stable-diifusion-webui 是没有显示VAE的设置部分的,所以需要在Setting-User interface - Quicksetting list 里面添加入一条新的sd_vae,CLIP_stop_at_last_layers,最后点击Apply settings ,随后Reload UI

image

embedding

  • 又名textual inversion即,嵌入or文本反转
  • 作用为“提示词打包”

比如想要生成一个“游戏角色”,比如“道诡异仙里的李火旺”,可能需要上万个词才能生成一个理想中的角色,而我们用了embedding之后,可能有上百个词就被一个词代替了

embedding做到了“用极少的词汇,来大大提升训练的效率(从人类角度)”

  • embedding也可以用来生成特定的动作或特征,或者特定的画风
  • 主要在Civitai下载,在标签里看“textual inversion”

embedding 一般放在 embeddings/ 文件夹内

使用embedding: 在ui点击如下的红色按钮

image

Lora 相关知识

Lora,全称为 Low-Rank Adaptation of Large Language Models,大语言模型的低阶适应,用于大语言模型的微调工作

  • 只要挂载了Lora,就可以极大程度地模仿人物的状态,画风,动作特征等!
    • 其实只要是图像风格就可以
  • 要有版权意识!不能随便用来做奇怪的事情!

Lora和embedding的区别在哪呢?

  • embedding本质上是一些提示词的集合,但是一些比如“生成三视图”一类的“功能型”提示词,只有embedding能做

  • 而Lora类似于一个模型的模板,文件大小更大一些,对于画风的学习,对于动作的学习,对于人物的模仿都非常有效!

  • 一般优先选择Lora

Lora一般放在models/Lora里面

Lora一般都是和模型相对应的,下载Lora之前,记得查看相对应的模型在哪里!用错了模型可能效果不太好

使用Lora同时也是点击红色的部分

image

使用了一个机甲Lora,效果如下:

image

为什么安装之后和使用效果差了很多呢?:

  • 一般选择和Lora配套的大模型

  • 使用和作者相同的参数,比如:正面提示词,负面提示词,模型,采样器,CFG(提示词相关性),step 【要注意Lora的文件名!】

  • 正确设置Lora的使用权重,lora的组成基本由 < Lora提示词 : Lora文件名 : Lora使用权重 >组成,比如 <lora:MechaMusumeREN:0.8>,

    • Lora的权重最好不要设置到1以上
    • 尽量设置在0.8-0.9之间,效果会很好
  • 在提示词中加入触发词(trigger words)

  • 尽量不要混用多个Lora,只有非常成熟的训练者才能很好地学习Lora 需要学习Lora的基本原理,对于十几个层每一个层单独调节参数

Hypernetwork 超网络

  • 主要用来训练画风,有可能未来会被Lora替代
  • 目前来说可以快速地把画风转变为表情包,转变为像素风。
  • 在模仿人物上,做的效果可能不如Lora

下载好之后,放入 models/hypernetworks内,同样地,像Lora等一样,同样点击红色的标记选择hypernetwork

  • hypernetwork的使用也记得控制权重。但是Hypernetwork的权重往往不像lora一样固定,需要前后反复调试
  • 最好使用和超网络配套的大模型
  • 最好使用作者的参数
  • 加入触发词
  • 不要混用多个Hypernetwork

模型的分类与解析

推荐使用工具:Stable Diffusion 法术解析 (novelai.dev)

会把模型的种类和应该放置的位置告知出来

模型的尾缀代表了什么?

  • 不能用模型的尾缀来确认模型类型
  • 不论是什么后缀,基本都可以用压缩文件打开(safetensors也可以在webui里转化为ckpt),打开后发现结构都一样

为什么模型这么多复杂的分类?为什么有这么多相似的功能?

  • 因为Stable-Diifusion这个大模型本身的训练成本太高了,需要将近千万级别的成本,不是随便谁都弄的起的
  • 而大模型训练出来之后也没那么好用,但是我们可以对于大模型的每一个参数进行微调,调整这些参数的成本比较低,个人商用级别的显卡就能完成,于是就有了checkpoint
  • 但是checkpoint使用起来不灵活,动辄好几个G的参数,也很大,于是后来就有了embedding,很小,只需要对于提示词打包,即插即用,训练成本很低
  • 但是embedding有时候效果不太好,但是后来慢慢出现了Lora,Hypernetwork之类的,都是2023年4月左右产生的,突然就爆火了