【AI】Windows 10 上搭建 stable-diffusion-webui 实现 AI 作画
# Windows 10 搭建 stable-diffusion-webui 实现 AI 作画传说中的 “AI作画取代画师职业” 就是使用 `stable-diffusion` 跑一个训练好了的针对二次元画风的神经网络来进行作画。
输入一个正面提示文本,一个负面提示文本,其它参数不用动,基本就能画出你要的内容。
当然毕竟是 AI 经常也会画出一些让人感到可怕和反胃的奇怪内容,所以使用的时候要注意。
## 准备
在准备搭建前,你需要这几个东西:
* 梯子
* NVIDIA 显卡,显存至少 4GB(实测 RTX 2070 生成一张图需要大约 10 秒)以及最新显卡驱动。
* cuDNN
* zlibwapi.dll
* `stable-diffusion-webui` 源码
* Python 版本 >= 3.8 推荐 Python 3.10
* git(会被 Python 调用,用于下载一堆东西)
* 文本编辑器(修改 stable-diffusion-webui 的一些 python 脚本,使其知道要翻墙)
* 网页浏览器(用来使用 WebUI、观察生成出来的图)(都行,推荐 Chrome、Mozilla 或者 Edge)
### 下载 cuDNN
#### 从 NVIDIA 下载:
https://developer.nvidia.com/rdp/cudnn-download
打开后,提示 “NVIDIA Developer Program Membership Required” 意思就是你需要注册 NVIDIA 账号。已有账号的话 Login,没有账号则点 Join now 然后注册账号。注册账号的时候需要你填写一些信息,比如名字、电话、公司、国家。这块稍微填填,不必太详细。
登录进去后,它会提示你要下载 CUDA 10.x 还是 11.x。选择 11.x,然后下载 Local Installer for Windows (Zip),你会得到一个压缩包,备用。
我下载的文件名 `cudnn-windows-x86_64-8.6.0.163_cuda11-archive.zip`,注意中间那一串版本号内容可能和你下载的不一样。
#### 如果从 NVIDIA 下载不下来,我这里提供一个百度云盘链接
**cudnn-windows-x86_64-8.9.2.26_cuda11-archive.zip**
链接:https://pan.baidu.com/s/118SdClqsPq8HbnxHjQbMkg?pwd=aa55
提取码:aa55
### 取得 zlibwapi.dll
根据 (https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html),zlibwapi.dll 从这里下载:
http://www.winimage.com/zLibDll/zlib123dllx64.zip
下载后得到一个压缩包,备用。
### 代码编辑器
此处**推荐 Sublime Text**,它虽然**不免费**,但是使用体验合理。也可以使用 VSCODE。
**[不推荐 Notepad++](https://www.0xaa55.com/thread-26609-1-1.html)**。
安装代码编辑器后,再安装 git。如果你的 git 已经配置好了,可以跳过下面的安装 git 的步骤。
### 安装 Git
https://git-scm.com/downloads
打开后,选 Windows,下载 Download for Windows,下载后打开安装。
安装的时候,注意每一个步骤,正确选择你需要的选项:
* 代码编辑器选择你常用的代码编辑器比如 Sublime Text
- 如果这一步你没处理的话,它有可能给你使用 Vim。如果你不知道什么是 Vim,那我可以告诉你:这玩意儿味道冲,你肯定不会用,甚至还能吓死你。
* Adjusting the name of the initial branch in new repositories
- 此处指的是新 repo 的初始分支的名字,以前是 `master`,现在据说 `master`这个词不太正确,要用 `main`。
此处可以选“Let Git decide”
* Adjusting your PATH environment
- 此处问的是你打算如何在命令行使用 git。为了确保 Python 脚本能够使用到 git,必须保证 git 在 PATH 里。
此处要选“Git from the command line and also from 3rd-party software”
* Choosing the SSH executable
- 此处选择“Use bundled OpenSSH”
* Choosing HTTPS transport backend
- 一般选择 Use the OpenSSL library。这里选的是 git 使用的 HTTPS 的传输后端。
* Configuring the line ending conversions
- 这里控制 git 对行尾的转换。
此处选择 Checkout as-is, commit as-is。
* Configuring the terminal emulator to use with Git Bash
- 此处选 Use MinTTY (the default terminal of MSYS2)
如果选错了那就傻逼了,你的 cmd 就会变成四不像,一堆 *nix 命令在里面……而且还是用 exe 模拟的,给整怕了。
* Choose the default behavior of `git pull`
- 此处按自己的需求选择,不知道怎么选的话选默认的那个。
* Choose a credential helper
- 选 Git Credential Manager,以后用的时候可以省得输密码。
* Configuring extra options
- 勾选 Enable file system caching 和 Enable symbolic links
* Configuring experimental options
- 一个也别勾选,否则坑死你。
### 安装 Python
进 Python 官方下载页面:(此处给的链接是 3.10.9)
https://www.python.org/downloads/release/python-3109/
打开后,滚动条拉到最底部,找到 (https://www.python.org/ftp/python/3.10.9/python-3.10.9-amd64.exe) 点开下载。
**注意** 安装的时候勾选 “Add python.exe to PATH”。
### 取得 `stable-diffusion-webui` 源码
https://github.com/AUTOMATIC1111/stable-diffusion-webui
下载到本地。
这个地方考虑到它自己会运行 git pull 进行一个 repo 的自动更新,你如果用 git clone 的方式下载的话,它就会自动更新。
## 配置启动环境和脚本
下载 `stable-diffusion-webui` 后,注意确保路径里没有中文和空格,然后进入 `stable-diffusion-webui` 的文件夹。
正常情况下,你会看到它里面有很多的文件和文件夹,比如 `webui-user.bat` 这个启动脚本就是接下来需要修改的。
### 将 cuDNN 的 bin 文件夹加入启动脚本`PATH`
必须经过这一步之后,才能运行 Python 启动脚本,否则你安装的 torch 将无法使用 GPU。
找到之前下载的 cuDNN 的压缩包,将其解压到 `stable-diffusion-webui` 的文件夹里。解压后,进入它的文件夹 (我的是 `cudnn-windows-x86_64-8.6.0.163_cuda11-archive`),找到 `bin` 文件夹,把之前下载好的 `zlibwapi.dll` 放进去。
注意这个 `bin` 文件夹需要在 `PATH` 里,但是不需要修改 Windows 的全局 `PATH` ,只需要在 `webui-user.bat` 这个启动脚本里设置 `PATH` 即可,方法如下:
回到 `stable-diffusion-webui` 文件夹,找到 `webui-user.bat` 文件,右键、编辑(或者拖拽到一个新打开的记事本窗口里),它的内容应该是这样的:
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
call webui.bat
在这个地方进行修改,使 cuDNN 的 `bin` 文件夹也要在 `PATH` 里(cuDNN ),我的代码如下:
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
set PATH=%~dp0\cudnn-windows-x86_64-8.4.1.50_cuda11.6-archive\bin;%PATH%
call webui.bat
需要注意 `set PATH` 那一行的 cudnn 路径需要按照你下载的 cuDNN 版本来。
### 启用梯子
这块如果你能自由访问 github、google 等网站,那你是不需要梯子的。
如果你的梯子是 VPN 方式的,直接开启就好,不需要配置启动脚本。
而如果你的梯子是“代理”、“系统代理”模式的,那你的梯子应该是本地开个端口提供 socks5 服务的那种,此时你需要配置你的环境、修改启动脚本使其能够使用上梯子。此处假设你的梯子开的端口是 1080。
**注意** 如果你的梯子是按流量算的,搭建环境 **需要下载至少 6 GB 的内容**(包括 4 GB 的神经网络,torch,以及一堆 python 软件包等)
这块会用到梯子的命令有两个,一个是 git,一个是 python。其中,python 可以通过在命令行的结尾指定 `--proxy=socks5h://localhost:1080` 来使用梯子,但是必须先安装 `pysocks` 这个包。而 git 的设置就比较坑了:python 在调用 git 进行 clone 操作的时候,**并不会把 python 它自己的梯子选项传递给 git**,导致 git 下载失败。
#### 设置 git 使用梯子
打开 CMD(git bash 也行),运行如下命令:
git config --global http.proxy localhost:1080
git config --global https.proxy localhost:1080
#### 设置 Python 使用梯子
* 先安装 pysocks
使用你的代码编辑器打开 `launch.py` 找到如下的代码:
if not is_installed("torch") or not is_installed("torchvision"):
run(f'"{python}" -m {torch_command}', "Installing torch and torchvision", "Couldn't install torch")
这个代码是给虚拟环境 venv 的 Python 安装 torch,算是这个脚本的第一个安装软件的操作了,但是你需要在这个的前面插入代码检测 pysocks 是否安装,因此这样写:
if not is_installed("pysocks"):
run(f'"{python}" -m pip install pysocks', "Installing pysocks", "Couldn't install pysocks")
if not is_installed("torch") or not is_installed("torchvision"):
run(f'"{python}" -m {torch_command} --proxy=socks5h://localhost:1080', "Installing torch and torchvision", "Couldn't install torch")
这样就确保 pysocks 装上了,并且安装 torch 的过程中会使用梯子。但是还有别的包也要走梯子安装。代码往上翻,找到这个代码:
def run_pip(args, desc=None):
index_url_line = f' --index-url {index_url}' if index_url != '' else ''
return run(f'"{python}" -m pip {args} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}")
这块,还是一样给它添加一个 `--proxy=socks5h://localhost:1080 ` 就可以使用梯子了:
def run_pip(args, desc=None):
index_url_line = f' --index-url {index_url}' if index_url != '' else ''
return run(f'"{python}" -m pip {args} --prefer-binary{index_url_line} --proxy=socks5h://localhost:1080', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}")
保存关闭。
### 初次启动运行脚本。
双击运行 `webui-user.bat`,它开始配置 Python 虚拟环境,安装、下载 `torch` 等软件,然后不出意外它会报错。
No checkpoint found. When searching for checkpoints, looked at:
- file xxxxx\stable-diffusion-webui\model.ckpt
- directory xxxxx\stable-diffusion-webui\models\Stable-diffusion
Can't run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit.
报这个错是因为它要下载神经网络检查点,但是它下载到错误的位置了。我这边在 `C:\Users\0xAA55\Downloads` 这个路径里找到了 `model.ckpt` 这个文件,就离谱。我有一个朋友则是发现这个文件出现在了 `C:\Users\xxxxxx\Desktop` 也就是桌面上。可以对 C 盘进行一个全盘搜文件,就找 `model.ckpt` 这个文件。如果实在找不到,说明它可能根本就没有下载成功。这边我提供一份我自己下载到的 `model.ckpt` 文件的百度盘链接:
链接:https://pan.baidu.com/s/1x2_gAKgXvSOfDQbMbNIekQ?pwd=ckpt
提取码:ckpt
下载后解压。
找到(或者下载并解压了) `model.ckpt` 文件后,把它放到 `stable-diffusion-webui` 文件夹里,然后重新运行 `webui-user.bat`,它应该就能完成初始化和安装,然后打开一个本地端口(默认应该是 `7860`)、提供使用了。
## 使用浏览器打开本地页面 UI,进行 AI 绘图
确保 `webui-user.bat` 启动脚本正常运行后,用浏览器打开 http://localhost:7860 你就可以看到页面了,其中有上下两个文本框,一个是正面提示(Positive Prompt),一个是负面提示(Negative Prompt)。其中,正面提示是你想要看到的绘制的内容,负面提示是你不想看到的绘制的内容。此时你可以上网搜索 “AI 绘图关键词” 然后填写进去,点击右边的按钮进行一个 AI 绘图,并在浏览器上看到效果。
我常用的一个负面提示如下:
multiple breasts, 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, bad feet, single color, ((((ugly)))), (((duplicate))), ((morbid)), ((mutilated)), (((tranny))), (((trans))), (((trannsexual))), (hermaphrodite), (out of frame), extra fingers, mutated hands, ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), ((ugly)), blurry, ((bad anatomy)), (((bad proportions))), ((extra limbs)), (((disfigured))), out of frame, (bad anatomy), gross proportions, (malformed limbs), ((missing arms)), ((missing legs)), (((extra arms))), (((extra legs))), mutated hands,(fused fingers), (too many fingers), (((long neck))), more than one people, more than one light, more than one head, more than one face, more than one body
现在各种运营商也在玩了,比如疼讯,那个美图修修 使用梯子进行github的问题,这里有个小窍门可以避免使用梯子,那就是选择gitee转换,gitee支持将github项目转gitee
一般比较大的github项目,gitee上官方都会定期更新。如果真有gitee没收录的,也可以直接在gitee里创建项目,并在创建时指定github项目的url,最后只需要git clone这个gitee源即可
用gitee就别用梯子。gitee在国内clone的速度非常快。
分享一下反向提示词,训练的时候将生成的不满意的图重新进行预处理,并且要勾选 deepbooru 生成tag,并将需要的反面提示词添加的提示词文本里再进行训练,括号的作用可以提高优先级用的时候吧换行符替换成空格,不需要过滤的删除,偶尔会更新这个帖子
(bad proportions),
(bad anatomy),
(bad shadow),
(bad hands),
bad feet,
bad breasts,
bad ears,
bad animal ears,
bad digit,
bad shoes,
bad gloves,
bad cum,
bad hairs,
bad face,
bad eyes,
bad nipples,
bad knee,
bad tails,
bad mouth,
bad tongue,
bad pantie,
bad camel toe,
bad asshole,
bad anus,
bad pussy,
bad crotch,
bad crotch seam fused anus,
bad thigh gap,
bad collarbone,
bad tentacles,
bad clit,
missing fingers,
((missing arms)),
((missing legs)),
missing breasts,
missing hand,
missing ears,
missing animal ears,
missing limb,
missing digit,
missing feet,
missing nipples,
missing thighs,
missing calf,
missing asshole,
missing thigh gap,
missing collarbone,
missing clit,
(fused fingers),
fused breasts,
fused hand,
fused ears,
fused animal ears,
fused digit,
fused feet,
fused shoes,
fused gloves,
fused cum,
fused hairs,
fused face,
fused nipples,
fused calf,
fused mouth,
fused pantie,
fused cloth,
fused asshole,
fused pussy,
fused anus,
fused crotch,
fused seam,
fused thigh gap,
fused collarbone,
fused tentacles,
fused clit,
dirty face,
dirty teeth,
dirty pantie,
(extra fingers),
(extra limbs),
(extra arms),
(extra legs),
extra breasts,
extra ears,
extra animal ears,
extra digit,
extra feet,
extra shoes,
extra eyes,
extra thighs,
extra calf,
extra knee,
more than one people,
more than one light,
more than one head,
more than one face,
more than one body,
one hand with more than 5 fingers,
one hand with more than 5 digit,
one hand with less than 5 fingers,
one hand with less than 5 digit,
more than two shoes,
more than 2 nipples,
more than 1 lefthand,
more than 1 righthand,
more than 2 thighs,
more than 2 legs,
2girls,
multiple_girls,
huge breasts,
huge haunch,
huge thighs,
huge calf,
disappearing arms,
disappearing thing,
disappearing calf,
disappearing legs,
(long neck),
(too long fingers),
too long tongue,
(long body)
long neck,
long face,
(poorly drawn) ,
(poorly drawn hands),
(poorly drawn face),
poorly drawn breasts,
poorly drawn ears,
poorly drawn animal ears,
poorly drawn legs,
poorly drawn feet,
poorly drawn shoes,
poorly drawn gloves,
poorly drawn cum,
poorly drawn hairs,
(fused eyes poorly drawn eyes),
poorly drawn nipples,
poorly drawn mouth,
poorly drawn pantie,
poorly drawn cloth,
poorly drawn asshole,
poorly drawn crotch,
poorly drawn anus,
poorly drawn pussy,
poorly drawn crotch seam,
poorly drawn thigh gap,
poorly drawn tentacles,
liquid body,
liquid digit,
liquid thigh gap,
liquid collarbone,
liquid tentacles,
liquid clit,
malformed,
malformed hands,
malformed feet,
malformed limbs,
tongue within mouth,
big mouth,
cracked mouth,
liquid tongue,
colorful tongue,
black tongue,
cloned face,
big face,
big muscles,
uncoordinated body,
unnatural body,
multiple breasts,
liquid breasts,
heavy breasts,
liquid ears,
heavy ears,
liquid animal ears,
heavy animal ears,
different nipples,
black nipples,
colorful nipples,
3D,
3D game,
3D game scene,
3D character,
photo_(medium),
worst quality,
low quality,
normal quality,
jpeg artifacts,
single color,
out of frame,
lowres,
text,
error,
(tranny),
(trans),
(trannsexual),
(hermaphrodite),
(black-white),
disfigured,
anatomical nonsense,
blurred,
lowers,
low res,
UI,
cropped,
watermark,
username,
signature,
ugly,
cloned face,
gross proportions,
short arm,
mutation,
duplicate,
morbid,
mutilated,
deformed,
chromatic_aberration,
((blurry)),
(blurry_foreground),
(blurry_eyes),
blurry_background,
(blur_censor),
(motion_blur),
(High contrast),
(stained_glass),
(bent fingers),
greyscale,
halftone,
honeycomb (pattern),
yellow teeth,
yellow face,
thick lips,
obesity,
split tentacles,
colorful clit,
black clit,
QR code,
bar code,
safety panties,
safety knickers,
beard,
furry,
pony,
pubic hair,
monochrome,
mosaic,
excrement,
faces,
shit,
Futa,
polka_dot,
testis,
(unconventional_media),
Python 3.11 竟然不行,torch 还没做支持。(2023/3/13)
所以说一般情况下我都会同时安装 Python 3.7 3.8 3.9 3.10 3.11 0xAA55 发表于 2023-3-13 11:16
Python 3.11 竟然不行,torch 还没做支持。(2023/3/13)
所以说一般情况下我都会同时安装 Python 3.7 3.8...
支持了
pytorch 1.13.1 py3.11 linux_x86_64
但没完全支持 ,指 只有Linux版本
页:
[1]