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

  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的主要功能的简要介绍,对于某些功能,后面还会在专门的博客中做详细介绍。

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

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

相关文章

MySQL数据库 视图

目录 视图概述 语法 检查选项 视图的更新 视图作用 案例 视图概述 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存…

eventbus,在this.$on监听事件时无法在获取数据

问题:vue中eventbus被多次触发,在this.$on监听事件时,内部的this发生改变导致,无法在vue实例中添加数据。 项目场景 一开始的需求是这样的,为了实现两个组件(A.vue ,B.vue)之间的数据传递。 页面A,点击页面…

ffmpeg 硬件解码零拷贝unity 播放

ffmpeg硬件解码问题 ffmpeg 在硬件解码,一般来说,我们解码使用cuda方式,当然,最好的方式是不要确定一定是cuda,客户的显卡不一定有cuda,windows 下,和linux 下要做一些适配工作,最麻…

Linux创建目录命令@mkdir

目录 命令原型概念作用命令不带参数命令带参数 总结 命令原型 mkdir [ -p ] Linux路径 》参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可 》 -p 选项可选择写或不写。-p 表示自动创建不存在的父目录 (创…

左值右值引用,完美转发

1.c98/03,类模板和函数模板只能含固定数量的模板参数,c11的新特性可以创建接受可变参数的函数模板和类模板 //Args是一个模板参数包,args是一个函数形参参数包 //声明一个参数包Args… args,这个参数包可以包括0到任意个模板参数 template&l…

成功案例分享:物业管理小程序如何助力打造智慧社区

随着科技的进步和互联网的普及,数字化转型已经渗透到各个行业,包括物业管理。借助小程序这一轻量级应用,物业管理可以实现线上线下服务的无缝对接,提升服务质量,优化用户体验。本文将详细介绍如何通过乔拓云网设计小程…

如何确保游戏翻译的质量

随着全球化的加速和游戏行业的国际化,越来越多的玩家开始接触并喜欢玩国际游戏。然而,由于语言障碍,很多玩家无法理解游戏中的文本和对话,这严重影响了游戏体验。因此,游戏翻译变得尤为重要。那么,如何确保…

【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《模式之谜 | 数据奇迹解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌌1 初识模式识…

助力智能人群检测计数,基于DETR(DEtectionTRansformer)开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合,或者是一些特殊时刻、时段、节假日等特殊时期下,密切关注当前系统所承载的人流量是十分必要的,对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段,本文的主要目的是想要…

读算法霸权笔记01_数学杀伤性武器

1. 数学应用助推数据经济,但这些应用的建立是基于不可靠的人类所做的选择 1.1. 房地产危机,大型金融机构倒闭,失业率上升,在幕后运用着神奇公式的数学家们成为这些灾难的帮凶 1.2. 数学逐渐不再关注全球金融市场动态&#xff0c…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com CSDN:https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

任天堂,steam游戏机通过type-c给VR投屏与PD快速充电的方案 三type-c口投屏转接器

游戏手柄这个概念,最早要追溯到二十年前玩FC游戏的时候,那时候超级玛丽成为了许多人童年里难忘的回忆,虽然长大了才知道超级玛丽是翻译错误,应该是任天堂的超级马里奥,不过这并不影响大家对他的喜爱。 当时FC家用机手柄…

【Android】存储读取权限管理理解和api 调研报告

背景 工作和学习需要了解android 权限管理和 对应的api 调用逻辑。 学习 内部路径 不用权限 /data/data/应用包名 相关API Context 类 getCacheDir 缓存路径 getCodeCacheDir 示意路径 getFilesDir 内部文件 文件路径 fileList (files 下的所有文件名&…

【Unity基础】9.地形系统Terrain

【Unity基础】9.地形系统Terrain 大家好,我是Lampard~~ 欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 (一)地形编辑器Terrain (1)创建地形 游戏场景中大多数的山川河流地表地貌都是基…

【单调栈】LeetCode:2818操作使得分最大

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 题目 给你一个长度为 n 的正整数数组 nums 和一个整数 k 。 一开始,你的分数为 1 。你可以进行以下操作至多 k 次,目标是使你的分数最大: 选择一个之前没有选过的 非…

Pipelined-ADC设计二——结构指标及非理想因素(Part1)

本章将详细介绍电路各个模块的设计思路和设计中需要注意的关键点,给出流水线ADC中的非理想因素,并计算出流水线ADC各个模块具体指标。根据电路中信号的传输方向,依次介绍采样保持电路、Sub_ADC,MDAC 等模块的设计。(本…

CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem:Webpack5 升级后相关插件和配置更新说明

前言 项目对应的 webpack5 版本如下: npm i webpack5.89.0 -D npm i webpack-cli5.1.4 -D升级插件 说明一下,我更喜欢固定版本号,这样随机bug会少很多,更可控~ npm i postcss-loader6.1.1 -D npm i postcss-pxtorem6.0.0 -D配…

Hive-high Avaliabl

hive—high Avaliable ​ hive的搭建方式有三种,分别是 ​ 1、Local/Embedded Metastore Database (Derby) ​ 2、Remote Metastore Database ​ 3、Remote Metastore Server ​ 一般情况下,我们在学习的时候直接使用hive –service metastore的方式…

基于SpringBoot简洁优雅的个人博客系统

源代码下载地址: 点击这里下载 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或…

arduino+pir传感器练习和lcd屏幕库练习

// C code // #include <Adafruit_LiquidCrystal.h>//lcd屏幕库 库根据屏幕下载Adafruit_LiquidCrystal lcd_1(0);//定义lcd屏幕对象void setup() {pinMode(5, INPUT);//定义pir针脚lcd_1.begin(16, 2);/* begin(16, 2)&#xff1a;是 lcd_1 对象的一个方法调用&#xff…