stable diffusion(1): webui的本地部署(windows)

一、前言

是的,现在是202308月份了,网上已经有很多打包好的工具,或者直接进一个web就能用SD的功能,但是我们作为程序员,就应该去躺坑,这样做也是为了能够有更多自主操作的空间。

像其他AI一样,先出结果才是王道,所以先不直接搞SD源码或者命令行,而是先用起来,后面再去进一步研究原理,目前最火热的莫不过是这个项目了:

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI

这篇博客就是本地部署这个项目,搞一下中文插件,然后随便出一张图,当然是有很多坑才会去写博客。

有一个坑一直没过去,就是如果整体环境没完全装好,但是使用我自己提前创建的python虚拟环境来启动SD启动脚本stable-diffusion-webui/webui-user.bat,期间会因为某些原因(比如没梯子东西下载不下来)启动失败,但是第二次启动时就会报没有pip模块的错误,我就只能重新创建python虚拟环境,再装一遍包,这个过程很漫长很浪费时间,所以一定跟着我的脚步,一步不要落下的走,心急吃不了热豆腐(目前经过我大量的失败和探索,终于解决这个问题,见下面第五节)。

二、环境版本库的安装

这个还真挺重要的,最好和项目保持一样的环境,不然出错也不一定网上有支持,这里我首先声明我用的SD版本是目前最新的,git号为50973ec77c297edc3b3c581e871b970dde1af8ba,如果后面过段时间可能会变化,那我们也相应的变化;

我是在搭建环境过程中,发现一个有关于环境版本的一个文件:stable-diffusion-webui/modules/launch_utils.py里面的prepare_environment函数截图如下:

 可以看出我们需要安装cuda版本为11.8,torch版本为2.0.1,torchvision版本为0.15.2;

从github的README.md可知,python版本为3.10;

从stable-diffusion-webui/requirements_versions.txt可知项目依赖的python包名和对应版本;

cuda的安装是没啥说的,python安装建议用anaconda,anaconda版本一定要够新保证支持py310,然后就是安装python包,我个人比较喜欢离线下一些包,百度搜pipy然后搜对应包名,下载对应版本即可,然后用bat脚本安装,脚本如下(有一个xformers在requirements_versions.txt没见到,但是在其他地方用到了,还是提前安装,毕竟这个包挺大):

@echo offcall activate sdcd /d G:\python310_win_whl
pip install llvmlite-0.40.1-cp310-cp310-win_amd64.whl
pip install numpy-1.23.5-cp310-cp310-win_amd64.whl
pip install numba-0.57.1-cp310-cp310-win_amd64.whl
pip install pandas-2.0.3-cp310-cp310-win_amd64.whl
pip install Pillow-9.5.0-cp310-cp310-win_amd64.whl
pip install safetensors-0.3.1-cp310-cp310-win_amd64.whl
pip install scipy-1.11.1-cp310-cp310-win_amd64.whl
pip install scikit_image-0.20.0-cp310-cp310-win_amd64.whl
pip install "torch-2.0.1+cu118-cp310-cp310-win_amd64.whl"
pip install "torchvision-0.15.2+cu118-cp310-cp310-win_amd64.whl"
pip install xformers-0.0.20-cp310-cp310-win_amd64.whlcd /d G:\python_whl
pip install GitPython-3.1.30-py3-none-any.whl
pip install accelerate-0.18.0-py3-none-any.whl
pip install basicsr-1.4.2.tar.gz
pip install blendmodes-2022-py3-none-any.whl
pip install clean_fid-0.1.35-py3-none-any.whl
pip install einops-0.4.1-py3-none-any.whl
pip install fastapi-0.94.0-py3-none-any.whl
pip install gfpgan-1.3.8-py3-none-any.whl
pip install gradio-3.32.0-py3-none-any.whl
pip install httpcore-0.15.0-py3-none-any.whl
pip install inflection-0.5.1-py2.py3-none-any.whl
pip install jsonmerge-1.8.0.tar.gz
pip install kornia-0.6.7-py2.py3-none-any.whl
pip install lark-1.1.2-py2.py3-none-any.whl
pip install omegaconf-2.2.3-py3-none-any.whl
pip install open_clip_torch-2.20.0-py3-none-any.whl
pip install piexif-1.1.3-py2.py3-none-any.whl
pip install psutil-5.9.5.tar.gz
pip install pytorch_lightning-1.9.4-py3-none-any.whl
pip install realesrgan-0.3.0-py3-none-any.whl
pip install resize_right-0.0.2-py3-none-any.whl
pip install timm-0.6.7-py3-none-any.whl
pip install tomesd-0.1.2-py3-none-any.whl
pip install torchdiffeq-0.2.3-py3-none-any.whl
pip install torchsde-0.2.5-py3-none-any.whl
pip install transformers-4.25.1-py3-none-any.whlpause

