目前,有诸如Midjourney等人工智能绘画网站可供大家来免费使用,但是由于是免费资源肯定会在机器性能和使用次数方面有所限制,因此如果能将人工智能绘画工具部署在本地运行就会突破机器性能和使用次数等方面的限制。可能所有人类画师都得发出一句“既生瑜,何生亮”的感叹,因为AI 绘画通用算法Stable Diffusion已然超神,无需美术基础,也不用经年累月的刻苦练习,只需要一台电脑。
Stable Diffusion正是这样一种可以部署在本地环境上运行的人工智能绘画工具,图形运算主要用到的是显卡的性能,因此请确保你的显卡内存至少为4G,Stable Diffusion首先需要搭建本地的UI界面即:stable-diffusion-webui,然后下载使用模型文件即可开始创作,模型可以直接使用别人训练好的。
安装Stable Diffusion看似是一件很简单的事情,但是对于一般没有代码和编程技术的朋友则显得不够友好,在安装过程中会出现各种各样的问题,因此本教程将一步一步带领大家来完成安装。
先来一张效果图展示
安装部署这个AI项目要求运行的电脑需要较高显卡(图形处理处理能力),Windows与mac都可以运行,内存推荐16G及以上,硬盘推荐使用固态硬盘,不需要外网梯子也行。
(1)Windows电脑运行,显卡最好是拥有Nvidia独立显卡、RTX20系统以后的显卡,集成显卡就不用试了,仅生成图片推荐8G显存(4G是最低保障配置)训练推荐大于12G(越大越好)
(2)Mac电脑运行,最好是M1芯片,操作系统macOS在12及以上版本,Monterey (12), or Ventura (13)测试成功过(本人亲测Big Sur (11)版本折腾好久没安装成功),本人电脑配置和系统
国外太慢,可以去国内地址:https://brew.idayer.com/guide/start/。如下图
img
执行图片红框的命令,就完成了第一步
/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
查看安装版本:brew -v 。打出版本号即安装成功。
所以我们需要,手动安装下载并安装python3.10版本,下载地址:https://www.python.org/downloads/macos
下载之后直接下一步下一步安装就行,打开一个新的终端窗口并运行(启动台中搜索终端,打开)
输入python3 -V检测版本
在终端输入以下命令安装基本软件工具
brew install cmake protobuf Rust git wget
在终端窗口使用git命令去下载项目到本地:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
执行之后会默认下载到你的这个目录下,如图,路径中这个"mac"是你的电脑用户名,每个人的电脑用户名可能不一样
打开浏览器访问Github:https://github.com/TencentARC/GFPGAN去来下载GFPGAN插件,打开网页后向下拖拽点击如下图所示的“GFPGANv1.3.pth”插件即可开始下载。
进入页面之后,点击红框1.3就会下载了
完成下载后直接将GFPGANv1.3.pth拖拽至stable-diffusion-webui文件夹中即可,如:“/Users/mac/stable-diffusion-webui/”。
访问Stable Diffusion Models网站来进行模型的下载,以Stable Diffusion v1.5为例
地址:https://rentry.org/sdmodels
接着点击这个
最后点击这个。文件有点大,下载的时间会有些久
当模型文件下载完成后将此模型文件移动到“models”文件夹的“Stable-diffusion”中如:“/Users/mac/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned.ckpt”
在终端窗口先执行:cd stable-diffusion-webui。目的是进入该文件夹执行后续命令
运行项目命令:./webui.sh
如果运行成功,你将会看到如下图(第一次运行,一般情况都会报各种各样的错误,可直接查看章节4 . 安装过程中遇到的问题)
访问运行页面:http://127.0.0.1:7860/
Stable Diffusion的运行依赖于Python,因此为了保证整个项目能成功运行我们需要在本地环境安装Python,但是Stable Diffusion目前与最新版Python的兼容性并不是特别好,因此建议安装Python 3.10.9或者Python 3.10.10版本。
请确保安装Python时 勾选“ Add Python 3.10 to PATH”选项。
关于具体安装Python的方法可以参照文章:如何在Windows11上安装Python为了确保Python成功安装,请打开CMD终端窗口并输入“python”命令,如果能查询到Python的相关信息则证明安装已经成功,否则请重新安装。
安装git来克隆完整的stable-diffusion-webui仓库,直接访问:https://git-scm.com/download/win来进行下载,对于目前的大部分电脑来说都是64位的系统因此直接点击下载网页中的“64-bit Git for Windows Setup”。
下载完成后直接点击该EXE文件即可开始运行安装向导,所有选项均选择默认选项进行安装即可。
在电脑的D盘创建一个文件夹如“github”来保存stable-diffusion-webui库文件,进入该文件夹后,右键鼠标在打开的下拉列表中选择“在终端中打开”即可在Windows PowerShell中打开此文件夹,只有在此文件夹中打开终端才能保证后续的安装文件能够正确的安装在当前文件夹。
在打开的Windows PowerShell终端窗口中查看以下提示字符确保Windows PowerShell终端确实是在sd文件夹中打开的。
然后复制以下代码:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
并在Windows PowerShell终端窗口中粘贴并点击回车键运行。
安装过程中请不要关闭电脑或者断网,否则会安装失败。整个过程大概需要几十秒左右,具体安装时间的长短和网络连接速度有关。
安装完成后关闭Windows PowerShell终端窗口,我们可以在github文件夹中看到stable-diffusion-webui文件夹即表示下载成功了。
打开浏览器访问Github:https://github.com/TencentARC/GFPGAN去来下载GFPGAN插件,打开网页后向下拖拽点击如下图所示的“GFPGANv1.3.pth”插件即可开始下载。
img
完成下载后直接将GFPGANv1.3.pth拖拽至stable-diffusion-webui文件夹中即可,如:“C:sdstable-diffusion-webui”。
访问Stable Diffusion Models网站来进行模型的下载,此处以Stable Diffusion v1.5为例进行演示,点击后即可跳转到该模型对应的位置。
点击Repo后面的地址进入huggingface网站来进行下载,当然你也可以使用下面的磁力链接进行下载,具体自己根据实际情况进行选择。
打开huggingface网站网址后切换到“Files and versions”选项卡选择如下图所示的“v1-5-pruned.ckpt”进行下载。
当模型文件下载完成后将此模型文件移动到“models”文件夹的“Stable-diffusion”中如:“D:githubstable-diffusion-webuimodelsStable-diffusion”
在运行webui-user.bat批处理文件之前我们首先要对其进行配置,右键该文件选择编辑即可在记事本中打开此文件开始编辑:在set PYTHON=参数后粘贴当前环境中Python.exe的路径,如:“C:UserszddAppDataLocalProgramsPythonPython311python.exe”。
事实上如果你在安装Python时如果勾选了“ Add Python 3.10 to PATH”选项,那么此步骤可以省略,因为当程序执行时如果发现此参数为空会自动去系统变量中找此信息。
一切配置完成后再次双击运行“webui-user.bat”批处理文件即可在CMD终端窗口中自动运行,此过程可能需要一到两个小时左右,具体时间取决于你的网速
第一次运行时可能需要较长时间,请耐心等待。重要提示:请保持此终端窗口处于打开状态,使用期间切勿关闭,否则项目将无法正常运行。你可能遇到的错误提示:“ RuntimeError: Cannot add middleware after an application has started”,解决方法如下:在 stable-diffusion-webui文件夹中右键打开终端执行以下命令即可解决此错误提示:
.venvScriptspython.exe -m pip install--upgrade fastapi==0.90.1
如果你一切都配置得当的话,那么会出现如下图所示的界面:
复制上图中的“http://127.0.0.1:7860”地址并在浏览器中打开即可看到stable diffusion工具的UI界面,至此本教程完毕,如果你在安装过程中遇到任何问题欢迎在评论区留言和我们交流
如果不想太折腾,也可以使用Docker容器来构建Stable-Diffusion-Webui,同样地,需要拉取线上的Docker配置
因为是在mac上进行测试的,因此我安装的是mac版本,下载地址:https://docs.docker.com/desktop/install/mac-install/
打开终端根据自己的网络下载国内镜像地址还是国外镜像地址
#国外镜像
docker pull siutin/stable-diffusion-webui-docker:latest-cpu
docker pull siutin/stable-diffusion-webui-docker:latest-cuda
#国内镜像
docker pull registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu
大小:6G多
地址:https://hub.docker.com/r/siutin/stable-diffusion-webui-docker
#创建目录
mkdir -p ~/stable-diffusion-webui-docker/models
mkdir -p ~/stable-diffusion-webui-docker/outputs
mkdir -p ~/stable-diffusion-webui-docker/extensions
#赋予权限
sudo chmod -R 777 ~/stable-diffusion-webui-docker
创建目录是为了给webui做数据持久用的,启动的时候会进行挂载
随后直接在终端运行命令启动服务:
docker run -d --name sdw -p 8888:8888 -p 7860:7860 -p 6666:22 -v /Users/zdd/stable-diffusion-webui-docker/models:/app/stable-diffusion-webui/models -v /Users/zdd/stable-diffusion-webui-docker/outputs:/app/stable-diffusion-webui/outputs -v /Users/zdd/stable-diffusion-webui-docker/extensions:/app/stable-diffusion-webui/extensions --rm registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu bash webui.sh --skip-torch-cuda-test --listen --precision full --no-half --use-cpu Stable-diffusion GFPGAN ESRGAN VAE --all --share
docker run:利用指定镜像启动一个容器,需要先在电脑上安装docker,比如win11下需要安装docker desktop并开启hyperv虚拟化。
-d:容器后台执行。
--name sdw:指定容器的名称为sdw。
-p 8888:8888 -p 7860:7860 -p 6666:22:将容器内的几个端口映射出来,来与本机通信,其中mac不支持host模式。
7860端口:webui;8888端口:jupyter lab(需要手动打开,密码7758258);6666端口:ssh(root,密码7758258)
--use-cpu 指定了cpu运行,因为我没有gpu
--name sdw:指定容器的名称为sdw。
-v 可替换自己的本地目录,主要是为了把models、outputs、extensions目录下的数据持久化
registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu:docker run指定的镜像名。如果该镜像未在本地,自动从dockerhub下载
可以使用docker Desktop查看日志或者命令行docker logs sdw -f:
一般问题:
1.内存泄露,切换模型可能会爆容器的内存,终端显示退出状态码137,实际上是因为oom被kill并且直接终止容器。可以选择在docker Desktop中重启服务,爆内存后再运行即可。也可以把容器资源给高一点
总的来说,安装过程简单,但是调试比较费劲,已知的有内存泄漏问题,一旦启动出问题,就需要重启,所以Docker或者k8s中启动还需要测试验证,是否可以推资源解决。
你可能遇到的问题:无法安装gfpgan的原因是网络问题,就算已经科学上网,并设置为全局,也无法从github上下载源代码,从而导致install失败
解决方法:是直接到github下载 GFPGAN 代码到本地,并进行本地安装https://github.com/TencentARC/GFPGAN
除此之外,大部分网友由于网络环境问题无法访问到Github中的部分资源从而导致安装失败,此时需要用记事本打开launch.py文件并找到“def prepare_enviroment(): ”开头的段落,在每个“ https://github.com/”开头的链接前面添加“ https://ghproxy.com/”,变成如图所示的“ https://ghproxy.com/https://github.com/”格式开头,如下图:此处共计需要替换8处,替换完成后保存退出即可:
问题1、如果launch.py修改后还是不行:
可参考使用stable diffusion webui时,安装gfpgan、clip等失败的解决方案
问题2、注意:从launch.py中可以看到要同时安装clip和open-clip,所以如果按照问题1中的方法安装了open-clip,再次双击D:githubstable-diffusion-webuiwebui-user.bat(这里是我的安装位置,大家根据自己的位置查找)时还是会报clip安装失败,可以把github地址改成 https://github.com/chfenglv/CLIP.git 或https://github.com/OpenAI/CLIP.git (前者是后者的fork仓库),其他操作同问题1。
问题3、如果在安装repositories时仍报连接超时(如下图所示):
venv "E:1tianqueStableDiffusionstable-diffusion-webuivenvScriptsPython.exe"
Python 3.10.10 (tags/v3.10.10:aad5f6a, Feb 7 2023, 17:20:36) [MSC v.1929 64 bit (AMD64)]
Commit hash: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
Cloning Stable Diffusion into E:1tianqueStableDiffusionstable-diffusion-webuirepositoriesstable-diffusion-stability-ai...
Traceback (most recent call last):
File "E:1tianqueStableDiffusionstable-diffusion-webuilaunch.py", line 380, in <module>
prepare_environment()
File "E:1tianqueStableDiffusionstable-diffusion-webuilaunch.py", line 315, in prepare_environment
git_clone(stable_diffusion_repo, repo_dir('stable-diffusion-stability-ai'), "Stable Diffusion", stable_diffusion_commit_hash)
File "E:1tianqueStableDiffusionstable-diffusion-webuilaunch.py", line 167, in git_clone
run(f'"{git}" clone "{url}" "{dir}"', f"Cloning {name} into {dir}...", f"Couldn't clone {name}")
File "E:1tianqueStableDiffusionstable-diffusion-webuilaunch.py", line 113, in run
raise RuntimeError(message)
RuntimeError: Couldn't clone Stable Diffusion.
Command: "git" clone "https://github.com/Stability-AI/stablediffusion.git"Command: "git" clone "https://github.com/Stability-AI/stablediffusion.git" "E:1tianqueStableDiffusionstable-diffusion-webuirepositoriesstable-diffusion-stability-ai"
Error code: 128
stdout: <empty>
stderr: Cloning into 'E:1tianqueStableDiffusionstable-diffusion-webuirepositoriesstable-diffusion-stability-ai'...
fatal: unable to access 'https://github.com/Stability-AI/stablediffusion.git/': OpenSSL SSL_read: Connection was reset, errno 10054
方法一:按照上面launch.py的修改方法,把github地址替换成如下,再次双击webui-user.bat文件。
方法二:本地安装
step1:从launch.py中找到要下载的依赖github地址;
step2:直接打开github链接并下载zip到本地后解压 或git clone 到指定目录就行了。如针对示例里的报错的,可执行以下命令:git clone https://github.com/Stability-AI/stablediffusion.git E:/1tianque/StableDiffusion/stable-diffusion-webui/repositories/stable-diffusion-stability-ai
备注:如果是zip包解压,stable-diffusion-stability-ai文件夹下直接是stablediffusion的内容,不要多加stablediffusion文件夹,如下图:
step3:所有依赖下载后的文件目录结构
给pip3设置清华源
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
如果你的英语还不错,就直接跳过这一步吧,如果你的英语和我一样稀烂,那么可以考虑设置一个中文包,具体步骤如下:
1.直接去github上下载来的快一些,打开命令行终端(或者直接打开网站https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN下载zip到stable-diffusion-webui/extensions目录
)
cd ~/stable-diffusion-webui/extensions && git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git
2.重新执行webui.sh访问http://127.0.0.1:7860,在出来的列表中如果可以找到 zh_CN Localization,就说明已经加载成功:
3. 选择Settings,再按照如下顺序点击:
点击上面的Apply settings按钮,Reload UI,等待重启结束后即可。
配置好Stable-Diffusion-Webui环境之后,访问http://127.0.0.1:7860:
在Prompt文本框中填入引导词:
Tall buildings, people bustling, heavy traffic, staggered light and shadow, the beauty of the city is conspicuous before.
随后点击右侧Generate生成按钮即可,这里引导词的意思是:高楼林立,人群熙熙攘攘,车水马龙,光影交错,城市之美尽显眼前。
注意引导词需要使用逗号分隔。
后端开始进行训练:
遗憾的是,引导词不支持中文,但可以配置权重,数值从0.1~100,默认状态是1,低于1就是减弱,大于1就是加强:
(Tall buildings:1.1), people bustling(1.61),(heavy traffic:0.3),(staggered light and shadow:1.3)
Stable-Diffusion-Webui也支持Negative prompt(反向引导词)。
就是用文字描述你不想在图像中出现的东西:
对图片进行去噪处理,使其看起来更像你的提示词;同样使其看起来更像你的反向提示词。
同时观察正方向两者之间的差异,并利用它来产生一组对噪声图片的改变,将最终结果移向前者而远离后者。
默认通用反向引导词:
lowres,bad anatomy,bad hands,text,error,missing fingers, extra digit,fewer digits,cropped,worst quality, low quality,normal quality,jpeg artifacts,signature, watermark,username,blurry,missing arms,long neck, Humpbacked,missing limb,too many fingers, mutated,poorly drawn,out of frame,bad hands, owres,unclear eyes,poorly drawn,cloned face,bad face
除了引导词,还可以调整采样迭代步数 (Sampling Steps)。
系统先随机生成一个基础的图片,然后一步步的调整图片,向引导词 Prompt 靠拢
Sampling Steps参数就是告诉人工智能,这样的步骤应该进行多少次。
次数越多,每一步训练也就越小越精确。当然了,成本也会越高,同时每一次训练的时间也会成同比增长。
除了迭代步数,也可以自由地选择采样方法(Sampling method)
也就是让Stable-Diffusion-Webui具体使用用什么算法来训练图片模型。
默认算法是Euler a :富有创造力,不同步数可以生产出不同的图片。但是超过30步左右基本就没有实质化的增益效果。
Euler算法:最简单的算法,训练速度也是最快的。
LMS算法:Euler的延伸算法,相对更稳定一点,30步就比较稳定了
PLMS:优化过的LMS算法
其他的一些参数:
生成批次Batch count/n_iter:同样的配置,循环跑几次
每批数量 Batch size:同时生成多少个图像,增加这个值可以并行运行,但也需要更多的显卡显存。
提示词相关性 CFG Scale:图像与引导词匹配程度。增加这个值将导致图像更接近引导词,但过高会让图像色彩过于饱和。一般在5~15之间为好,7,9,12是3个常见的设置值。
宽度 X 高度 Width X Height:单位是像素,适当增加尺寸,后台会试图填充更多的细节进来。
如果需要一些比较有个性定制化模型,可以在http://civitai.com平台进行挑选和下载,需要注意的是,该平台上的模型鱼龙混杂,良莠不齐,不能说是蔚为大观,但多多少少有点泥沙俱下的意思,所以最好不要在比较正式的公共(工作)环境打开该平台,否则结果可能会令人非常尴尬。
stable diffusion提供了一系列的模型:
擅长绘制风景类画,整体偏欧美风,具有划时代意义
同上,但生成的作品更具艺术性
图像生成质量大幅提升,原生支持768x768等
设定随机种子后,每次将生成相同的图像,无随机性,可方便复现
下载上述模型,将模型放到目录/stable-diffusion-webui/models/Stable-diffusion下,如果UI(前面所述的软件界面)是打开的,可按照如下顺序点击生效:
其中Stable-Diffusion-Webui默认下载的基础模型在项目目录的models/Stable-diffusion文件夹中:
/stable-diffusion-webui/models/Stable-diffusion
模型名称是v1-5-pruned-emaonly.safetensors,体积是4.27GB。
这里我们选择相对比较潮流的赛博朋克风格模型:https://civitai.com/models/1102/synthwavepunk
将下载的模型放入models/Stable-diffusion目录。
随后重启Stable-Diffusion-Webui服务:
cd ~/stable-diffusion-webui/ && ./webui.sh
可以看到能够选择新的模型
引导词:
concept art, 4k, intricate, pinup, a woman, beautiful face, embroidery, lace, hyper-realistic, highly detailed, octane render, concept art, smooth, 8k, dancing princess, snthwve style, nvinkpunk, by jeremy mann, by sandra chevrier, by dave mckean and richard avedon and maciej kuciara
训练结果:
还有很多好玩的模型,更多使用技巧还需要慢慢研究,最后,一起和AI愉快的玩耍吧!但是很费资源,要想马儿跑得快,最好是上GPU。
推荐几个网址
下模型的C站:https://civitai.com/
下模型的huggingface:https://huggingface.co/
tag标签超市:https://tags.novelai.dev/
Stable Diffusion 法术解析:https://spell.novelai.dev/
参考文档: