Stable-diffusion-webui本地部署和简要介绍

news2024/9/21 0:51:08

  Stable Diffusion 是一款基于人工智能技术开发的绘画软件,它可以帮助艺术家和设计师快速创建高品质的数字艺术作品。是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,同时也可以应用于其他任务,如内补绘制、外补绘制,以及在提示词指导下产生图生图的翻译。 

  Stable Diffusion 项目本地化的部署,是纯代码界面,而Stable Diffusion WebUI,是基于 Stable Diffusion 项目的可视化操作项目。这里我们也是部署Stable Diffusion WebUI。

本地部署StableDiffusion UI

前置条件

  在部署StableDiffusion前,如果instance是GPU的instance,需要安装Nividia的driver,如果对安装dirver等不熟悉,可查看我之前的博客“AWS instance上部署大模型”

  按前置条件准备好instance环境后,就可以按照StableDiffusion官网的步骤快速安装StableDiffusion UI了。命令如下图所示,因为我自己的instance是ubuntu,属于Debian-based,所以,执行第一行的命令,安装相关的依赖。

# Debian-based:
sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0
# Red Hat-based:
sudo dnf install wget git python3 gperftools-libs libglvnd-glx 
# openSUSE-based:
sudo zypper install wget git python3 libtcmalloc4 libglvnd
# Arch-based:
sudo pacman -S wget git python3

 一键安装stable-diffusion-webui

 安装了基础依赖包后,下载webui.sh文件,执行该文件,即可一键完成stable-diffusion-webui的安装。具体命令如下图所示:

#下载shell脚本
wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh

#给文件分配执行权限
chmod -x webui.sh

#执行shell文件
./webui.sh

 执行shell文件后,可以看到整个shell文件大致完成了三个任务。

第一:创建python虚拟环境并激活

第二:通过python执行launch.py文件,这也是stable-diffusion-webui的入口文件。

第三:执行launch.py文件时,会下载stable-diffusion的模型参数文件,即后缀是.safetensors的文件,最后启动整个webui应用。stable-diffusion-webui的前端是用gradio写的,默认启动在7860端口。

  如果是在本机上运行,执行完上面的命令,就可以在浏览器中输入“http://127.0.0.1:7860”访问应用了。我的实验是在aws的instance上进行,所以需要在security group的inbound 中开放7860端口。另外,执行了下面的命令,将aws上instance的端口与自己的本地电脑端口做了映射,如果不做映射,无法在外面本地电脑上直接访问127.0.0.1 或者localhost等地址。当然,还有第二个办法,就是修改gradio的默认地址,将127.0.0.1修改成0.0.0.0也可以。

# -L 7860:localhost:7860: 设置本地端口转发,将本地端口 7860 转发到远程主机的本地回环地址(localhost)的端口 7860。
# 这种端口转发允许你在本地访问远程主机上的服务

ssh -i /Users/taoli/Downloads/taoli-tokyo.pem -N -f -L 7860:localhost:7860 ubuntu@aws public instance ip

   在本地浏览器上访问到的stable-diffusion-webui的界面如下图所示,这里的checkpoint list就是stablediffusion模型列表,在安装的时候默认下载了v1-5这个基础模型。

   stable-diffusion-webui代码目录如下图所示,extensions下面放下载的所有插件,models下面放下载的所有模型,models下面又分了Stable-diffusion,Lora,VAE等目录,因为除了主模型外,还有很多用于特定作用的模型,例如Lora就是用于模型微调的。安装时下载的主模型存放在Stable-diffusion目录下面。

一些主要的模型以及其作用汇总如下图所示:

Stable-Diffusion-WebUI提供的主要功能

txt2image功能

顾名思义,通过文本生成图片,在生成图片的时候分prompt和negative prompt。prompt很容易理解,期望生成怎样的图片,在prompt中描述即可。negative prompt的含义是:不期望图片中生成的东西,例如写black hair在negative prompt中,理想情况下生成的图片中,人物都不是黑头发。

 除了prompt,还有Sampling method,工具中提供了很多Sampling method。我们知道 sd webui 生成图像,大致会经过以下过程:
