随心玩玩(十三)Stable Diffusion初窥门径

写在前面:时代在进步,技术在进步,赶紧跑来玩玩


文章目录

  • 简介
  • 配置要求
  • 安装部署
  • 下载模型
  • 启动ui
  • 插件安装教程
  • 分区提示词插件
  • Adetailer插件
  • 提示词的分步采样
  • 采样器选择
    • 采样器的收敛性
    • UniPC采样器
  • 高分辨率修复 (Hires. fix)
  • 图生图
  • ControlNet
    • 介绍
    • 控制类型
      • 线稿类型
      • 结构类型
      • 参考类型
      • 重绘类型
    • 总结

简介

Stable Diffusion是一种人工智能(AI)模型,可以根据训练数据创建图像。
Stable Diffusion使用的是一种称为潜在扩散模型(LDM)的东西。
Stable Diffusion用于根据文本提示生成图像,并使用修复和外部绘制的过程改变现有的图像。

参考资料1:
https://www.lifewire.com/what-is-stable-diffusion-7485593
参考资料2:
https://en.wikipedia.org/wiki/Stable_Diffusion
参考资料3:
https://stablediffusionweb.com/

不想写的太长,更详细的介绍请查看参考资料

配置要求

显存 > 6G
内存 > 16G

安装部署

参考资料:
https://github.com/AUTOMATIC1111/stable-diffusion-webui
可以看这个视频:
https://www.bilibili.com/video/BV1gj411R7eQ/

先创建一个环境
conda create --name light python=3.9

然后git clone安装WebUI项目或者下载压缩包,下载慢的话可以使用代理:https://mirror.ghproxy.com/
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
或者国内用代理下载更快
git clone https://mirror.ghproxy.com//https://github.com/AUTOMATIC1111/stable-diffusion-webui

等待WebUI项目下载完成
在这里插入图片描述

回到conda环境,
首先,我们需要先安装torch,因为torch默认是装最新的版本不支持我们的CUDA11.7
可以到这个网站https://pytorch.org/get-started/previous-versions/,CTRL+F搜索CUDA 11/12找自己版本对应的pytorch安装pytorch

以我的CUDA 11.7为例子,pip进行安装:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装python lighting,==后填上自己的版本号,因为我上面pytorch装的2.0.1,所以我pytorch-lightning也装2.0.1
pip install pytorch-lightning==2.0.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
提前安装opencv库,这些都是踩了无数坑后才知道的…
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
安装scipy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
清华源没有tb_nightly,切换阿里云
pip install tb_nightly -i https://mirrors.aliyun.com/pypi/simple

下载完后进入项目主目录,安装requirements_versions.txt
pip install -r requirements_versions.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
这可能会将花费比较长时间…

下载模型

https://www.liblib.art/下一个自己喜欢的,注意的是需要下载checkpoint类型模型
全部类型,选择checkpoint
在这里插入图片描述

我下载的是lu简笔画风卡通模型_v2.safetensors,大家可以找自己喜欢的,然后把这个文件复制到项目主目录下的models/Stable-diffusion文件夹里
在这里插入图片描述
注意这里可能会出现中文乱码的问题,是linux操作系统的问题…很坑
因此,我在服务器上用mv重新命名了一下这个文件名成中文的:
mv lu.safetensors lu简笔画风卡通模型_v2.safetensors

下面是模型推荐

https://huggingface.co/gsdf/Counterfeit-V2.5
配合EasyNegative使用,上面的萝姬就是用这个模型,很好看,tag写起来也简单。

https://huggingface.co/andite/anything-v4.0
祖师爷,出图质量稳定,插图风格很不错。

https://huggingface.co/datasets/gsdf/EasyNegative
用这个负面tag就可以写很简单了。

https://huggingface.co/TASUKU2023/Chilloutmix
真人模型,不过我没怎么用过,还是喜欢二次元的图,不过之后可能研究配合Lora玩赛博COS。

来源: https://www.bilibili.com/read/cv21987039/

启动ui

启动UI还要远程安装一些文件,
因为我们连不上github,因此我们需要修改一下配置文件,如果你们能连上github就跳过这步:

需要修改的下载github路径配置文件在:
stable-diffusion-webui/modules/launch_utils.py

我们去编辑一下launch_utils.py,推荐先在本地编辑在传会服务器
或者大佬直接用vim
vim modules/launch_utils.py

