stable diffusion的从安装到使用

stable-diffusion,一个免费开源的文生图软件,文章主要讲怎么从源码开始安装,以及使用的方式

git地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui

本人电脑环境win10,软件pycharm,需要提前安装好python环境,推荐使用Anaconda3。公共号发送 “ 软件安装包 ”可以获得相关文件下载

安装

可以直接去github上下载压缩包,或者使用pycharm直接打开,这里我用的是pycharm

在这里插入图片描述

进入后pycharm后会自动创建环境,建议在当前项目下创建,然后等待依赖下载完成即可

除了下载源码外,也可以直接下载官网上搞好的安装包,

https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre

解压后首先双击执行update.bat,然后执行run.bat,等待下载完成即可

在这里插入图片描述

运行

所有依赖完成后,在terminal面板下执行webui-user.bat即可运行,当然后面不进入pycharm,直接在黑窗口执行命令也是可以的,执行完成后进入网页http://127.0.0.1:7860/就可以看到软件界面了

图画的生成需要对应模型,相关模型可以去https://www.liblib.art/网站上下载,下载下来后放入models/Stable-diffusion文件夹即可

在这里插入图片描述

然后页面点击刷新按钮,就可以选择相关模型

如果遇到异常可以根据下面异常内容进行解决

常见异常

1、AssertionError: Torch not compiled with CUDA enabled

CUDA和Torch版本不兼容,可以选择修改CUDA的或者Torch的版本

使用命令nvcc -V,查看CUDA版本

进入Terminal板块,卸载PyTorch

pip uninstall torch

进入https://pytorch.org/get-started/locally/官网,下载所需要的版本,这里注意需要先查询下当前电脑CUDA所对应的版本

在这里插入图片描述

如果是没有CUDA,则安装CUDA。

2、AssertionError: Couldn’t find Stable Diffusion in any of: [‘E:\pythonWordspace\open\stable-diffusion-webui\repositories/stable-diffusion-stability-ai’, ‘.’, ‘E:\pythonWordspace\open’]

没有repositories/stable-diffusion-stability-ai文件夹,启动webui-user.bat命令自动就会创建,这个错一般是在第一次直接启动webui.py时报的错

3、Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check

这个错误信息是由于Torch无法使用GPU而导致的,修改webui-user.bat文件中参数即可

set COMMANDLINE_ARGS=--lowvram --precision full --no-half --skip-torch-cuda-test

4、torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB. GPU 0 has a total capacity of 6.00 GiB of which 0 bytes is free. Of the allocated memory 5.16 GiB is allocated by PyTorch, and 148.39 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)

这里主要是CUDA 超内存,我并没有解决到该BUG,可能因为本身电脑GPU比较小,这里只提供几种解决方案

1、控制台执行set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True 【我当前环境win所以用set命令,Linux下用export】

2、修改batch_size大小

3、修改高级系统设置,性能中的虚拟内存大小

4、增加清除代码

import torch, gc

gc.collect()
torch.cuda.empty_cache()

5、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 correc

运行时它需要访问huggingface.co去下载一些模型需要的文件

界面以及字段说明

在这里插入图片描述

**Prompt,**正向提示词,用于描述图像中应该包含的元素或内容的指令

**Negative prompt,**用于描述在生成图像时应该避免或排除的元素、内容或特征

**Sampling method,**用于生成图像时所采用的抽样方法,决定了模型如何根据输入的文本描述来逐步生成图像

**Sampling steps, **采样步数,指模型从初始的随机噪声状态逐渐优化到最终生成清晰图像所需的迭代次数,每次迭代进行细微的调整和优化,生成更加清晰和逼真的图像,耗时也会增长

Hires.fix,用于提高成图质量。原理是以较低分辨率呈现图像,然后将其放大,最后在高分辨率下添加细节。这样,即使是在底模通常使用512512或768768的图片进行训练的情况下,也能显著提高成图质量。在显存足够的情况下,推荐尽可能开启此功能。

需要注意的是,Hires.fix会消耗大量的时间。需要根据情况选择。同时,Denoising strength(重绘强度)也需要合理设置,通常在0.30.5的范围内比较安全,如果想要赋予AI更多的发挥空间,可以设置为0.50.7。

关于Upscaler(放大算法)一般照片生成使用推荐:ESRGAN_4x, R-ESRGAN 4x+, SwinIR_4x 算法。
针对二次元相关图片推荐: R-ESRGAN 4x+ Anime6B

**CFG Scale,**用于控制文本提示对生成图像的影响程度,它决定了生成的图像与给定的文本提示之间的相关性。值可以从0到30进行调整。数值越大,生成的图像与文本提示的相关性越高,但可能会失真。相反,数值越小,相关性则越低,图像可能越偏离提示或输入图像,但质量可能更好。在实际应用中,将CFG Scale设置在7到11之间通常可以获得最佳的低噪效果。

然而,当CFG Scale的数值过高(例如高于20)时,生成效果可能会出现反向变化,导致图像质量变差,可能出现粗犷的线条或过度锐化的图像。因此,在使用CFG Scale时,需要根据实际需求进行适当调整,以获得满意的图像生成效果。

**Seed,**用于控制生成图片随机性的重要工具。具体来说,Seed参数决定了生成图片的外观,不同的Seed值会产生不同的随机性,从而导致生成的图片呈现出不同的特征和风格。通过调整Seed的数值,我们可以获得各种不同的效果和样式。

同时,Seed参数还确保了结果的可重现性。当使用相同的Seed来运行程序时,生成的图片将是完全一样的。这对于实验、复现和比较不同模型的性能非常重要。

Prompt提示词如何写

Prompt提示词简单点讲就是模型的指令,stable-diffusion根据指令生成图片

正向提示词和反向提示词,提示词要用英文书写,词之间用逗号隔开

提示词分多种不同类型【主要是一些例子,用的时候最好翻译成英文,可以用百度翻译或者有道词典】

内容提示词

人物及主体特征:例如服饰穿搭,发型发色,面部表情
场景特征:例如室内、室外
环境光照:例如白天黑夜,时段
画幅视角:例如距离,人物比例

画质提示词

画质以及具体分辨率:例如8k,unreal engine rendered
画风:例如插画风,二次元,写实

权重与负面提示词

括号加数字:(提示词:1.5)表示该提示词权重增强1.5倍
套括号:((提示词))每个圆括号*1.1倍,{{提示词}}大括号权重*1.4,[[]]方括号*0.9
混合:描述提示词1 / 描述提示词2 表示混合两种描述的词
迁移:[ 描述提示词1 / 描述提示词2 ] 先执行1,然后再执行2

常用参数

采样迭代步数默认20
采样方法:Euler a,Euler(适合插画风格),DPM 2M,2M Karras(速度快),SDE Karras(细节丰富)

编写提示词方式

1、用翻译软件翻译

2、使用些在线提示词工具,http://www.atoolbox.net/Tool.php?Id=1101

3、复制别人写好的提示词,然后修改

行2


常用参数

采样迭代步数默认20
采样方法:Euler a,Euler(适合插画风格),DPM 2M,2M Karras(速度快),SDE Karras(细节丰富)


编写提示词方式

1、用翻译软件翻译

2、使用些在线提示词工具,http://www.atoolbox.net/Tool.php?Id=1101

3、复制别人写好的提示词,然后修改

例如https://www.liblib.art/中作品灵感模块可以用于选择

上一篇:新手小白都会用的内网穿透异地组网新选择openp2p比ZeroTier更简单更好用


下一篇:Jackson 2.x 系列【15】序列化器 JsonSerializer-3. 实现类