1、为了生成图像, Stable Diffusion 会在潜在空间中生成一个完全随机的图像
2、噪声预测器会估算图像的噪声
3、噪声预测器从图像中减去预测的噪声
4、这个过程反复重复 N 次以后,会得到一个干净准确的图像
这个去噪的过程,就被称为采样。采样中使用的方法被称为 Sampling method (采样方法或者是采样器)。总结而言不同采样器的特点大致如下:

  • 如果想快速生成质量不错的图片,建议选择 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步)
  • 如果想要高质量的图,不关心重现性,建议选择 DPM++ SDE Karras (10-15步 较慢) ,DDIM(10-15步 较快)
  • 如果想要简单的图,建议选择 Euler, Heun(可以减少步骤以节省时间)
  • 如果想要稳定可重现的图像,请避免选择任何祖先采样器(名字里面带a或SDE)
  • 相反,如果想要每次生成不一样的图像,可以选择不收敛的祖先采样器(名字里面带a或SDE)

Hires.fix是Stable Diffusion中文网提供的一个功能,用于高清修复生成的图片。 通过应用Hires.fix,可以将图像放大并提高分辨率,以获得更清晰的结果。 这是一个非常实用的功能,可以提高图片的质量并满足您的需求。 无论是在打印还是在网络上展示,修复后的高清图片都能够给观看者带来更好的视觉体验。

Image2image功能

Image2Image的功能,顾名思义就是通过图片生成另外的图片,这里除了生成图片外,还有Inpaint功能,即如果只想修改原图中的某个部分,则使用Inpaint功能。如下图所示:将原图的人物头像换成了根据prompt中新生成的头像。

在Inpaint过程中,有两个关键参数CFG scale和Masked Content,需要理解其含义。

CFG scale:与文生图中的CFG类似,表示生成的图片要follow prompt的程度
1:基本忽略prompt
3:带些创造性
7:创造性与prompt之间的一个较好的平衡
15:紧跟prompt提示走
30:完全follow prompt
Masked content:控制覆盖的区域如何初始化
Fill:使用原图的高模糊图作为初始化
Original:无修改
Latent noise:先使用fill的模式对masked区域做初始化,然后再加入随机噪点到latent 空间
Latent nothing:与latent noise类似,但是不加入随机噪点

Extras功能

附加功能的主要作用就是:把一张小图、模糊的图、有噪点的图,放大、清晰化处理为更大的图。如下图所示,生成的图片比原始图片更大了。

  除了上面的三个主功能外,在web ui上还可以安装各种插件,在Extension界面上进行安装。如下图所示:可以选择需要安装的插件,点击install后,就会下载插件,并存放在web-ui的extensions目录下。如果要让插件生效,需要重启应用(即执行python3 launch.py命令即可)。安装某些插件后,webui上会出现新的tab页,例如,EasyPhoto就是安装对应插件后才出现的新tab。

  除了上面介绍的功能外,web-ui界面上还有Settings tab,主要用于设置各类参数。还有Checkpoint merger功能,主要用于合并多个模型成一个模型,并设置不同模型的权重。

  以上就是对Stable-Diffusion-WebUI的主要功能的简要介绍,对于某些功能,后面还会在专门的博客中做详细介绍。

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

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

相关文章

WPF Halcon机器视觉和运动控制软件通用框架,插件式开发,开箱即用 仅供学习!

点我下载,仅供个人学习使用 参考easyvision开发,集成几十个软件算子此版本以添加ui设计器。具体功能如上所示,可以自定义变量,写c#脚本,自定义流程,包含了halcon脚本和封装的算子,可自定义ui&a…

交叉熵损失(Cross-Entropy loss)

在处理机器学习或深度学习问题时,损失/成本函数用于在训练期间优化模型。目标几乎总是最小化损失函数。损失越低,模型越好。交叉熵损失是最重要的成本函数。它用于优化分类。对交叉熵的理解取决于对 Softmax 激活函数的理解。 一、softmax激活函数 激活…

手机上怎么合成gif?手机图片合成gif分享