搜索prepare_environment
在https://github.com开头的网址前面都加上代理网址
https://mirror.ghproxy.com,推荐使用ctrl+r替换
"https://github.com 替换成"https://mirror.ghproxy.com/https://github.com
'https://github.com 替换成'https://mirror.ghproxy.com/https://github.com

注意:这个文件可能会随项目后续更新,所以可能不一定是一样的,各位只能自行判断了。
在这里插入图片描述

我们可以看看webui.sh,根据提示,我们应该去webui-user.sh修改一下自己的配置

#!/usr/bin/env bash
#################################################
# Please do not make any changes to this file,  #
# change the variables in webui-user.sh instead #
#################################################

修改我自己的webui-user.sh,各位看者自行把握了,毕竟这是我的个人设置了…
重点是:修改python3 executable路径,改成刚刚安装的conda环境light

# python3 executable
python_cmd="/home/$(whoami)/anaconda3/envs/light/bin/python3"

添加执行权限
chmod +x webui.sh
在项目主目录用webui.sh启动
如果你的服务器不能开放端口,那么使用--listen
./webui.sh --listen --no-half --device-id 2
如果可以的话,使用--share
./webui.sh --share --no-half --device-id 2
--no-half表示不用半精度,防止出现黑图像
--device-id表示使用指定的GPU

等待安装下载,喝杯咖啡…
这里就会使用到之前配置的github链接进行下载文件在这里插入图片描述

然后等待模型加载
出现一个报错:
OSError: Can’t load tokenizer for ‘openai/clip-vit-large-patch14’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘openai/clip-vit-large-patch14’ is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.

解决方案见这篇:
https://blog.csdn.net/SuperB666/article/details/132826492
具体做法是先在这个镜像网站下载所有文件:
https://hf-mirror.com/openai/clip-vit-large-patch14/tree/main

又可以泡杯茶了…
同和解决方案的博客做法一样,创建stable-diffusion-webui/.cache/huggingface/transformers目录,把文件都丢上去
注意:.cache是创建隐藏目录
在这里插入图片描述
在两个文件各两处搜索:openai/clip-vit-large-patch14
改成stable-diffusion-webui/.cache/huggingface/transformers的绝对路径,
请自行参考解决方案博客。

这是那两个文件位置:
stable-diffusion-webui/repositories/generative-models/sgm/modules/encoders/modules.py
stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py

重新启动webui.sh
出现Model loaded in 21.8s (load weights from disk: 1.3s, create model: 0.6s, apply weights to model: 19.5s, calculate empty prompt: 0.2s).表明启动成功!

然后本地做个隧道
本机设置:
win+r开启cmd,
使用以下命令将本地端口与服务器端相映射:
ssh -L [本地端口]:localhost:[远程端口] [远程用户名]@[远程IP] -p [ssh连接端口]
例如:
ssh -L 7860:localhost:7860 root@172.31.224.191 -p 22
自行更改ip和用户名后,输入密码连接即可

本地访问127.0.0.1:7860
在这里插入图片描述

尝试生成一张图片,这个模型看了下显存卡2占用大概是8G左右,
注意:卡0需要有300M的空间预留,不然会OOM
在这里插入图片描述

插件安装教程

详细可见参考资料:https://www.bilibili.com/video/BV1Qw411N7uM(推荐观看)

注意:
受限于SD的安全策略 开启监听后默认不允许安装插件
解决办法是在webui-user.sh 的export COMMANDLINE_ARGS 参数中增以下参数
–enable-insecure-extension-access
参考资料:https://zhuanlan.zhihu.com/p/640499741

# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --enable-insecure-extension-access"

点击extensions-》available
url换成镜像:https://mirror.ghproxy.com/https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json
点击load from,去掉location,搜索hans,找到zh_Hans Localization
对需要的插件点击install即可,这里我们安装中文汉化
在这里插入图片描述

安装好后,去到setting,点击apply setting,最后点击reload UI
在这里插入图片描述
再去到setting,找到user interface,到localization选择zh-hans插件,在apply后再重启一边UI
在这里插入图片描述

第二种方式使用从url下载,同样的也是安装好后apply setting再reload UI即可
https://github.com/canisminor1990/sd-webui-lobe-theme.git
这里只为了演示,大家仍就可以从安装列表搜索的方式安装
注意:如果因为网络问题安装不了,可以使用代理哦~
https://mirror.ghproxy.com/https://github.com/canisminor1990/sd-webui-lobe-theme.git
在这里插入图片描述

