从零开始,手把手教你本地部署Stable Diffusion AI绘画(Win最新版)

img

本号之前有发过一篇win平台的教程,由于是去年10月发布的,而Al绘画技术发展很快,那篇教程已经有些不适用了,有些同学执行到第二步就出错了。

应广大同学的期望,我更新一版新版详细教程。

img

一、前言

1.为什么要本地部署

因为没有生成数量的限制,不用花钱,不用被NSFW约束,生成时问快,不用排队,自由度

高,插件丰富,功能众多,可以调试和个性化的地方也更多。

如果说,会用各大在线的Al绘图平台来生成图像的话,算是Al绘画领域的小学生级别。

那么,如果会使用本地化部署来运行A绘画的话,那就已经算得上是高中毕业,进入成年啦。

等你能够使用A绘图指哪打哪,想怎么画怎么画,那就已经是大学毕业,学成归来的牛逼人

物啦。

2.本地化部署的要求

本地化部署运行虽然很好,但是也有一些基本要求

(1) 需要拥有NVIDIA显卡,GTX1060 (或者同等算力的N卡)以上,显存4G以上。

(2) 操作系统需要win10或者win11的系统。(如果是MacOS的同学,请看这里)

(3) 内存16G或者以上,至少有一个128G以上的SSD固态硬盘。

(4)如果不知道自己电脑配置的,可以下载一个鲁大师或者类似软件,点击硬件检测,就能看到显卡,显存,CPU,内存等信息。

(5) 最好会魔法上网,否则网络波动,有些网页会打不开,有些下载很慢

(6)耐心,多尝试,多搜索。这个教程我已经重复过多次,因此很多问题都踩过坑并写出来了,还有很多学员踩坑的问题也都放在里面了。所以请放心,一定能跑通的。

(7) 我的电脑配置供大家参考,Win11,i5,NVIDIA GT1060 5G显存,16G内存

生成一张20 Step的图大概20-30s (若使用更高性能的电脑,生成速度更快。)

如果满足相关软硬件要求,请继续往下看

3.部署的AI绘画项目简介

AI绘画开源项目其实有蛮多个,但是最受欢迎,功能最丰富,且最易用的开源项目之一,就是Stable diffusion WebUl,因此我们是以Stable diffusion webui的本地部署为例。

img

(本地Webui版AI绘图界面)

二.部署算法环境:

1.下载miniconda,用于配置基础算法环境。

这个是用来管理python版本的,他可以实现python的多版本切换。

下载地址: http://docs.conda.io/en/latest/miniconda.html

img

安装时按默认的一路next就行。

2.打开miniconda,

img

输入

conda -V 

弹出版本号即为正确安装

img

(显示conda版本,那就对了)

  1. 在miniconda小窗里,执行下面语句,
conda config --set show_channel_urls yes 

接着运行

conda clean -i 

清除索引缓存

4.创建python 3.10.6版本的环境,叫sdwebui好了

运行下面语句,(注意,这一步一定要内外网通畅,否则会报错。多执行几次。)

conda create --name sdwebui python=3.10.6

提示你是否要继续安装,输入y,并回车。

img

显示下面这个界面,这步就完成了。程序已经在你的路径C:\ProgramData\Miniconda3\envs\sdwebui已经创建了一个新的项目。

img

5,激活项目环境

输入

conda activate sdwebui

回车。

img

6.升级pip并更改默认库包下载地址为清华镜像站。

依次执行下面的两行语句,每一行输入后回车,等执行完再输入下一行,再回车。

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

不报错就是完成了。报错了就依次执行多几次。

  1. 安装git,用来克隆下载github的项目,比如本作中的stable diffusion webui这个开源项目。

(1)前往git官网 http://git-scm.com/download/win下载相关安装包

img

(2)下载好后,一路默认安装,点next即可。

安装完成之后,回到刚刚的miniconda小窗口,并输入并执行下面指令。

git --version

查看git的版本,显示了版本号即安装成功。

img

(3)如果报错,显示说“‘git’ 不是内部或外部命令,也不是可运行的程序”。(如果不报错有显示git版本,则跳过这一步,进入第8步)

