Time: 2023.06.27
Tags: 其他
ChatGPT 的爆火督促我去接触学习一些大模型的基本原理,在这过程中又看到很多小伙伴用 Stable Diffusion 工具文生图玩得不亦乐乎,虽然 Stable Diffusion 采用的是扩散模型,不过也想借此机会尝试一下。
不过我没有推荐配置的显卡,好在 Stable Diffusion 也支持使用 CPU 进行推理,只是速度慢一些,用于学习场景足够了。本文将详细介绍工具搭建流程以及基本使用。
本文实验环境:
Ubuntu22.04 x64 16C16G
Stable Diffusion 的官方开源地址为 https://github.com/Stability-AI/stablediffusion, 不过使用 WebUI 更便于新手学习使用;
通过 Github 访问 Stable Diffusion WebUI 如下(https://github.com/AUTOMATIC1111/stable-diffusion-webui):
我们可以使用官方推荐的一键安装的方式:
sudo apt install wget git python3 python3-venv
bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)
执行完毕后,会自动启动服务,随后通过 web 使用即可。
但是受国内网络访问限制,以及我们需要使用 CPU 进行推理,可以手动安装如下:
# 安装依赖(python3.10)
sudo apt install wget git python3 python3-venv libgl1
# 从 github 下载 sd
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
# 初始化 venv
cd stable-diffusion-webui/
python3 -m venv venv
# 进入 venv
source venv/bin/activate
# 安装 pip 依赖
pip3 install -r requirements.txt
随后使用 launch.py
启动服务:
# CPU 推理,设置参数跳过 torch-cuda 检查
# --no-half 禁止 torch 使用半精度的数据类型(需要显卡支持,以提高性能)
# --listen 设置服务监听在 0.0.0.0,可公开访问
python3 launch.py --skip-torch-cuda-test --no-half --listen
启动服务时还会检查依赖并自动下载安装,如下:
随后便可以正常启动如下:
以上各步骤可以单独配置代理,再进行安装。
Stable Diffusion 安装完毕后还不能直接使用,我们还需要配置模型;我们可以从官网(https://huggingface.co/models) 按 Text-To-Image
下载模型,如下:
或者从更受欢迎的 C 站 CivitAI(https://civitai.com/) 下载模型:
比较受欢迎的模型有:
我这里选择下载 Stable Diffusion v1.5 官方模型(https://huggingface.co/runwayml/stable-diffusion-v1-5),下载完成后,将模型文件 v1-5-pruned.ckpt
放置在 Stable Diffusion 源码路径下 [src]/models/Stable-diffusion/v1-5-pruned.ckpt
,其他模型类似。
Stable Diffusion 工具和模型都配置完成后,我们通过 Web 访问即可进行使用:
页面的左上角可以选择使用的模型,随后可以选择不同的使用方式,这里简单介绍下文生图(txt2img
)的页面功能:
我们使用如下 Prompt
,其他均为默认值,生成图片:
Prompt: landscape photo, realistic, flowing brook, summer, sunset, snow mountains in the distance
执行如下:
在 16C16G 的实验环境下进行 CPU 推理,推理速度差不多 20s/it,5 min 生成一张图:
推理过程中,16核跑满,内存占用大约 11G,其中
v1-5-pruned.ckpt
模型大约 7G,还需要 3-5G 用于推理使用,其他模型可参考该数据。
想使用 Stable Diffusion 生成优秀的图片,则要比上文示例复杂得多,除了挑选合适的模型,还需要不断的对 Prompt 进行调整测试,当然还包括各种微调,如使用哪种推理算法、推理多少步、相关性调整、随机数等等。
除了文生图以外,Stable Diffusion 还可以以图生图,或者对图片局部进行修改,还有非常多值得深入研究的点。
https://github.com/Stability-AI/stablediffusion
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://huggingface.co/models
https://civitai.com/
https://huggingface.co/runwayml/stable-diffusion-v1-5
https://laion-aesthetic.datasette.io/laion-aesthetic-6pls/images
https://lexica.art/
https://www.krea.ai/
https://promptomania.com/