最后我们尝试增加两个功能参数在UI,在setting找到user interface,
在这里插入图片描述
添加sd_vae和clip_stop_at_last_layers,重启UI
在这里插入图片描述

最后设置成功:
在这里插入图片描述

分区提示词插件

参考资料:https://www.bilibili.com/video/BV1Fa4y1S7bS/

安装regional prompter
在这里插入图片描述
如果网络不好出现:
fatal: unable to access ‘https://github.com/hako-mikan/sd-webui-regional-prompter.git/’: GnuTLS recv error (-110): The TLS connection was non-properly terminated.

那么可以用URL镜像下载:
https://mirror.ghproxy.com/https://github.com/hako-mikan/sd-webui-regional-prompter.git

重启UI,出现regional prompter表示安装成功
在这里插入图片描述

打开regional prompter,勾选启用

我发现效果不是很好…我决定换个checkpoint,我下了_GhostInShell_大佬的模型试试,同时查看一下regional prompter更多的教程

参考资料:https://zhuanlan.zhihu.com/p/632947775

关键点:
勾选使用常见提示词,提示词的开头加上公共提示词:

公共提示词
BREAK
区域 0 的提示词
BREAK
区域 1 的提示词

上面我们就有三个提示词:(1)公共提示词;(2) 区域 0 的提示词;(3)区域 1 的提示词。公共提示词会被添加到每个区域的提示词开头。

这是我的例子:

two girl 
BREAK
a girl with green hair,red eyes
BREAK
a girl with black hair,green eyes

在这里插入图片描述

regional prompter的设置
在这里插入图片描述
这时候我想画三个人…
那么可以改分割比率为1,1,1

three girl 
BREAK
a girl,green hair,
BREAK
a girl,black hair
BREAK
a girl,white hair

在这里插入图片描述

总结:
在安装和使用regional prompter时遇到了一些问题。

网络问题可以尝试使用URL镜像下载。

效果不佳的问题,可以尝试更多的模型。

可以查看更多regional prompter的教程,也许有一些技巧可以提高效果,

比如在提示词的开头加上公共提示词以及区域的提示词。

Adetailer插件

Adetailer是人脸重绘修复插件,会自动检测人类生成蒙版进行重绘

官网:https://github.com/Bing-su/adetailer

输入https://github.com/Bing-su/adetailer.git进行安装

也可以通过直接从“扩展”选项卡安装它
在这里插入图片描述
选择启用

感觉效果一般…

提示词的分步采样

语法:
[物体1:物体2:介入时机]

决定主框架的物体放在前面,而汲取主特征的物体放在后面,介入时机是0到1之间的小数,表示从百分之多少开始介入

先抽卡-》确定种子-》设置介入参数

一般从0.3开始尝试,提前介入0.2会太早

物体2可以采用1.5倍强调

推荐流程:抽卡-》固定种子-》设置参数[物体1:(物体2:1.x):0.3] -》设置参数[物体1:(物体2:1.x):0.x]

采样器选择

参考资料:https://www.bilibili.com/video/BV1FN411i7sB/ (Stable diffusion采样器全解析,30种采样算法教程,推荐观看)
在这里插入图片描述
图片来源:https://www.bilibili.com/opus/838501405743382562

采样器的收敛性

如SDE不收敛采样器,收敛性并非一成不变,ETA参数即噪声倍率值,控制添加噪声的强度,进而控制发散程度,甚至可以完全关闭,在设置中找到采样方法Eta系数:

在这里插入图片描述

可以将这个参数添加到快捷键:
在这里插入图片描述
选择2M SDE Karras采样器做实验
在这里插入图片描述

使用脚本,画XYZ plot
在这里插入图片描述
ETA为1时不收敛,ETA为0有收敛趋势
在这里插入图片描述

UniPC采样器

优势:最新采样器,低步数快速出图

参数有:
UniPC variant
UniPC skip type
UniPC order
UniPC lower order final

