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.mzph.cn/news/25329.shtml

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

相关文章

Python——调用webdriver.Chrome() 报错

今天运行脚本&#xff0c;报错内容如下&#xff1a; collecting ... login_case.py:None (login_case.py) login_case.py:11: in <module> dr webdriver.Chrome() D:\Program Files (x86)\Python\Python39\Lib\site-packages\selenium\webdriver\chrome\webdriver.p…

【算法题解】52. 分割圆的最少切割次数

这是一道 简单 题 https://leetcode.cn/problems/minimum-cuts-to-divide-a-circle/ 题目 圆内一个 有效切割 &#xff0c;符合以下两个条件之一&#xff1a; 该切割是两个端点在圆上的线段&#xff0c;且该线段经过圆心&#xff0c;即圆的直径。该切割是一端在圆心另一端在圆…

自然语言处理学习笔记(五)————切分算法

目录 1.切分算法 2.完全切分 3.正向最长匹配 4.逆向最长匹配 5.双向最长匹配 6.速度评测 1.切分算法 词典确定后&#xff0c;句子可能含有很多词典中的词语&#xff0c;他们有可能互相重叠&#xff0c;如何切分需要一些规则。常用规则为&#xff1a;正向匹配算法、逆向匹…

关于Godot游戏引擎制作流水灯

先上核心代码 游戏节点 流水灯的通途可以是 1. 装饰 2. 音乐类多媒体程序&#xff08;如FL中TB-303的步进灯&#xff09; FL Studio Transistor Bass

Stephen Wolfram:ChatGPT 的训练

The Training of ChatGPT ChatGPT 的训练 OK, so we’ve now given an outline of how ChatGPT works once it’s set up. But how did it get set up? How were all those 175 billion weights in its neural net determined? Basically they’re the result of very large…

pycharm、idea、golang等JetBrains其他IDE修改行分隔符(换行符)

文章目录 pycharm、idea、golang系列修改行分隔符我应该选择什么换行符JetBrains IDE&#xff0c;默认行分隔符 是跟随系统修改JetBrains IDE&#xff0c;默认行分隔符 pycharm、idea、golang系列修改行分隔符 一般来说,不同的开发环境和项目对换行格式的使用偏好不同: Windo…

Maven: No compiler is provided in this environment.

在Eclipse中运行Maven项目&#xff0c;报错&#xff1a; No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 解决方法&#xff1a; Windows > Preferences > Java > Installed JREs > Add > Standard VM,…

基于arcFace+faiss开发构建人脸识别系统

在上一篇博文《基于facenetfaiss开发构建人脸识别系统》中&#xff0c;我们实践了基于facenet和faiss的人脸识别系统开发&#xff0c;基于facenet后续提出来很多新的改进的网络模型&#xff0c;arcFace就是其中一款优秀的网络模型&#xff0c;本文的整体开发实现流程与前文相同…

软件测试缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report&#xff08;SBR&#xff09;或软件问题报告Software Problem Report&#xff08;SPR&#xff09; 作用&#xff1a;缺陷报告是软件测试人员的工作成果之一&#xff0c;体现软件测试的价值缺陷报…

针对高可靠性和高性能优化的1200V碳化硅沟道MOSFET

目录 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…

Vue2 第二十一节 Vue UI组件库

移动端常用UI组件 1. Vant https://youzan.github.io/vant 2. Cube UI https://didi.github.io/cube-ui 3. Mint UI http://mint-ui.github.io PC端常用UI组件 1. Element UI https://element.eleme.cn 2. IView UI https://www.iviewui.com 一. Element UI 的引入和使…

SpringBoot项目增加logback日志文件

一、简介 在开发和调试过程中&#xff0c;日志是一项非常重要的工具。它不仅可以帮助我们快速定位和解决问题&#xff0c;还可以记录和监控系统的运行状态。Spring Boot默认提供了一套简单易用且功能强大的日志框架logback&#xff0c;本文将介绍如何在Spring Boot项目中配置和…

SpringBoot核心配置和注解

目录 一、注解 元注解 基本注解 启动注解 二、配置 格式介绍 读取配置文件信息 案例演示1 嵌套读取bean信息 案例演示2 读取Map&#xff0c;List 以及 Array 类型配置数据 案例演示3 三、总结 一、注解 之前我们了解了SpringBoot基础和AOP简单应用&#xff0c;这期来讲…

[Docker实现测试部署CI/CD----Jenkins集成相关服务器(3)]

目录 7、 Jenkins 集成 SonarQubeJenkins 中安装 SonarScanner下载移动修改配置文件 8、Jenkins配置SonarQube安装插件添加SonarQube添加 SonarScanner 9、Jenkins集成目标服务器 7、 Jenkins 集成 SonarQube Jenkins 中安装 SonarScanner SonarScanner 是一种代码扫描工具&am…

【stm32】初识stm32—stm32环境的搭建

文章目录 &#x1f6f8;stm32资料分享&#x1f354;stm32是什么&#x1f384;具体过程&#x1f3f3;️‍&#x1f308;安装驱动&#x1f388;1&#x1f388;2 &#x1f3f3;️‍&#x1f308;建立Start文件夹 &#x1f6f8;stm32资料分享 我用夸克网盘分享了「STM32入门教程资料…

【Android】控件与布局入门 - 简易计算器

目录 1. 基础开发环境 2. 计算器的布局和相关按钮 3. 计算器的主要运算逻辑 4. APK 文件 5. 项目源码 1. 基础开发环境 JDK&#xff1a;JDK17 Android Studio&#xff1a;Android Studio Giraffe | 2022.3.1 Android SDK&#xff1a;Android API 34 Gradle: gradle-8.0-bi…

参考RabbitMQ实现一个消息队列

文章目录 前言小小消息管家1.项目介绍2. 需求分析2.1 API2.2 消息应答2.3 网络通信协议设计 3. 开发环境4. 项目结构介绍4.1 配置信息 5. 项目演示 前言 消息队列的本质就是阻塞队列&#xff0c;它的最大用途就是用来实现生产者消费者模型&#xff0c;从而实现解耦合以及削峰填…

Android中简单封装Livedata工具类

Android中简单封装Livedata工具类 前言&#xff1a; 之前讲解过livedata和viewmodel的简单使用&#xff0c;也封装过room工具类&#xff0c;本文是对livedata的简单封装和使用&#xff0c;先是封装了一个简单的工具类&#xff0c;然后实现了一个倒计时工具类的封装. 1.LiveD…

JVM之类加载与字节码(一)

1.类文件结构 一个简单的HelloWorld.Java package cn.itcast.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } }编译为 HelloWorld.class 后的样子如下所示&#xff1a; […

【广州华锐视点】葡萄种植VR虚拟仿真实训平台

随着虚拟现实(VR)技术的不断发展&#xff0c;越来越多的教育领域开始尝试将VR技术应用于教学中。在葡萄栽培这一专业领域&#xff0c;我们开发了一款创新的VR实训课件&#xff0c;旨在为学生提供沉浸式的互动学习体验。本篇文案将为您介绍葡萄种植VR虚拟仿真实训平台所提供的互…