手机上的功能越来越丰富,很多电脑上能制作的东西手机上也能制作。那么当我们想要在手机上制作gif动画的时候要怎么操作呢?非常的简单,使用在线制作动画gif(https://www.gif.cn/)网站-GIF中文网,手机自带浏览…

分析某款go扫描器之四

一、概述 上文提到实现IP的探测存活以及tcp扫描的实现,这部分来分析实现本机网卡信息获取,以及维护一张mac地址表以及ip扫描端口状态表,同时实现syn扫描功能。 项目来源:https://github.com/XinRoom/go-portScan/blob/main/util…

K8S(十一)—Service详解

目录 Service发布服务(服务类型)type: ClusterIP选择自己的 IP 地址例子 type: NodePort选择你自己的端口为 type: NodePort 服务自定义 IP 地址配置例子 type: LoadBalancer混合协议类型的负载均衡器禁用负载均衡器节点端口分配设置负载均衡器实现的类别…

互动破千万!冰雪营销两大玩法,小红书数据分析!

2022年冬奥会带火了冰雪运动,到如今“冰雪热”仍在持续。通过千瓜数据,查看小红书平台“冰雪”这一关键词的数据,近30天互动总量超过1300万,官方连续发布的几场活动,皆与冰雪相关,#东北精神上的快乐老家 #追…

js中async和await高级用法

文章目录 一、介绍二、async/await与高阶函数三、控制并发数四、使用async/await优化递归五、异步初始化类实例六、在async函数中使用await链式调用七、结合async/await和事件循环八、使用async/await简化错误处理九、最后 一、介绍 JavaScript的异步编程已经从回调(callback)…

Vue前端设计模式

文章目录 一、什么是设计模式?二、设计几个原则三、常见的设计模式及实际案例3.1、单例模式3.1.1、Element UI3.1.2、Vuex 3.2、工厂模式3.2.1、VNode3.2.2、vue-route 3.3、策略模式3.3.1、表格 formatter3.3.2、表单验证 3.4、代理模式3.4.1、拦截器3.4.2、前端框…

考研小白助力宝典(2)

前言 考研,是一场耗时长久的脑力之战,刻苦勤奋的态度和披荆斩棘的精神外,往往取决于谁抓好了信息利剑!合理得当利用好信息平台,就已经快人一步战胜了大部分的竞争对手了! 目录 着重学习练习 考研相关简介 …

vscode开发python环境配置

前言 vscode作为一款好用的轻量级代码编辑器,不仅支持代码调试,而且还有丰富的插件库,可以说是免费好用,对于初学者来说用来写写python是再合适不过了。下面就推荐几款个人觉得还不错的插件,希望可以帮助大家更好地写…

visio绘制封闭图形并填充颜色

文章目录 一、绘制扇形二、填充颜色 一、绘制扇形 1.文件->选项->开发工具 2.使用圆形和直线绘制如图所示图形 3.选中该图形,选择开发工具->操作->修剪 4.拖动即为扇形。 二、填充颜色 选择开发工具-操作选项,并分别依次点击组合-连接-拆分…

laravel 对接支付,本地穿透问题

本地穿透有好多工具,参考链接:https://zhuanlan.zhihu.com/p/339923535 我这边是用的 NATAPP 官网:https://natapp.cn/ 客户端下载:https://natapp.cn/# NATAPP1分钟快速新手图文教程:https://natapp.cn/article/n…

C# NPOI导出datatable----Excel模板画图表

1、创建Excel模板 2、安装NPOI管理包 3、创建工作簿 (XLSX和XLS步骤一样,以XLS为例) IWorkbook workbook null; string time DateTime.Now.ToString("yyyyMMddHHmmss"); string excelTempPath Application.StartupPath "…

flutter开发实战-第一帧布局完成回调实现

flutter开发实战-第一帧布局完成回调实现 在开发中,我们有时候需要在第一帧布局完成后调用一些相关的方法。这里记录一下是实现过程。 Flutter中有多种不同的Binding,每种Binding都负责不同的功能。下面是Flutter中常见的Binding: 这里简单…

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(四)CEEMD

往期精彩内容: 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测(三)EMD-LSTM-Attention模型-CSDN博客 风速预测(四)基于Pyt…

25、新加坡南洋理工、新加坡国立大学提出FBCNet:完美融合FBCSP的CNN,EEG解码SOTA水准![抱歉老师,我太想进步了!]

前言: 阴阳差错,因工作需要,需要查阅有关如何将FBCSP融入CNN中的文献,查阅全网,发现只此一篇文章,心中大喜,心想作者哪家单位,读之,原来是自己大导(新加坡工…

2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 B题 电子邮件中的笔迹分析 原题再现: 笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电…

pytorch-模型预测概率值为负数

在进行ocr识别模型预测的时候,发现预测的结果是正确的,但是概率值是负数: net_out net(img) #torch.Size([70, 1, 41]) logit, preds net_out.max(2) #41是类别 需要对类别取最大值 preds preds.transpose(1, 0).contiguous().view(-1) …

圆通单号查询,圆通速递物流查询,将指定派件员的单号筛选出来

批量查询圆通速递单号的物流信息,并将指定派件员的单号筛选出来。 所需工具: 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的伙伴记得先注册&#xff…

AIGC:阿里开源大模型通义千问部署与实战

1 引言 通义千问-7B(Qwen-7B)是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍…