Stable-Diffusion的WebUI部署

news2024/11/16 1:16:44

1、环境准备及安装

1.1、linux环境
# 首先,已经预先安装好了anaconda,在这里新建一个环境
conda create -n sdwebui python=3.10
# 安装完毕后,激活该环境
conda activate sdwebui

# 安装
# 下载stable-diffusion-webui代码
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui 
bash webui.sh -f

执行完之后,脚本会自动创建python环境、安装各种包、模型等。

2、使用

2.1、运行

安装完成前期的环境准备之后,之后每次运行只需要:

conda activate sdwebui
cd stable-diffusion-webui
bash webui.sh -f
# 或者按照如下方式,将sd放在后台执行
nohup bash webui.sh -f >> nohup.log 2>&1 &

该种方式会将进程运行在本地,可以通过ip+port的方式直接在网页上访问。 也可以通过如下方式进行简单的改造:

# 编辑webui-user.sh脚本
vim webui-user.sh
# 在终端中输入“i”进入编辑模式,移动到 COMMANDLINE_ARGS,并将其修改为:
export COMMANDLINE_ARGS="--listen --share --enable-insecure-extension-access"

上述命令含义如下:

--listen:将本地连接从127.0.0.1修改为0.0.0.0,即可通过服务器 IP:7861进行访问
--share:生成可供外网访问 Gradio 网址。
--enable-insecure-extension-access:使用–listen时,webui出于安全考虑会禁止用户在UI页面添加插件,添加该参数可允许用户添加插件。
--mdevram或 --lowvarm:降低显存消耗
PS:windows下的同理,在webui-user.bat中修改即可

最终效果如下:

企业微信截图_4ad926b3-8044-4cbc-8f3d-32822e77ccfe.png

2.2、添加模型
2.2.1、各种常用模型

初步安装完成后,打开webui,可以看到左上角自带的模型。如下图示:

截屏2023-11-24 10.18.58.png

模型的分类大概有如下几种:

  1. CheckPoint
    Checkpoint 是 Stable Diffusion 中最重要的模型,也是主模型,几乎所有的操作都要依托于主模型进行。所有的主模型都是基于 Stable Diffusion 模型训练而来.
    主模型后缀一般为 .ckpt 或者 .safetensors,并且体积比较庞大,一般在 2G - 7G 之间。放置在 webUI 目录下的 `models/Stable-diffusion` 目录下。
  2. LoRA/LyCORIS
    LoRA 是除了主模型外最常用的模型。LoRA 和 LyCORIS 都属于微调模型,一般用于控制画风、控制生成的角色、控制角色的姿势等等。
    LoRA 和 LyCORIS 的后缀均为 .safetensors,体积较主模型要小得多,一般在 4M - 300M 之间。一般使用 LoRA 模型较多,而 LyCORIS 与 LoRA 相比可调节范围更大,但是需要额外的扩展才可使用。放置在 `models/LoRA` 目录下。
  3. Textual Inversion
    Textual Inversion 是文本编码器模型,用于改变文字向量。可以将其理解为一组 Prompt。
    Textual Inversion 后缀为 .pt 或者 .safetensors,体积非常小,一般只有几 kb。放置在 `embeddings` 目录下。
  4. Hypernetworks
    Hypernetworks 模型用于调整模型神经网络权重,进行风格的微调。
    Hypernetworks 的后缀为 .pt 或者 .safetensors,体积一般在 20M - 200M 之间。放置在 `models/hypernetworks` 目录下。
  5. ControlNet
    ControlNet 是一个及其强大的控制模型,它可以做到画面控制、动作控制、色深控制、色彩控制等等。使用时需要安装相应的扩展才可。
    ControlNet 类模型的后缀为 .safetensors。放置在 `models/ControlNet` 目录下。
    使用时我们需要先去 Extensions 页面搜索 ControlNet 扩展,然后 Install 并 Reload UI。然后便可以在 txt2img 和 img2img 菜单下找到。
  6. VAE
    VAE全称是变分自动编码器 (Variational Auto-Encoder),是机器学习中的一种人工神经网络结构。VAE在sd模型中负责微调,类似我们熟知的滤镜,调整生成图片的饱和度。
    默认的sd-webui页面并没有VAE的设置,需要进入:Settings->User interface->Quick settings list,在输入框中添加sd_vae。然后依次点击Apply settings和Reload UI。随后就会在webui中看到对应区域。

下载好上述模型之后,可以在页面上直接通过标签进入选中,可以直接prompt使用:

企业微信截图_b9aa2b18-f2c1-4194-aaf1-b8f79ff96e39.png

2.3、问题
2.3.1、stable diffusion 安装tagger之后报错Attempt to free invalid pointer

报错信息:

20xx-xx-xx 10:35:12.003960: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
20xx-xx-xx 10:35:12.143798: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
20xx-xx-xx 10:35:12.762893: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
20xx-xx-xx 10:35:12.762960: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
20xx-xx-xx 10:35:12.888382: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
src/tcmalloc.cc:283] Attempt to free invalid pointer 0x59c2527199d0

解决:
参考:github.com/AUTOMATIC11…
①在centos7环境下,安装jemalloc

yum install epel-release
yum install jemalloc

②添加到webui-user.sh

export LD_PRELOAD="/usr/lib64/libjemalloc.so.1"

3、关键词(提示词)书写

3.1、使用示例

示例1: 提前下载Checkpoint模型:‘CheckpointLigneClair_120’
可以到p站上下载:civitai.com/

masterpiece,1girl,solo,incredibly absurdres,hoodie,headphones, street,outdoors,rain,neon lights,  light smile, hood up, hands in pockets, looking away, from side,asymmetrical bangs, beautiful detailed eyes, eye shadow, huge clocks, glass strips, floating glass fragments, colorful refraction, beautiful detailed sky, dark intense shadows, cinematic lighting, overexposure, expressionless, blank stare, big top sleeves, frills, hair ornament, ribbon, bowtie, buttons, small breasts, pleated skirt, sharp focus, masterpiece, best quality, extremely detailed, colorful, hdr
Sampler: DPM++ 2M Karras
Negative prompt: EasyNegative
CFG scale: 7
Steps: 20

效果如下:

image.png

3.2、Controlnet
3.2.1、Controlnet部署使用

1、插件安装:Extension->Install from URL->输入:jihulab.com/hanamizuki/… ->点击Install->安装完毕后,重启ui,可以看到controlnet:

企业微信截图_40adc221-03a2-414e-b952-366975c6e40d.png

2、controlnet模型安装
进入如下网址:huggingface.co/lllyasviel/… 下载所有pth文件,然后放置到:~/stable-diffusion-webui/extensions/sd-webui-controlnet/models 路径下(yaml文件已有,如果没有可以在url中重新下载)

3.2.2、Controlnet常见模型

汇总如下:

类别ControlNet模型功能
边缘轮廓canny边缘检测,根据线稿生图
边缘轮廓mlsd直线检测,适用于建筑设计
边缘轮廓softedge软边缘检测,保留更多边缘细节
边缘轮廓scribble涂鸦生图
边缘轮廓lineart提取精细线稿生图
边缘轮廓lineart_anime提取动漫线稿
深度结构depth深度检测,根据深度信息生图
深度结构normalbae法线贴图,提取法线信息
图片元素seg语义分割,不同颜色语义代表不同对象类型
图片元素normalbae人物姿势检测,根据姿势生图
图像处理inpaint图像扩展和修复
图像处理shuffle风格迁移融合
图像处理ip2p对图片进行指令式变换
图像处理tile细节增强
3.2.3、Canny

Canny用于识别输入图像的边缘信息。分成两个部分,canny预处理器和canny模型:
首先canny预处理器从上传的图片中生成线稿;然后canny模型根据关键词来生成与上传图片相同构图的画面。
(1)线稿生图
步骤如下:
首先将controlnet插件的enable打开
->如果显存不足(小于4G),还可以将Low VRAM打开
->如果是白底黑线的线稿,Preprocessor选择invert,如果是黑底白线的线稿,Preprocessor选择none
->Model选择canny
->Resize Mode选择Resize and Fill(不然比例会不对) 然后选择合适的sd model,输入prompt,我这里是: (masterpiece:1.2), (best quality), (ultra detailed), (8k, 4k, intricate), oil painting texture, 1girl, solo, black eyes, pink hair, lightly smile, upper body, blue shirts, simple background, lips, long hair, black hair 最后效果如下:

