SD:在一个 Ubuntu 系统安装 stable diffusion Web UI

目录

  • 前言
  • [1. 前置准备](#1. 前置准备)
    • [1.1 系统版本](#1.1 系统版本)
    • [1.2 工具准备](#1.2 工具准备)
    • [1.3 python环境](#1.3 python环境)
    • [1.4 安装 pytorch](#1.4 安装 pytorch)
  • [2. 下载开源 SD web UI](#2. 下载开源 SD web UI)
  • [3. 下载模型](#3. 下载模型)
  • [4. 启动软件](#4. 启动软件)
    • [4.1 启动后台进程](#4.1 启动后台进程)
    • [4.2 通过 Web 打开前端界面](#4.2 通过 Web 打开前端界面)
  • [5. 关闭软件](#5. 关闭软件)
  • [6. 模型预览图](#6. 模型预览图)
  • [7. 安装插件](#7. 安装插件)
    • [7.1 安装方法](#7.1 安装方法)
    • [7.2 插件 git 地址](#7.2 插件 git 地址)
    • [7.3 下载 control net 的模型](#7.3 下载 control net 的模型)
  • 备注:以下仅供个人记录
    • 备注1:关于启动、关闭
    • [备注2:关于下载模型(这里使用了国内的 liblib 平台)](#备注2:关于下载模型(这里使用了国内的 liblib 平台))

前言

  • 教程来源

    以下方法主要通过提问 AI 得到答案,遇到安装问题也是和 AI 描述并尝试解决方法。

    有些问题 AI 也没能解决,直接在搜索引擎中搜索,找相关的帖子或博客。

    请读者朋友们因地制宜。

  • 核心内容

    安装 stable diffusion 的核心内容,主要包括:

    • 软件的项目文件
    • 后台进程的启动&关闭 + 前台访问
    • 插件安装

1. 前置准备

1.1 系统版本

在 linux 终端中,用 cat /etc/os-release 命令查看系统版本。

Ubuntu 24.04 LTS

1.2 工具准备

需要有 git 用于下载仓库(git 的具体安装方法略,自行搜索或者问 AI)。

1.3 python环境

这里我使用 anaconda 进行python 环境的安装(anaconda 的具体安装方法略,自行搜索或者问 AI)。

用 conda 命令创建需要的 python 环境,并激活相应的环境

bash 复制代码
conda create -n sd_py3p10 python=3.10
conda activate sd_py3p10

1.4 安装 pytorch

bash 复制代码
pip install torch torchvision torchaudio \
-i https://pypi.tuna.tsinghua.edu.cn/simple \
--extra-index-url https://download.pytorch.org/whl/cu124

注1:这里用镜像站下载更快

注2:关于永久配置镜像站

bash 复制代码
mkdir -p ~/.pip
cat >> ~/.pip/pip.conf <<'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url = https://download.pytorch.org/whl/cu124
EOF

2. 下载开源 SD web UI

bash 复制代码
mkdir -p ~/programs/
cd ~/programs/
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui

注意,下载路径是可以自行定义的,我是在 /home/ 目录下创建了一个名为 programs 的目录,并在里面进行下载。

3. 下载模型

主要分为 主模型 和 LoRa 模型(这里使用了国内的 liblib 平台 下载)

  • 主模型存放在 stable-diffusion-webui/Stable-diffusion/ 下
  • LoRa 模型存放在 stable-diffusion-webui/models/Lora/ 下

4. 启动软件

4.1 启动后台进程

注意先 cd 到自己的 stable-diffusion-webui 目录下

  • 首次启动
    如果在前面没有给python包的下载配置"镜像网址",这里需要先指定一下镜像站,如果已经配置了则无需。
bash 复制代码
# 把 pip 源写进环境变量,launch.py 里调用的子进程会继承
export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
export PIP_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cu124

直接使用 launch.py 脚本启动(如果没有可执行权限,使用 chmod +x launch.py

bash 复制代码
python launch.py --listen --port 7860
  • 自建的启动脚本
    我创建了一个名为 0_launch.sh 的脚本,通过增加可执行权限,并用 ./0_launch.sh 可以启动,具体内容如下:
powershell 复制代码
#!/usr/bin/env bash
source "$HOME/anaconda3/etc/profile.d/conda.sh"
conda activate sd_py3p10

unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=127.0.0.1,localhost,::1,0.0.0.0
export GRADIO_WS_MAX_SIZE=50m          # 0 表示禁用 WebSocket

python launch.py --listen --port 7860

注意上述的 _PROXY 相关的变量是因为我使用了 clash 网络代理工具

4.2 通过 Web 打开前端界面

打开 chrom 或者 火狐浏览器,通过 127.0.0.1:7860/?__theme=dark 可以看到界面。

5. 关闭软件

在软件正常启动的情况下,通过在终端执行 ctrl+c 即可终止进程。

但是为了保证在非正常启动的情况下,保证进程的关闭,我创建了一个杀死进程的脚本 0_stop.sh,具体内容如下:

powershell 复制代码
# 看看会匹配到哪些 PID
pgrep -f 'python.*launch\.py.*--listen.*--port 7860'
# 确认无误后再杀
pkill -f 'python.*launch\.py.*--listen.*--port 7860'

6. 模型预览图

在启动 Web UI 后,可以给模型添加预览图。放在模型相同目录下,名字和模型相同,后缀为 .png

  • 例如在 ~/programs/stable-diffusion-webui/models/Lora/ 下面有模型的 .safetensors 文件,给其配置同名的 .png 图片,重启软件后生效。
bash 复制代码
~/programs/stable-diffusion-webui$ ls models/Lora/
'2D Pixel Toolkit (2D像素工具包)_角色和序列帧.png'           水墨游戏立绘_水墨游戏立绘.png
'2D Pixel Toolkit (2D像素工具包)_角色和序列帧.safetensors'   水墨游戏立绘_水墨游戏立绘.safetensors

7. 安装插件

7.1 安装方法

bash 复制代码
cd extensions/
git clone xxx

xxx 即插件的 git 仓库地址

7.2 插件 git 地址

插件 一句话功能 官方 Git 地址(直接复制即可)
ControlNet 用草图 / 姿态 / 深度精准控制构图 https://github.com/Mikubill/sd-webui-controlnet
After-Detailer (ADetailer) 自动检测+局部重绘人脸/手/全身 https://github.com/Bing-su/adetailer
Tiled Diffusion & VAE 低显存生成 2K/4K 大图,爆显存克星 https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111
Prompt-all-in-one 中英互译 + 权重调色板 + 历史收藏 https://github.com/Physton/sd-webui-prompt-all-in-one
TagComplete 提示词自动补全,键入"tree"秒出"tree bark texture" https://github.com/DominikDoom/a1111-sd-webui-tagcomplete
Civitai-Helper 在 WebUI 内浏览/下载 Civitai 模型 + 预览图 https://github.com/zixaphir/stable-diffusion-webui-civitai-helper
LoRA-Block-Weight 可视化调节 LoRA 各层权重,微调更细腻 https://github.com/hako-mikan/sd-webui-lora-block-weight
Aspect Ratio selector 一键切换常用画布比例(16:9 / 4:3 / 1:1 ...) https://github.com/alemelis/sd-webui-ar
Bilingual Localization 界面同时显示中英双语,新手友好 https://github.com/hakurei/sd-webui-bilingual-localization
Images Browser 内置图库,按日期/模型/提示词快速回看 https://github.com/AlUlkesh/stable-diffusion-webui-images-browser

  • 安装 ControlNet 之后,浏览器需使用 chrom。听说 firefox 也可以,但我没试过。

7.3 下载 control net 的模型

先要 cd 到 ~/programs/stable-diffusion-webui/extensions/sd-webui-controlnet/models,也就是模型文件放这里。

由于我可以访问到 huggingface 网站,所以直接下载即可。

或者直接进入相应的网页如 https://huggingface.co/lllyasviel/ControlNet-v1-1/,在里面找到模型的下载按钮。

bash 复制代码
# 1. Canny -----------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.yaml

# 2. OpenPose --------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.yaml

# 3. Depth -----------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.yaml

# 4. SoftEdge --------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.yaml

# 5. Lineart ---------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.yaml

# 6. Scribble --------------------------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.yaml

# 7. Semantic Segmentation (seg) ------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.yaml

# 8. Normal Map (normalbae) -----------------------------------------------
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.yaml

#wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth?download=true

备注:以下仅供个人记录

备注1:关于启动、关闭

  • 脚本路径 & 内容
    • ~/programs/stable-diffusion-webui/0_launch.sh
    • ~/programs/stable-diffusion-webui/0_stop.sh

备注2:关于下载模型(这里使用了国内的 liblib 平台)

https://www.liblib.art/

相关推荐
不当菜鸡的程序媛2 小时前
Stable Diffusion里面Cross-Attention设计:为啥Q来自图像/噪声,K和V来自文本
人工智能·计算机视觉·stable diffusion
gerrgwg4 小时前
Vue-library-start,一个基于Vite的vue组件库开发模板
前端·javascript·vue.js
你的人类朋友5 小时前
【Node】单线程的Node.js为什么可以实现多线程?
前端·后端·node.js
iナナ6 小时前
Spring Web MVC入门
java·前端·网络·后端·spring·mvc
驱动探索者6 小时前
find 命令使用介绍
java·linux·运维·服务器·前端·学习·microsoft
开心不就得了6 小时前
自定义脚手架
前端·javascript
星晨雪海7 小时前
怎么格式化idea中的vue文件
前端·vue.js·intellij-idea
没事多睡觉6667 小时前
Vue 虚拟列表实现方案详解:三种方法的完整对比与实践
前端·javascript·vue.js
white-persist8 小时前
Burp Suite模拟器抓包全攻略
前端·网络·安全·web安全·notepad++·原型模式