三、修改url地址(梯子强可不改)

还是stable-diffusion-webui/modules/launch_utils.py里面的prepare_environment函数,有很多如下类似的语句:

gfpgan_package = os.environ.get('GFPGAN_PACKAGE', 
"https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")

如果没有梯子,这里很慢或者根本过不去,所以参考 慢网救星!两步操作加快stable diffusion本地部署速度 - 哔哩哔哩 来做修改,首先把这些项目都搞到gitee上面去,最好设置成开源项目,然后launch_utils.py的内容修改如下(其中#注释的就是原始内容,放在这好对比着看):

    #gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379")#clip_package = os.environ.get('CLIP_PACKAGE', "https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")clip_package = os.environ.get('CLIP_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1")#openclip_package = os.environ.get('OPENCLIP_PACKAGE', "https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")openclip_package = os.environ.get('OPENCLIP_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/open_clip.git@bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b")#stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git")stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://gitee.com/luo_zhi_cheng/stablediffusion")#stable_diffusion_xl_repo = os.environ.get('STABLE_DIFFUSION_XL_REPO', "https://github.com/Stability-AI/generative-models.git")stable_diffusion_xl_repo = os.environ.get('STABLE_DIFFUSION_XL_REPO', "https://gitee.com/luo_zhi_cheng/generative-models")#k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://gitee.com/luo_zhi_cheng/k-diffusion')#codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://github.com/sczhou/CodeFormer.git')codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://gitee.com/luo_zhi_cheng/CodeFormer')#blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')blip_repo = os.environ.get('BLIP_REPO', 'https://gitee.com/luo_zhi_cheng/BLIP')

四、下载最基础模型

这是启动脚本就会让你下载的模型,因为如果下载过程中失败了,就很痛苦,很多事情需要重来,这里我们也选择手动下载,下载地址为(如果版本更新了,请找到modules\sd_models.py中的model_url = "https://xxx):https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

手动下载好之后,放在stable-diffusion-webui/models/Stable-diffusion目录下即可;

五、修改启动脚本

启动脚本为stable-diffusion-webui/webui-user.bat,参数如下:

set PYTHON=D:\Soft\Anaconda3\envs\sd\python.exe
::set PYTHON=D:\Soft\Anaconda3\envs\sd\Scripts\python.exe
set GIT=
set VENV_DIR=D:\Soft\Anaconda3\envs\sd
set COMMANDLINE_ARGS=--xformers:: --medvram 中等显存模式,牺牲一些速度,4G显存建议使用
:: --lowvram 低显存模式,牺牲大量速度,如果--medvram还是爆显存再用这个
:: --precision full --no-half 不使用半精度模式,GTX 16系显卡需要使用
:: --autolaunch 自动启动,服务启动成功后自动打开浏览器。

其中COMMANDLINE_ARGS可选参数在modules/cmd_args.py,具体参数怎么选可以多百度,这里不同显存的显卡参数都是有差异的,需要因人而异;

这里说一下我一直以来遇到的问题,但是网上我却找不到解决办法,还是我大量测试解决了,就是我每次第一次双击启动脚本stable-diffusion-webui/webui-user.bat能够正常启动,但是第二次启动就会报如下错误:

 看到我webui-user.bat里面写了两个"set PYTHON"没,第一次启动时注释掉第二行的"set PYTHON",后面每一次启动都注释掉第一行的"set PYTHON"即可。

六、中文设置

上面全部搞定后,就双击启动脚本stable-diffusion-webui/webui-user.bat,命令行你等它一步步执行,只要没报错,几分钟就会出现一个类似的地址http://127.0.0.1:7860,复制该地址到网页中就打开了stable-diffusion-webui界面,大致界面如下图:

 现在设置中文插件,点击Extensions->画面切换后点击Install from URL->填入https://gitee.com/luo_zhi_cheng/stable-diffusion-webui-localization-zh_Hans->点击橙色按钮Install->点击Settings->画面切换后点击Reload UI

 重启webui后,点击Settings->画面切换后点击右边的"User interface"->选择Localization那里的"zh-Hans (Testing)"->然后点击橙色按钮"Apply settings"->最后点击Reload UI。

 重启webui后,就应该是中文界面了,如下图:

七、第一幅画

第一次画简单一点,在prompt那里随便填一个动物,比如dragon,等待一会(进度条可以看命令行)就出图啦。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【类和对象】基础知识

目录 一、类的定义 定义方式一&#xff1a;定义与声明都在类中 定义方式二&#xff1a;定义与声明分离 二、类的实例化&&类对象存储方式 类的实例化 类对象存储模式 三、this指针 一、类的定义 定义方式一&#xff1a;定义与声明都在类中 #include<iostream&…

进阶:Docker容器管理工具——Docker-Compose使用

文章目录 前言Compose大杀器编排服务 1、docker-compose安装curl方式安装增加可执行权限查看版本 2、Docker-compose.yaml命令3、 docker-compose实战4、Docker网络路由docker的跨主机网络路由**问题由来**:方案两台机分别配置路由表ip_forward配置 总结 前言 容器的管理工具&…

AI一键生成短视频

AI一键生成推文短视频 阅读时长&#xff1a;10分钟 本文内容&#xff1a; 结合开源AI&#xff0c;一键生成短视频发布到常见的某音&#xff0c;某手平台&#xff0c;狠狠赚一笔 前置知识&#xff1a; 1.基本的 python 编程知识 2.chatGPT 使用过 3.stable diffution 使用过 成果…

开关电源控制--bode图相角裕量的选择

什么是相角裕量 在Bode图中&#xff0c;相角裕量是指系统的相位裕量&#xff0c;用于评估系统的稳定性和频率响应特性。 Bode图是一种常用的频率响应图&#xff0c;将系统的增益和相位随频率变化的情况绘制出来。在Bode图中&#xff0c;相角裕量表示系统的相位与-180度&#…

Python web实战之Django的文件上传和处理详解

概要 关键词&#xff1a;Python Web开发、Django、文件上传、文件处理 今天分享一下Django的文件上传和处理。 1. 上传文件的基本原理 在开始深入讲解Django的文件上传和处理之前&#xff0c;先了解一下文件上传的基本原理。当用户选择要上传的文件后&#xff0c;该文件会被发…

Node.js-http模块服务端请求与响应操作,请求报文与响应报文

简单案例创建HTTP服务端&#xff1a; // 导入 http 模块 const http require("http"); // 创建服务对象 const server http.createServer((request, response) > {// 设置编码格式&#xff0c;解决中文乱码问题response.setHeader("content-type", &…

20天突破英语四级高频词汇——第②天

2&#xfeff;0天突破英语四级高频词汇~第2天加油(ง •_•)ง&#x1f4aa; &#x1f433;博主&#xff1a;命运之光 &#x1f308;专栏&#xff1a;英语四级高频词汇速记 &#x1f30c;博主的其他文章&#xff1a;点击进入博主的主页 目录 2&#xfeff;0天突破英语四级高…

绿盾用户使用看图软件每次都需要把图片解密之后才能打开查看,怎么才能不用这么麻烦打开就能看

环境: Win10专业版 绿盾控制台7.0 看图软件FastStone Image Viewer 问题描述: 绿盾用户使用看图软件FastStone Image Viewer每次都需要把图片解密之后才能打开查看,怎么才能不用这么麻烦打开就能看,用户说每次都需要把图片解密之后才能使用,实在是影响效率 解决方案…

0140 数据链路层2

目录 3.数据链路层 3.6局域网 3.7广域网 3.8数据链路层设备 部分习题 3.数据链路层 3.6局域网 3.7广域网 3.8数据链路层设备 部分习题 1.如果使用5类UTP来设计一个覆盖范围为200m的10BASE-T以太网&#xff0c;需要采用的设备是&#xff08;&#xff09; A.放大器 …

租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发

随着互联网的发展&#xff0c;小程序成为了一种重要的移动应用开发方式。租赁小程序作为其中的一种类型&#xff0c;可以为很多行业提供便利和创新。下面我们将介绍一些适合开发租赁小程序的行业。   房屋租赁行业&#xff1a;租房小程序可以帮助房东和租户快速找到合适的租赁…

Synchronized同步锁的优化方法 待完工

Synchronized 和后来出的这个lock锁的区别 在并发编程中&#xff0c;多个线程访问同一个共享资源时&#xff0c;我们必须考虑如何维护数据的原子性。在 JDK1.5 之前&#xff0c;Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁…

element表格+表单+表单验证结合运用

目录​​​​​​​ 一、结果展示 二、实现代码 一、结果展示 1、图片 2、描述 table中放form表单&#xff0c;放输入框或下拉框或多选框等&#xff1b; 点击添加按钮&#xff0c;首先验证表单&#xff0c;如果存在没填的就验证提醒&#xff0c;都填了就向下添加一行表单表…

react中hooks分享

一. HOOKS是什么 在计算机程序设计中&#xff0c;钩子一词涵盖了一系列技术&#xff0c;这些技术用来通过拦截函数调用、消息或在软件组件之间传递的事件来改变或增加操作系统、应用程序或其他软件组件的行为。处理这些被截获的函数调用、事件或消息的代码称为“hook”。 在r…

Spring Boot数据访问基础知识与JDBC简单实现

目录 Spring Boot数据访问基础知识 Spring Data ORM JDBC JPA JDBC简单实现 步骤1&#xff1a;新建Maven项目&#xff0c;添加依赖 步骤2&#xff1a;配置数据源—让程序可以访问到 步骤3&#xff1a;配置数据源—让IDEA可以访问到 步骤4&#xff1a;添加数据库和表 …

人类与机器的分类不同

分类能力也是智能的重要标识之一。通过分类&#xff0c;我们可以将事物或概念进行归类和组织&#xff0c;从而更好地理解和处理信息。分类在人类认知和智能发展中起到了重要的作用&#xff0c;它有助于我们对世界进行认知、记忆、推理和决策。在机器智能领域&#xff0c;分类同…

在WebStorm中通过live-server插件搭建Ajax运行环境

1.下载node.js 官网: https://nodejs.cn/download/ 2.配置Node.js的HTTPS 使用淘宝的镜像&#xff1a; npm config set registry https://registry.npm.taobao.org 也可以使用cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 配置之后可以验证是否成…

Windows安装子系统Linux

Windows安装子系统(Linux ubuntu&#xff09; 安装条件步骤1.安装WSL命令2.设置Linux用户名和密码3.写个简单的.c程序看看4.如何互传文件 安装条件 Windows 10版本2004及更高的版本才能安装。 步骤 1.安装WSL命令 我们可以使用WSL来安装子系统 Linux ubuntu(默认是这个)。 …

Docker网络模式详解

目录 Docker网络模式 一、Host模式 二、container模式 三、none模式 四、bridge模式 五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络&#xff0c;可以使用docker network ls命令列出这些网络。 [rootdocker ~]# docker network ls 我们在使用docker run…

进程、线程、协程

目录 进程、线程、协程的概念 进程、线程、协程的上下文切换 使用协程的注意事项 协程与线程、进程的区别 进程、线程、协程的概念 进程&#xff1a; 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程…

【雕爷学编程】Arduino动手做(195)---HT16k33 矩阵 8*8点阵屏模块5

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…