Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion
conda环境准备详见:annoconda
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
conda create -n sdw python=3.9
conda activate sdw
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
注意:pytorch版本下载,根据本地环境选择对应的版本,下载地址:地址
(1)模型文件
模型下载地址:地址,下载完成后,按下面的目录存放
mkdir -p models/Stable-diffusion/
mv /opt/v1-5-pruned-emaonly.safetensors models/Stable-diffusion/
(2)通过proxy下载,解决下载慢或下载失败的问题
[root@localhost stable-diffusion-webui]# vi modules/launch_utils.py
将https://github.com
替换为https://ghproxy.com/https://github.com
,即使用Ghproxy代理
修改的内容如下:
def prepare_environment():
torch_index_url = os.environ.get('TORCH_INDEX_URL', "https://download.pytorch.org/whl/cu118")
torch_command = os.environ.get('TORCH_COMMAND', f"pip install torch==2.0.1 torchvision==0.15.2 --extra-index-url {torch_index_url}")
requirements_file = os.environ.get('REQS_FILE', "requirements_versions.txt")
xformers_package = os.environ.get('XFORMERS_PACKAGE', 'xformers==0.0.20')
gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "https://ghproxy.com/https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
clip_package = os.environ.get('CLIP_PACKAGE', "https://ghproxy.com/https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")
openclip_package = os.environ.get('OPENCLIP_PACKAGE', "https://ghproxy.com/https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://ghproxy.com/https://github.com/Stability-AI/stablediffusion.git")
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://ghproxy.com/https://github.com/crowsonkb/k-diffusion.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://ghproxy.com/https://github.com/sczhou/CodeFormer.git')
blip_repo = os.environ.get('BLIP_REPO', 'https://ghproxy.com/https://github.com/salesforce/BLIP.git')
stable_diffusion_commit_hash = os.environ.get('STABLE_DIFFUSION_COMMIT_HASH', "cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf")
k_diffusion_commit_hash = os.environ.get('K_DIFFUSION_COMMIT_HASH', "c9fe758757e022f05ca5a53fa8fac28889e4f1cf")
codeformer_commit_hash = os.environ.get('CODEFORMER_COMMIT_HASH', "c5b4593074ba6214284d6acd5f1719b6c5d739af")
blip_commit_hash = os.environ.get('BLIP_COMMIT_HASH', "48211a1594f1321b00f14c9f7a5b4813144b2fb9")
(1)设置允许root用户运行(如果不以root用户运行,可以跳过这个步骤)
当我们以root用户运行时,会报如下错误:
[root@localhost stable-diffusion-webui]# sh webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye)
################################################################
################################################################
ERROR: This script must not be launched as root, aborting...
################################################################
通过修改webui.sh解决
vi webui.sh
修改文件第51行,修改后如下
# this script cannot be run as root by default
can_run_as_root=1
(2)启动项目
仅在本机访问,webui绑定127.0.0.1地址,启动命令如下:
sh webui.sh
可以通过局域网访问,webui绑定0.0.0.0地址,启动命令如下:
sh webui.sh --listen
可以通过局域网访问,webui绑定0.0.0.0地址,带--xformers启动,启动时会自动安装xformers组件,加速GPU运行
sh webui.sh --listen --xformers
启动界面可以大致分为4个区域【模型】【功能】【参数】【出图】四个区域
(1)模型区域:模型区域用于切换我们需要的模型,模型下载后放置相对路径为/modes/Stable-diffusion目录里面,网上下载的safetensors、ckpt、pt模型文件请放置到上面的路径,模型区域的刷新箭头刷新后可以进行选择。
(2)功能区域:功能区域主要用于我们切换使用对应的功能和我们安装完对应的插件后重新加载UI界面后将添加对应插件的快捷入口在功能区域,功能区常见的功能描述如下
(3)参数区域:根据您选择的功能模块不同,可能需要调整的参数设置也不一样。例如,在文生图模块您可以指定要使用的迭代次数,掩膜概率和图像尺寸等参数配置
(4)出图区域:出图区域是我们看到AI绘图的最终结果,在这个区域我们可以看到绘图使用的相关参数等信息。
在设置页面中,您可以输入文本,选择模型并配置其他参数。文本是必需的,它将成为图像生成的依据。您可以选择预定义的模型或上传自己的模型。您还可以选择一些其他参数,例如批处理大小,生成的图像尺寸等。下面是一些参数的说明:
img2img功能可以让您用stable diffusion web ui生成元画像和似的构图色彩的画像,或者指定一部分内容进行变换。
与text2img相比,img2img新增了缩放模式和一个重绘幅度(Denoising strength)参数设置,上面的例子中这边增加了黑发提示和调整图片大小并且设置重绘幅度(Denoising strength)值为1,帮我们重新生成了一张黑发的女主图片,下面是相关参数说明。
inpaint功能可以让您用stable diffusion web ui将图片中被手工遮罩的部分重新绘制,如果您发现了一张整体尚可、细节崩坏的图,就可以点击这个按钮开始局部重绘。web ui会自动为您生成一个遮罩层,您可以用鼠标在图片上涂抹需要修复的区域。然后点击“生成”按钮,web ui会根据遮罩层和原图生成一个新的图片,并显示在右侧,(官方有基于1.5的专门的inpaint 修复模型),除此之外重绘我们还能利用pix2pix插件类chatgpt来实现改图功能。
Extras部分提供了一些额外的功能,包括Super Resolution(超分辨率),针对二次元图片有专门的发放大算法需要另外加载,下面将分别介绍如何使用这些功能。
Super Resolution(超分辨率)
超分辨率功能可以将低分辨率图像提高到高分辨率图像的大小,从而提高图像的清晰度和细节。使用超分辨率功能需要输入一张低分辨率的图像,并指定要将其放大的倍数。
使用超分辨率功能的步骤如下:
Step 1:打开Stable Diffusion ,并点击“Extras”按钮。
Step 2:在“Image”栏中上传一张低分辨率图像。
Step 3:选择对应的缩放算法。您可以选择2、3或4倍,或指定自定义倍数。
Step 4:单击“Process”按钮,等待处理完成后即可查看生成的高分辨率图像。
[root@localhost stable-diffusion-webui]# sh webui.sh --listen
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye)
################################################################
Cannot locate TCMalloc (improves CPU memory usage)
通过如下命令解决:
yum install gperftools gperftools-devel
安装完成后再次启动,错误已经消失
如果git版本为1.8则升级git版本
把老版本的 Git 卸掉。
sudo yum -y remove git
sudo yum -y remove git-*
添加 End Point 到 CentOS 7 仓库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
安装 Git
sudo yum -y install git
依次忽略git相关文件夹
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/stable-diffusion-stability-ai
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/CodeFormer
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/k-diffusion
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/BLIP
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/taming-transformers
解决方法详见:Couldn‘t determine Stable Diffusion‘s hash问题解决