那么,把git的bin文件夹地址和git-core的文件夹地址放到windows系统变量的path里面。

默认gitbin文件夹是:C:\Program Files\Git\bin

默认gitcore文件夹地址是:C:\Program Files\Git\mingw64\libexec\git-core

把地址添加到环境变量的Path里面。

操作路径是:开始-设置-系统-高级系统设置-环境变量-path-新建。(具体见下图)

img

添加完后,你在miniconda里面,输入

git --version

就能出现git版本号啦。

8.安装CUDA

cuda是NVIDIA显卡用来跑算法的依赖程序,所以我们需要它。

打开NVIDIA cuda官网, http://developer.nvidia.com/cuda-toolkit-archive

(这里有人可能会打不开网页,如果打不开,请用魔法上网。)

你会发现有很多版本的CUDA,下载哪个版本呢?

img

回到一开始的miniconda的小窗,输入

nvidia-smi

查看你的cuda版本。

img

(在这里输入nvidia-smi的时候,有可能会显示“‘nvidia’ 不是内部或外部命令,也不是可运行的程序”。

这时候,需要确认你的显卡是否为Nvidia的显卡。

如果是,则检查自己的显卡驱动是否最新版,可以用鲁大师或者驱动精灵之类的软件更新驱动至最新。

如果更新驱动还不行,则把C:\Program Files\NVIDIA Corporation\NVSMI添加到系统环境变量。)

比如我的显卡cuda是11.7版本,所以我就下载11.7.1即可。

img

然后安装自己的系统选择win10或者11,exe local,download

下载完后安装,这个软件2个多G,可以安装在c盘以外的地方。比如D盘,节省系统盘空间。

好了,安装好之后,电脑的基础环境设置终于完事了。

下面开始正式折腾stable diffusion了。

三、stable diffusion环境配置

1.下载stable diffusion源码

确认你的miniconda黑色小窗显示的是

(sdwebui) C:\Users\Administrator>

这代表着你正在sdwebui这个程序环境里面。

接着我们要安装stable-diffusion-webui本体了。

先看看你想安装在哪个盘,建议放在非系统盘的其他盘根目录。最好是SSD盘,加载模型速度会快一些。

比如我安装在F盘。我就输入下面指令再回车。(安装在其他盘同理)

F:

img

接着执行下面指令克隆SD项目代码:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

等到页面显示“done”,则克隆完成。

img

2.下载SD训练模型

打开 https://huggingface.co/stabilityai/stable-diffusion-2-1/blob/main/v2-1_768-ema-pruned.ckpt

点击download,下载模型。大约5.2G。

下载完把这个训练模型v2-1_768-ema-pruned.ckpt放入models\Stable-diffusion文件夹里面。(我的文件夹是“

F:\stable-diffusion-webui\models\Stable-diffusion“)

注:

(1)这里可能提示需要注册或同意协议之后才能下载,那就注册并同意。

(2)models\Stable-diffusion这个文件夹,专门存放用于生成AI绘图的绘图元素的基础模型库。后续如果在其他网站比如civitai之类的地方下载的ckpt或者safetensors文件也是放在这个文件夹里面。

3.准备开启运行ai绘图程序sd-webui

在miniconda的黑色小窗,执行下面指令,进入项目文件夹:

cd stable-diffusion-webui 

执行下面指令, 打开webui的应用程序,

webui-user.bat

接下来就是等待系统自动执行。

直到系统提示,running on local URL: http://127.0.0.1:7860

这就代表,你可以开始正式使用AI画画啦~

注意:

(1)这一步要下载不少的依赖程序,网络一点波动都可能会报错。所以安装过程当中多次报错也很正常,需要耐心和时间多次尝试。多次执行webui-user.bat指令。

(2)不要关闭黑色小窗,哪怕它几分钟甚至20分钟没有任何变化。直到它报错再进行下一次尝试。

(3)如果提示连接错误,可能需要开启或者关闭魔法上网,再重新执行webui-user.bat命令。

(4)如果不小心退出了黑色窗口,则重新点击:开始菜单-程序-打开miniconda窗口,依次输入执行

conda activate sdwebui
F:
cd stable-diffusion-webui
webui-user.bat