将这4个参数添加到快捷菜单中:
在这里插入图片描述
首先是变体,有三个,当步骤 < 10 时,建议使用 bh1 进行无条件采样,否则使用 bh2。
什么是无条件采样,那就无任何提示词
solver_type (str, default bh2) — Solver type for UniPC. It is recommended to use bh1 for unconditional sampling when steps < 10, and bh2 otherwise.
参考资料:https://huggingface.co/docs/diffusers/main/en/api/schedulers/unipc
我们使用uniPC时候,应该使用bh2,cfg值适当降低至3~4
在这里插入图片描述

第二参数,UniPC skip type:
>51*512选 time_uniform
<512*512选logSNR
两者都不行,请尝试time_quadratic
选择time_uniform即可,因为大部分场景不会涉及小于512的情况

在这里插入图片描述

第三个参数,UniPC order
这个值我们需要微调
生成器会先生成高阶特征,再生成低阶特征
高阶特征:图像中具有较高层次结构的特征,如场景,体型,信号处理中的低频部分,可以理解成高斯模糊后图片的大光影结构
低阶特征:图像中具有较低层次结构的特征,如边缘,纹理,信号处理中的高频部分
低阶步数就是生成低阶特征的步数,一般不会设置太大,1~3之间就行
官网建议:solver_order (int, default 2) — The UniPC order which can be any positive integer. The effective order of accuracy is solver_order + 1 due to the UniC. It is recommended to use solver_order=2 for guided sampling, and solver_order=3 for unconditional sampling.

solver_order (int, 默认值 2) — UniPC 顺序,可以是任何正整数。由于 UniC 的原因,有效精度顺序为 solver_order + 1。建议使用 solver_order=2 进行引导采样,使用 solver_order=3 进行无条件采样。

记住默认为有条件为2就好

其实可以按照画面需求进行设置,如果觉得画面太过平滑,可以设置成3,4…但是过高手部会出现奇怪细节

也就是步数越高,细节更多,越 不够唯美

在这里插入图片描述

第四个参数,UniPC lower order final保持勾选即可,不然会出现鬼图

高分辨率修复 (Hires. fix)

参考资料:https://medium.com/rendernet/using-hires-fix-to-upscale-your-stable-diffusion-images-8d8e2826593e

先生成低分辨率再超分

下面这几个比较常用:latent效果个人感觉不好
在这里插入图片描述

放大倍数,不要调太大会占不下显存
在这里插入图片描述

可以在 0–150 范围内设置 HiRes 步长
将其保持为 0 会使 HiRes 步骤 = 采样步骤
因此,如果您的采样步数为 20,而 HiRes 步数为 0,则总步数为 40。

选择正确的 HiRes 步数非常重要,因为将其设置得太低或太高都会使图像结果恶化。我们发现选择 10-15 个 一般效果较佳

但是,如果采样步数超过 50,那么最好将 HiRes 步数设置为采样步数的一半。

在这里插入图片描述

去噪,默认降噪强度为0.7。然而,在很多情况下,这往往过于强烈。
建议首先使用 0.3–0.5 之间的值,然后根据结果将其调高或调低

如果出现网络问题无法下载:Unable to load RealESRGAN model https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth

那么可以自行下载一下,根据提示丢到
stable-diffusion-webui/models/RealESRGAN/RealESRGAN_x4plus_anime_6B.pth

个人感觉比较占显存,放大2倍就要16G显存了。

图生图

图生图必装:Interrogate图像反推

下面是Interrogate模型:
https://github.com/AUTOMATIC1111/TorchDeepDanbooru/releases/download/v1/model-resnet_custom_v3.pt
放至stable-diffusion-webui/models/torch_deepdanbooru/

记得重启项目,上传图片,点击Interrogate(下图红色框框位置),自动填充prompt,然后点生成
当然可以自己调整一下参数
在这里插入图片描述

刚刚用的就是最基础的图生图,在原图上修改,如高清转化,图片放大等。下面介绍其他几个功能:

涂鸦模式,是在原图上进行简单的手绘,让AI完成润色

局部重绘,需要重绘的地方用画笔画出来,写好提示词

涂鸦重绘,类似局部重绘,会多考虑颜色

上传重绘蒙版,其实就是局部重绘

批处理,用的不多

参数调整:
重绘幅度,对原图的改造程度,大家可以0~1自己调整试试,取决于自己的需求
在这里插入图片描述
缩放图像
在这里插入图片描述
仅调整大小如果长宽比不一致会出现拉伸,那么可以选择裁剪后缩放,
缩放后填充空白,有点像重绘
潜空间放大,在潜空间进行,这时候要调高cfg