图上红框中选择的controlnet模型为control_v11p_sd15_canny,其含义如下:

(2)以图生图
一般用来给图换色,和第一步不同的是,将Preprocessor选择canny,其他可以保持不变: image.png

3.2.4、Reference

Reference 是官方最新推出的预处理器,共有三种:Reference_only、Reference_adain和Reference_adain+atten。它只有yaml配置文件,没有pth模型文件,可以根据上传的图像生成类似的变体。

使用reference_only的预处理器和0.5的Style Fidelity:

(相比之前,添加了angry标签) 企业微信截图_072cd6a5-6ca7-4a71-b9bc-b28d05caa917.png

3.2.5、Tile

Tile 模型的作用是可以忽略原图的细节,根据现有像素和提示词生成新的细节,目前主要作用是将严重模糊的图片放大并变得高清.
选择tile_resample的预处理器和control_v11f1e_sd15_tile的模型,结果如下:

企业微信截图_f85f7fa1-091b-442a-9369-3e95f43502a5.png

3.2.6、T2I- Adapter

将一张图片的风格迁移到另一张图片上

3.3、Tag反推

根据图片,一键反推提示词,反推的关键词更精准,生成的图片效果也更接近于原图

3.3.1、安装

两种安装方法:
1、extension->available->搜索wd 4,点击install,安装完毕后,使用install页面的’Apply and restart UI’
实测使用之后会报错:

2024-01-03 14:59:08.369709: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-01-03 14:59:08.369772: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-01-03 14:59:08.370929: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
src/tcmalloc.cc:284] Attempt to free invalid pointer 0xaa705c0 
webui.sh: line 256:  7687 Aborted                 (core dumped) "${python_cmd}" -u "${LAUNCH_SCRIPT}" "$@"

两种解决方法:
① 注释掉这行代码(在Requirements文件中)

%env LD_PRELOAD=libtcmalloc.so

②使用jemalloc优化内存分配

1、在centos7.x中执行
yum install epel-release
yum install jemalloc
2、在webui-user.sh中添加
export LD_PRELOAD="/usr/lib64/libjemalloc.so.1"

2、第二种方法是直接下载
下载地址: github.com/toriato/sta… 之后重启ui,重启成功后即可在stable-diffusion中看到“Tag反推(Tagger)”

3.3.2、使用

选中Tagger标签,上传一张图片,点击interrogate image,即可生成图片的对应标签

企业微信截图_0680bb2f-9395-4eed-b13c-622359ed097f.png

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年安全现状报告

2024 年安全现状报告有些矛盾。尽管安全专业人员的道路困难重重,比如说严格的合规要求、不断升级的地缘政治紧张局势和更复杂的威胁环境,但整个行业还是在取得进展。 许多组织表示,与前几年相比,网络安全变得更容易管理。组织之间…

经典文献阅读之--MGS-SLAM(单目稀疏跟踪和高斯映射与深度平滑正则化)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时&…

线性代数|机器学习-P9向量和矩阵范数

文章目录 1. 向量范数2. 对称矩阵S的v范数3. 最小二乘法4. 矩阵范数 1. 向量范数 范数存在的意义是为了实现比较距离,比如,在一维实数集合中,我们随便取两个点4和9,我们知道9比4大,但是到了二维实数空间中&#xff0c…

认识Spring 中的BeanPostProcessor

关于BeanPostProcessor和BeanFactoryPostProcessors,将分2篇文章来写,这篇文章是对Spring 中BeanPostProcessor进行了总结 先看下大模型对这个类的介绍,随后再看下这两个类的示例,最后看下这两个类的实现。 这两个类从名字看都很类…

堆盘子00

题目链接 堆盘子 题目描述 注意点 SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈 解答思路 将多个栈存储到一个List中,当入栈时,如果List中最后一个栈容量已经达到cap,则需要新建一个栈,将元素推到…

压缩视频在线压缩网站,压缩视频在线压缩工具软件

在数字化时代,视频成为了人们记录和分享生活的重要载体。然而,视频文件一般都非常大,这不仅占据了大量的存储空间,也给视频的传输和分享带来了不便。因此,压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…