(因为我是安装再f盘,所以我输入”F:”,你如果安装在其他盘,则修改成其他盘符,比如”D:”, “E:”之类)

(5)如果长时间卡在Installing gfpgan(或者installing clip,installing open_clip)这个环节,那么进入F:\stable-diffusion-webui文件夹下面,找到launch.py这个文件,用记事本打开。

在第200多行到300行的位置,找到这段代码。

img

并在“https://github.com/xxx”的最前面,加上:https://ghproxy.com/

加三个位置,变成如下状态,

img

然后ctrl + s保存后退出。

这就相当于让原来从github下载相关程序包变成了走国内镜像下载相关程序包,这样会增加网络的稳定性和网络速度。

改完之后,下面继续执行webui-user.bat。

(4)如果改了launch.py文件, 还卡在gfpgan环节,那么记得关闭外网功能。让下载走通用线路。

(5)安装完gfpgan,clip,open_clip等几个大头之后,后面还有一些自动安装的依赖项,如果比较慢,记得打开外网。总之,感觉卡慢或者报错之后,则切换调节网络后再重新执行webui-user.bat指令。

4.打开webui网页版

当黑色窗口提示,running on local URL: [http://127.0.0.1:7860 的时候,如下图

img

不要关闭黑色窗口,接着用浏览器(比如谷歌浏览器chrome)打开http://127.0.0.1:7860,就是AI绘画主界面啦。

你可以直接在左上角的文本框输入prompt提示词,

比如:pandas eating bamboo (熊猫在吃竹子)

然后点击右侧的橙色按钮Generate,过一小会,就能看到你画出来的第一张图啦。

img

(注意,如果写了prompt点击generate后无法生成图片,看见黑色小框显示“float 32“之类的关键字,则在webui页面的Settings-stable-diffusion最下面,勾选float32的选项框。接着点击上方的Apply Settings应用,然后按F5刷新页面后,即可正常使用。)

img

恭喜你,历尽千辛万苦,终于完成了stable diffusion webui的安装,也成为新潮的AI玩家之一啦,欢迎来到新世界,为你骄傲,笔芯~

三.答疑

1.之后每次打开stable-diffusion-webui都要这么麻烦吗?

不用,之后每次打开只要1分钟,简单6步即可完成

第一步,打开miniconda,

第二步,执行conda activate sdwebui,

第三步,执行F:

第四步,执行cd stable-diffusion-webui

第五步,执行webui-user.bat. 等待黑色小窗出现[http://127.0.0.1:7860 字样,

第六步,浏览器打开[http://127.0.0.1:7860

现在,即可开始作画。(注意,第三步是因为我安装在F盘,所以输入F: ,你如果安装在其他盘,记得改成自己的盘符,比如D: E: G:等等)

2.我还是觉得安装太麻烦,有问题能问你吗?你能帮我吗?

可以,私我,但不保证回复时间。

3.安装好了,怎么用呢?

请查看本号的AI绘图相关文集,里面有很多好玩的用法介绍。

另外,本号觉悟之坡也长期分享AI绘图领域的知识技巧,欢迎关注学习交流。

4.内外网问题怎么办?

由于某种原因,抱歉不能出相关教程。如果需要协助,可以联系我单独协助,比如通过帮忙下载好大文件再通过网盘分享的方式来解决。

5.为什么要自己部署,这么麻烦,不可以下载整合包吗?

当然可以,整合包的好处就是方便,快捷。直接下载几个几十G的文件,即可直接打开,动动鼠标就能使用。

但是也有缺点,

(1)整合包是别人开发和维护的,可能会有后门隐患。

(2)Stable diffusion本身就是开源的,具有开放的精神,因此有很多丰富的插件和源源不断的新功能。

而整合包又让他变成了封闭版,之后如果自己想要玩新的插件,功能,或者升级stable diffusion,都需要依赖整合包的开发者,会麻烦很多。如果别人没有及时更新呢?如果别人不更新了呢?

因此,个人不太建议使用整合包。

6.每次启动的时候,miniconda小黑框提示说xformers缺失,要管吗?

可以不用管,也能正常使用AI绘画。如果你想管的话,用记事本打开stable-diffusion-webui下面的webui-user.bat文件,找到“COMMANDLINE_ARGS=“,后面增加”–xformers”,如下图,接着保存并关闭窗口。

img

关闭网页,关闭miniconda黑色小窗。重新打开webui,这时候系统会自动下载安装xformers,下次就不会报错了。有xformers,据说跑图速度会略快一些些。我这边实测感觉没啥区别。

关于AI绘画技术储备

学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助!

👉CSDN大礼包:《StableDiffusion安装包&AI绘画入门学习资料》免费分享

请添加图片描述

对于0基础小白入门:

如果你是零基础小白,想快速入门AI绘画是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:stable diffusion安装包、stable diffusion0基础入门全套PDF,视频学习教程。带你从零基础系统性的学好AI绘画!

零基础AI绘画学习资源介绍
👉stable diffusion新手0基础入门PDF👈

(全套教程文末领取哈)
在这里插入图片描述

👉AI绘画必备工具👈

在这里插入图片描述

👉AI绘画基础+速成+进阶使用教程👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉大厂AIGC实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉12000+AI关键词大合集👈

在这里插入图片描述
这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

请添加图片描述

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

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

相关文章

day21 力扣669. 修剪二叉搜索树 力扣108.将有序数组转换为二叉搜索树 力扣538.把二叉搜索树转换为累加树

修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关…

《设计模式之禅》笔记摘录 - 7.中介者模式

中介者模式的定义中介者模式的定义为:Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently…

Flutter:上传图片,选择相机或相册:wechat_assets_picker

图片选择功能:可选单张,或多张。 1、showModalBottomSheet(选择相册/相机) 2、WechatImagePicker(选取图片) 3、CompressMediaFile(图片压缩)1、ActionSheetUtilimport package:duca…

pytest--0

1 pytest 使用方式 pytest测试框架-- 基本功能使用详解 2 pytest-mock常用方式 pytest–1–pytest-mock常用的方法 3

multiprocessing.Pool 中的 pickle 详解

前言: 在 Python 的 multiprocessing.Pool 中,任务和数据需要通过序列化(pickle)传递给子进程。pickle 是 Python 的内置序列化模块,用于将 Python 对象转换为字节流,以便在进程间通信时传递。然而&#xf…

Java集合框架体系详解:List/Set/Map接口对比与核心实现原理

一、集合框架核心接口对比 1.1 List/Set/Map接口特性接口类型特性描述典型实现List有序可重复,支持索引访问ArrayList/LinkedListSet无序不可重复,基于哈希表或树实现HashSet/TreeSetMap键值对存储,键唯一值可重复HashMap/TreeMap核心差异&am…

LeafletJS 进阶:GeoJSON 与动态数据可视化

引言 LeafletJS 作为一个轻量、灵活的 JavaScript 地图库,以其对 GeoJSON 数据格式的强大支持而闻名。GeoJSON 是一种基于 JSON 的地理数据格式,能够表示点(Point)、线(LineString)、多边形(Po…

【STM32实践篇】:F407 时钟系统

文章目录1. 时钟与启动2. CubeMX 时钟树2.1 时钟源2.2 PLL 锁相环2.3 时钟分发与选择2.4 频率限制1. 时钟与启动 复位默认时钟:系统复位后,CPU 时钟默认由 16MHz 内部 RC 振荡器(HSI)提供,该 RC 振荡器经工厂校准&…

纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取

纯前端html实现图片坐标与尺寸&#xff08;XY坐标及宽高&#xff09;获取。用于证书图片或pdf打印的坐标测定。 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>纯html前端实现图片坐标与尺寸&am…

飞睿UWB超宽带定位测距技术,数字钥匙重塑智能生活,高精度厘米级定位无感解锁

最近&#xff0c;数字钥匙领域动作频频&#xff0c;科技巨头与车企正掀起一波创新浪潮。小米15S Pro搭载恩智浦UWB芯片&#xff0c;用户靠近闸机即可无感通行深圳云巴一号线&#xff0c;轻触小米YU7车门自动解锁&#xff0c;实现手机-汽车-公共交通的无缝数字钥匙生态。在智能家…

基于springboot+vue+mysql平台的医疗病历交互系统(源码+论文)

一、开发环境 相关技术介绍 B/S模式分析 C/S模式&#xff1a;主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据组件交互。服务器程序负责系统资源&#xff0c;如管理信息数据库的有效管理。中间件负责连…

arm架构,arm内核,处理器之间的关系

一、情景分析 我们经常说&#xff0c;stm32f103是采用cotex-M3内核&#xff0c;基于armv7架构设计的。 那么&#xff0c;stm32f103、cotex-M3、armv7之间有什么关系呢&#xff1f; 二、层次分析 1. 架构&#xff08;Architecture&#xff09; 定义&#xff1a;架构是处理器…

基于PHP的招投标系统_603gk

目录具体实现截图课程项目技术路线开发技术介绍PHP核心代码部分展示系统测试详细视频演示/源码获取具体实现截图 课程项目技术路线 招投标系统后端采用 PHP 语言搭配Thinkphp或者 Laravel 框架&#xff0c;PHP 语法简洁且功能强大&#xff0c;Laravel 或者Thinkphp框架能优化代…

深入解析 JavaScript 中的 `$.ajax()`:专业指南与实战示例

文章目录一、为什么需要 $.ajax()&#xff1f;二、核心语法解析三、关键参数深度剖析四、实战示例&#xff1a;从基础到进阶五、错误处理最佳实践六、性能与安全优化七、现代替代方案对比八、总结作为网站编辑&#xff0c;我将带您深入剖析 jQuery 的 $.ajax() 方法。本文不仅涵…

Flutter 前端开发中的常见问题全面解析

Flutter 开发中的常见问题全面解析一篇给 Flutter 开发者「灵儿」里里外外都能看的问题项。从基础开发到打包上线&#xff0c;每一步都充满坑&#xff0c;我们详细列出「环环盗光」的那些场景和解决思路&#xff01;【基础系统】开发环境问题 1. flutter doctor 报错 常见错误:…

STM32 单片机的停车场管理系统设计与实现

基于 STM32 的停车场管理系统设计与实现摘要随着城市汽车保有量的快速增长&#xff0c;停车场管理的效率与智能化水平愈发重要。本文设计并实现了一套基于 STM32 单片机的停车场管理系统&#xff0c;整合车辆检测、车位引导、计费管理及信息交互等功能。系统以 STM32 为控制核心…

STM32 写选项字 关键要加载HAL_FLASH_OB_Launch

AI乱写&#xff0c;还是得自己来&#xff01;void Write_OptionBytes_IWDG_STDBY(void) {FLASH_OBProgramInitTypeDef OBInit;HAL_FLASHEx_OBGetConfig(&OBInit); // 获取当前选项字节配置[6,7](ref)// 检查当前nRST_STDBY位&#xff08;IWDG_STDBY相关位&#xff09;是否…

153.在 Vue 3 中使用 OpenLayers + Cesium 实现 2D/3D 地图切换效果

&#x1f3ac; 效果演示截图 ✨ 前言 在实际项目开发中&#xff0c;我们经常需要提供「二维地图 三维地形」的可视化效果切换&#xff0c;例如&#xff1a; 智慧农业展示耕地分布 三维地形起伏&#xff1b; 智慧城市展示建筑物点位 三维城市&#xff1b; 数字孪生场景中&…

纯C++11实现!零依赖贝叶斯情感分析系统,掌握机器学习系统工程化的秘密!

本文深度剖析了一个完全基于C++11标准库实现的贝叶斯情感分析系统。该系统采用模块化设计,实现了从文本预处理、特征提取到朴素贝叶斯分类的完整机器学习流水线。 1. 系统架构概览 1.1 技术栈选择与设计哲学 该系统完全采用C++11标准库实现,无任何外部依赖,体现了"纯…

Android原生Dialog

在原生android里面&#xff0c;有两种dialog写法&#xff0c;一种是直接使用里面提供的AlertDialog.Builder方法去使用&#xff0c;另一种是我们自己根据自己的ui来设计&#xff08;自定义&#xff09;。在一般开发中&#xff0c;我们主要使用的是自定义&#xff0c;主要是Aler…