类似PS羽化效果,透明程度越高被影响越小
在这里插入图片描述
小幅修改使用原版
大幅修改,但又不想产生割裂,使用填充
更多的自由发挥空间,使用潜空间噪声或者空白潜空间,注意的是这里需要搭配较高cfg
在这里插入图片描述

重绘区域,仅蒙版区域下面的预留边缘像素才会生效
在这里插入图片描述

ControlNet

介绍

ControlNet是一种网络结构,通过添加额外控制条件,来控制出图效果。

参考资料:
https://github.com/Mikubill/sd-webui-controlnet(官网,适合高玩直接上手)
https://openai.wiki/controlnet-install.html(推荐新手照着做)
https://openai.wiki/controlnet-models-download.html (模型下载,当然我下面也提供百度盘)

首先安装ControlNet插件,然后下载模型:
打开“扩展”选项卡。
在选项卡中打开“从 URL 安装”选项卡。
输入https://github.com/Mikubill/sd-webui-controlnet.git
(下不动的话使用代理,https://mirror.ghproxy.com/https://github.com/Mikubill/sd-webui-controlnet.git
安装后等消息:已安装到 stable-diffusion-webui\extensions\sd-webui-controlnet。
切换到设置,应用并重新启动 UI
完全重新启动 webui,退出启动的应用,重新用webui.sh启动

重启提示:ControlNet init warning: Unable to install insightface automatically. Please try run pip install insightface manually.
手动安装pip install insightface即可,注意切换环境

目前ControlNet 1.1的所有14个模型都处于beta测试阶段。
从 ControlNet 1.1 下载模型:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
您需要下载以“.pth”结尾的模型文件。
将模型放入stable-diffusion-webui\extensions\sd-webui-controlnet\models中。只需要下载“pth”文件。
在这里插入图片描述

请勿右键单击 HuggingFace 网站中的文件名进行下载。一些用户右键单击这些 HuggingFace HTML 网站,并将这些 HTML 页面保存为 PTH/YAML 文件。他们没有下载正确的文件。请点击 HuggingFace 中的小下载箭头“↓”图标进行下载。

我提供了百度盘可以用百度盘下载,失效了记得踹我一脚
Sd15模型:
链接:https://pan.baidu.com/s/1f8Ya8mnD379yIb0uZCG75w?pwd=2jem
提取码:2jem
sdxl模型:
链接:https://pan.baidu.com/s/1z_TtoQ_EdQbL8YiumCns7Q?pwd=nip8
提取码:nip8
本地存放地址:[你安装sd的位置]/stable-diffusion-webui/extensions/sd-webui-controlnet/models

注意玩的模型目前主流的是SD1.5和SDXL,当然你可以选择你需要的模型进行下载,反正我是一股脑全扔上去了

像我现在用的鬼混模型就是SD1.5,但还是把SDXL装了(其实可以不装)
在这里插入图片描述

下面是SD1.5的ControlNet模型介绍,关于模型的描述为官方描述【机器翻译】,可供参考。

ControlNet/models/control_sd15_canny.pth

ControlNet+SD1.5 模型,用于使用精明边缘检测来控制 SD。
ControlNet/models/control_sd15_depth.pth

ControlNet+SD1.5模型使用Midas深度估计来控制SD。
ControlNet/models/control_sd15_hed.pth

ControlNet+SD1.5 型号使用 HED 边缘检测(软边缘)控制 SD。
ControlNet/models/control_sd15_mlsd.pth

ControlNet+SD1.5模型使用M-LSD线检测来控制SD(也可以与传统的Hough变换一起使用)。
ControlNet/models/control_sd15_normal.pth

ControlNet+SD1.5 模型使用法线贴图控制 SD。最好使用该 Gradio 应用程序生成的法线贴图。只要方向正确,其他法线贴图也可以工作(左边看红色,右边看蓝色,上看绿色,下看紫色)。
ControlNet/models/control_sd15_openpose.pth

ControlNet+SD1.5 模型,使用 OpenPose 姿势检测控制 SD。直接操纵姿势骨架也应该有效。
ControlNet/models/control_sd15_scribble.pth

ControlNet+SD1.5模型使用人类涂鸦控制SD。该模型使用边界边缘进行训练,具有非常强大的数据增强功能,以模拟类似于人类绘制的边界线。
ControlNet/models/control_sd15_seg.pth

ControlNet+SD1.5模型使用语义分割来控制SD。协议是ADE20k。
ControlNet/annotator/ckpts/body_pose_model.pth

第三方模型:Openpose的姿势检测模型。
ControlNet/annotator/ckpts/hand_pose_model.pth

第三方模型:Openpose的手部检测模型。
ControlNet/annotator/ckpts/dpt_hybrid-midas-501f0c75.pt

第三方模型:迈达斯深度估计模型。
ControlNet/annotator/ckpts/mlsd_large_512_fp32.pth

第三方模型:M-LSD检测模型。
ControlNet/annotator/ckpts/mlsd_tiny_512_fp32.pth

第三方模型:M-LSD的另一个较小的检测模型(我们不使用这个)。
ControlNet/annotator/ckpts/network-bsds500.pth

第三方模型:霍尔效应器件边界检测。
ControlNet/annotator/ckpts/upernet_global_small.pth

第三方模型:Uniformer 语义分割。

泡杯咖啡吧…少女下载中…

下载模型
将模型放入正确的文件夹后,您可能需要刷新才能看到模型。刷新按钮位于“模型”下拉列表的右侧。
我选择直接重启应用…

出现Warning问题:

Warning: ControlNet failed to sync submodules. Please try run `git submodule init` and `git submodule update` manually.

解决方案参考:https://github.com/Mikubill/sd-webui-controlnet/pull/2428
反正是warning,就不管了

下面是安装好了模型,下面从控制类型开始介绍吧

在这里插入图片描述

控制类型

控制类型用于固定画面的基本结构

注意:在使用的时候可能会下载额外的模型,大家自行下载放至指定的位置即可,比如:Downloading: “https://huggingface.co/lllyasviel/Annotators/resolve/main/res101.pth” to /home4/likeghee/work_place/sd/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/leres/res101.pth。那么就下载这个pth放到stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/leres下面即可

我们启controlnet,打开允许预览,勾选完美像素模式,不要勾选低显存模式,是用你的CPU来跑的
在这里插入图片描述

完美像素模式,1.1版本的新功能,作用是自动计算分辨率
在这里插入图片描述

线稿类型

那么一般的线稿类型有: Canny,软边缘,涂鸦,线稿,直线

选择Canny,点击下面的执行按钮,我们就可以在预处理结果预览看到结果
在这里插入图片描述
写上提示词,生成图片,你会发现生成的图片就固定了画面的基本结构
Canny是边缘检测算法,根据灰度梯度判断图片边缘,那么自然就有梯度阈值进行过滤,越低保留的线条越多。
实际使用还是靠感觉了

在这里插入图片描述
软边缘有四种提取算法,软边缘一般有过渡效果,没有那么锐利,具体作用不详
在这里插入图片描述
涂鸦,提取线稿比较粗糙,不常用
在这里插入图片描述

线稿,类似手绘的线稿,动漫类线稿比写实类线稿细节更少,按自己需求使用
在这里插入图片描述

直线,只提取直线,弯曲线条忽略,不适合人像图,适合建筑之类的
在这里插入图片描述

结构类型

深度,提取图片的深度来控制出图效果,越黑表示离我们越远,越白的部分离我们越近,不同算法提取的深度细节同,可以根据自己的需求选择
在这里插入图片描述

法线图,空间中平面方向的信息图,与深度图类似,用于传输图像中的空间的一个组成,会有不同颜色,其实就是颜色表示平面所对的那个方向,算法选用bae即可
在这里插入图片描述

姿态,控制人物面部和肢体动作的控制器,目前来看面部特征识别效果还不是不太行,要用的话直接选DW_openpose_full这个算法即可,使用了双向卷积处理图像,效果更好也更快
在这里插入图片描述

我们可以使用open pose editor来编辑骨骼,然后发送姿势回controlNet
在这里插入图片描述
语义分割,自动识别画面中的物体,并分割成不同的区域,然后用不同的颜色表示,一般情况下20K优于coco,这个数据集做CV的应该很熟悉了,COCO数据集数据种类不多,算法方面OneFormer更快更准确,直接用默认的即可。
在这里插入图片描述

参考类型

Reference控制器
用输入图片作为参考来控制AI出图的一种控制器,adain只会进行视觉分割迁移,only会迁移内容,adain+attn是二者的结合,可以理解为参考原始内容并且ai还会有一定程度的发挥
在这里插入图片描述
风格忠诚度参数可以调节,越大越忠于原图
在这里插入图片描述
个人觉得这个参考的控制还不太稳定

修订控制器

将上传图片作为条件作为输出,但是我们一般用咒语,这里提出了图片也能作为条件作为控制,建议直接使用作为补充
在这里插入图片描述
参数噪声增强,只有0和1选择有点类似ETA参数,可以理解成AI是否自我发挥

InstructP2P控制器
类似图生图,感觉作用不强

shuffle控制器
只是像素打乱,用于画风迁移,感觉作用不强

IP-Adapter控制器
类似修订,但是效果更好,推荐使用plus版本
在这里插入图片描述

重绘类型

局部重绘
图生图也有局部重绘,但是会出现画面撕裂扭曲,ctrlnet就是为了解决这个问题
可以选择only预处理器,第一个和第二个是一样的,
+lama会产生一个比较干净的画面,会用lama模型先对图像进行预处理
在这里插入图片描述

分块/模糊
分块就是先分割成若干块,并识别出每块信息,好处是分块处理减小硬件的压力。

如果提示词与某块中的对象匹配,就会不改变对象定义的情况下,生成新的细节,
如果提示词与某块中的对象不匹配,那就以对象为准,降低提示词的影响,
以此达到局部和全局的统一
在这里插入图片描述

重上色
给图片重上色彩风格,如老照片的上色

总结

介绍了这么多控制器,建议还是看看别人更多的成功案例,我这里并不深入,可能给不了太多的启发…

并且没有介绍组合单元用法,更多的功能就交给各位自行探索了…

在这里插入图片描述

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

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

相关文章

无需编程,简单易上手的家具小程序搭建方法分享

想要开设一家家具店的小程序吗&#xff1f;现在&#xff0c;我将为大家介绍如何使用乔拓云平台搭建一个家具小程序&#xff0c;帮助您方便快捷地开展线上家具销售业务。 第一步&#xff0c;登录乔拓云平台进入商城后台管理页面。 第二步&#xff0c;在乔拓云平台的后台管理页面…

一文彻底解析 Compose 的穿透刺客 -- CompositionLocal

Compose 官方说明一直很简洁&#xff1a;CompositionLocal 是通过组合隐式向下传递数据的工具。 两个核心&#xff1a;隐式、向下传递&#xff0c;咋一看很懵&#xff0c;先不着急去理解&#xff0c;我们先看一段非常简单的代码&#xff1a; class MainActivity : ComponentAc…

c语言for循环和水仙花

c语言for循环和水仙花 c语言for循环和水仙花 c语言for循环和水仙花一、for循环语句格式二、for循环案例水仙花 一、for循环语句格式 for(初始值&#xff1b;表达式&#xff1b;表达式) { 代码 }int main() {for (int i 0; i < 10; i){printf("%d\n", i);} }二、f…

Protobuf小记(万字)

Protobuf小记 序列化概念序列化和反序列化 ProtoBuf 初识快速上手通讯录 1.0通讯录 1.0 - 函数 API 小结 编译 contacts.proto 文件&#xff0c;生成 C 文件 proto 3 语法详解字段规则消息类型的定义与使用定义 通讯录 2.0通讯录 2.0 的写入实现通讯录 2.0 的输出实现通讯录 2.…

Java 线程

1. 实现多线程的 2 种方式 Oracle 官网的文档中给出了 2 种实现多线程的方式&#xff1a; 实现 Runnable 接口&#xff1b;继承 Thread 类。 以上两种方式都会调用 Thread.run() 方法&#xff0c;区别是&#xff1a; 实现 Runnable 接口&#xff0c;只是执行 Thread.run() …

数仓面试之手写拉链表SQL,并分析有多少个job

数仓面试之手写拉链表SQL&#xff0c;并分析有多少个job 拉链表定义 维护历史状态&#xff0c;以及最新状态数据的一种表&#xff0c;拉链表根据拉链粒度的不同&#xff0c;实际上相当于快照&#xff0c;只不过做了优化&#xff0c;去除了一部分不变的记录而已,通过拉链表可以…

Nginx——强化基础配置

1、牢记Context Context是Nginx中每条指令都会附带的信息&#xff0c;用来说明指令在哪个指令块中使用&#xff0c;可以将Context 理解为配置环境。 每个指令都拥有自己的配置环境&#xff0c;如果把配置环境记错了&#xff0c;或者在设计时未考虑配置环境的作用&#xff0c;…

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式&#xff1a;使用内核线程实现&#xff08;1&#xff1a; 1 实现&#xff09;&#xff0c;使用用户线程实现&#xff08;1&#xff…

QT - qwtplot3d-3D图标

QT - qwtplot3d-3D图标 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "qwt3d_axis.h"using namespace Qwt3D;Axis::Axis() {init(); };Axis::~Axis() { }Axis::Axis(Triple beg, Triple end) {init();setPosition(beg,end); }void Axi…

GAN在图像数据增强中的应用

在图像数据增强领域&#xff0c;生成对抗网络&#xff08;GAN&#xff09;的应用主要集中在通过生成新的图像数据来扩展现有数据集的规模和多样性。这种方法特别适用于训练数据有限的情况&#xff0c;可以通过增加数据的多样性来提高机器学习模型的性能和泛化能力。 以下是GAN在…

RabbitMQ交换机(2)-Direct

1.Direct 直连(路由)交换机,生产者将消息发送到交换机&#xff0c;并指定消息的Routing Key&#xff08;路由键&#xff09;。交换机会将Routing Key与队列绑定进行匹配&#xff0c;如果匹配成功&#xff0c;则将该消息路由到对应的队列中。如果没有匹配成功&#xff0c;该消息…

如何看待 Linux 内核邮件列表重启将内核中的 C 代码转换为 C++

如何看待 Linux 内核邮件列表重启将内核中的 C 代码转换为 C 的讨论&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿…

2024年腾讯云服务器购买价格,真便宜

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

数据库——DAY3(练习-在表中查找数据-单表查询)

一、实验要求&#xff08;单表查询&#xff09; 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 fl…

pod 控制器

pod 控制器&#xff1a; pv pvc 动态pv pod控制器&#xff1a;工作负载&#xff0c;workload&#xff0c;用于管理pod的中间层&#xff0c;确保pod资源符号预期的状态。 预期状态&#xff1a; 1&#xff0c;副本数 2&#xff0c;容器的重启策略 3&#xff0c;镜像拉取策略…

【WSL】Win10 使用 WSL2 进行 Linux GPU 开发

1. GPU 驱动 先安装 驱动 参考 https://docs.nvidia.com/cuda/wsl-user-guide/index.html 使用 https://www.nvidia.com/Download/index.aspx 提供的兼容 GeForce 或 NVIDIA RTX/Quadro 显卡在系统上安装 NVIDIA GeForce Game Ready 或 NVIDIA RTX Quadro Windows 11 显示驱动…

【征服redis2】redis的事务与lua

1.redis事务介绍 在前面我们介绍了redis的几种典型数据结构和应用&#xff0c;本文我们来看一下redis的事务问题。事务也是数据库的重要主题&#xff0c;熟悉关系型数据库的读者应该对事务比较了解&#xff0c;简单地说&#xff0c;事务表示一组动作&#xff0c;要么全部执行&…

Web接口自动化测试之Get与Post请求

关于HTTP协议&#xff0c;我考虑了一下觉得没必要再花一节内容来介绍&#xff0c;因为网上关于HTTP协议的介绍非常详细。本着以尽量避免介绍一空洞了概念与理论来介绍接口测试&#xff0c;我这里仍然会给出具体实例。 在此之前先简单的介绍一下基本概念&#xff1a;我们想要打开…

new mars3d.control.LocationBar({实时获取到地球渲染后的帧率fps等信息

问题&#xff1a;new mars3d.control.LocationBar({实时获取到地球渲染后的帧率fps等信息 实现代码参考&#xff1a;可以获取到之后展示在其他位置。 let _lastFpsSampleTime Cesium.getTimestamp()let _lastMsSampleTime Cesium.getTimestamp()let _fpsFrameCount 0let _ms…

课设:NFA确定化和最小化程序的设计与实现(html+css+js实现)

文章目录 问题描述待解决问题1、如何存储NFA或者是DFA2、NFA多初态问题3、子集化过程思路4、分割法过程思路 使用方法&#xff1a;下载链接 问题描述 NFA确定化和最小化程序的设计与实现&#xff08;参考教材3.4节&#xff09; 目的&#xff1a;设计一个应用程序&#xff0c;将…
最新文章