Golang | Leetcode Golang题解之第138题随机链表的复制

题目: 题解: func copyRandomList(head *Node) *Node {if head nil {return nil}for node : head; node ! nil; node node.Next.Next {node.Next &Node{Val: node.Val, Next: node.Next}}for node : head; node ! nil; node node.Next.Next {if…

【一百零九】【算法分析与设计】树状数组求解前缀最大值,673. 最长递增子序列的个数,树状数组求前缀区间最大值

树状数组求解前缀最大值 树状数组可以求解和前缀区间有关的问题,例如前缀和,前缀区间最值. 可以利用 l o g n log_n logn​的时间复杂度快速查找前缀信息. 利用树状数组查询前缀区间中最大值问题. 树状数组下标1位置存储arr数组下标1位置的最大值. 树状数组2位置存储arr数组1,…

树的重心-java

主要通过深度优先搜索来完成树的重心,其中关于树的重心的定义可以结合文字多加理解。 文章目录 前言☀ 一、树的重心☀ 二、算法思路☀ 1.图用邻接表存储 2.图的遍历 3.算法思路 二、代码如下☀ 1.代码如下: 2.读入数据 3,代码运行结果 总结 前言☀ 主…

《PyTorch 实战宝典》重磅发布!

Pytorch 是目前常用的深度学习框架之一,比起 TF 的框架环境配置不兼容,和 Keras 由于高度封装造成的不灵活,PyTorch 无论是在学术圈还是工业界,都相当占优势。 不夸张地说,掌握了 PyTorch ,就相当于走上了…

Cloudpods 强大的多云管理平台部署

简介 Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源,提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源,极大简化多云架构复杂度和难度,帮助企业…

[ue5]建模场景学习笔记(5)——必修内容可交互的地形,交互沙(2)

1需求分析: 继续制作可交互沙子内容,前面我们已经让角色在指定区域留下痕迹,那么能否让区域移动起来,这样才能逐步满足角色走到哪里都能产生交互痕迹,满足更大的地图。 2.操作实现: 1.首先建立角色能产生…

12、SpringBoot 源码分析 - 自动配置深度分析五

SpringBoot 源码分析 - 自动配置深度分析五 refresh和自动配置大致流程OnClassCondition的createOutcomesResolver创建结果解析器StandardOutcomesResolver的resolveOutcomes解析结果StandardOutcomesResolver的getOutcomeClassNameFilter的MISSING判断是否没有 ThreadedOutcom…

【YOLOv5/v7改进系列】改进池化层为SPP、SPPF、SPPCSPC

一、导言 池化层(Pooling Layer)是卷积神经网络(Convolutional Neural Networks, CNNs)中的一个重要组成部分,主要用于减少输入数据的空间尺寸(例如,图像的宽度和高度),…

3D打印随形透气钢:技术革新引领模具制造新潮流

在模具制造领域,透气钢一直扮演着重要角色,它能够有效解决模具困气问题,提高注塑成型的效率和质量。然而,传统的透气钢制造方法受限于工艺和材料,难以满足复杂模具的需求。随着3D打印技术的飞速发展,3D打印…

kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群,一起学习,共同进步。文章底部关注我,公众号后台加我微信入群,备注kettle。 1、群里有不定时会有同学反馈执行SQL脚本步骤使用有问题,那么咱们今天一起来学习下该步…

【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容: 1. 在命令模式测试如下命令&#x…

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识,问题和答案转变成向量存储在向量数据库,在查找答案时,输入问题,将问题向量化,匹配向量库的问题,将向量相似度最高的问题筛选出来,将答案提交。 二、腾讯云向量数…

【C++题解】1261. 韩信点兵

问题:1261. 韩信点兵 类型: 题目描述: 韩信有一对士兵,他想知道有多少人,他就让士兵报数,如果按照 1 到 5 报数,最末一个士兵报的数为 1 。 按照 1 到 6 报数,最末一个士兵报的数为…

Oracle EBS AP发票创建会计科目错误:子分类帐日记帐分录未按输入币种进行平衡

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 提交“创建会计科目”请求提示错误信息如下: 中文报错: 该子分类帐日记帐分录未按输入币种进行平衡。请检查日记帐分录行中输入的金额。 英文报错:The subledger journal entry does not balance i…