1.Stable Diffusion是什么?
Stable Diffusion是一种基于深度学习的文本到图像生成模型,能够根据文本描述生成高质量的图像。它属于扩散模型(Diffusion Models)的一种,通过逐步去噪的过程生成图像。
如果去网上查阅资料,容易看到Stable Diffusion、Latent Diffusion Model、Stable Diffusion、Stable Diffusion Web UI等一系列名词,这里先快速理清楚它们之间的关系:
-
Diffusion Model,扩散模型。
目前的DALLE,Midjourney,Stable Diffusion图片生成的核心都是扩散模型。此外,Diffusion Model还能用于生成音配、视频等等,而不仅仅只是用于生成图片。
-
Latent Diffusion Model,潜在扩散模型。
扩散模型的一种变体。它总是先把图片压缩,降低维度,压缩后所在的空间就叫潜在空间(latent space)。这么做的好处是可以大幅减少计算量。
-
Stable Diffusion
Stable Diffusion是基于Latent Diffusion Model开发出来的,这也是为什么它能在普通的GPU上也能运行的原因。
-
Stable Diffusion Web UI
在Stable Diffusion基础上开发的应用,把原本繁琐的安装配置做成了容易操作的网页界面,并后续加入了很多插件,降低了很多使用门槛。
Stable Diffusion由CLIP(文本编码)模型、Diffusion模型、VAE(解码)模型三个部分构成,此处不再赘述,以后会单开一篇文章详细讲解它的原理。
2.Linux环境下的安装
配置:
- NVIDIA V100S 32GB 8核/64GB *1
- Ubuntu 22.04
- CUDA 12.0.1
2.1 准备工作
由于Stable Diffusion Web UI的安装需要装非常多的依赖,坑特别多,还需要从HuggingFace上下载模型,因此刚需稳定且流量足够的梯子。此处推荐Clash-for-linux。
https://github.com/wnlen/clash-for-linux
首先需要下载相关文件,无论是用github加速的方式,还是先把zip下载到本机再传输到服务器端都可以。
git clone https://github.com/wanhebin/clash-for-linux.git
进入文件之后编辑.env文件,如果用VSCode的话也可以直接编辑。
cd clash-for-linux
vim .env
# Clash 订阅地址
export CLASH_URL='XXXX'
export CLASH_SECRET='123'
运行启动脚本
sudo bash start.sh
正在检测订阅地址...
Clash订阅地址可访问! [ OK ]
正在下载Clash配置文件...
配置文件config.yaml下载成功! [ OK ]
正在启动Clash服务...
服务启动成功! [ OK ]
Clash Dashboard 访问地址:http://<ip>:9090/ui
Secret:xxxxxxxxxxxxx
请执行以下命令加载环境变量: source /etc/profile.d/clash.sh
请执行以下命令开启系统代理: proxy_on
若要临时关闭系统代理,请执行: proxy_off
source /etc/profile.d/clash.sh
proxy_on
此处应该就可以看到代理正常开启了。
想要访问控制面板,可以通过浏览器访问start.sh执行成功后输出的地址.
在本机浏览器地址栏输入http://<ip>:9090,此处的ip指的是连接服务器的那个ip。
在Secret(optional)一栏中输入启动成功后输出的Secret(也就是前面.env定义的密码123)。

能看到这个界面就是成功了,可以在这里选择想要的节点。
这种方法每次新开一个终端就要重新设置开启一次代理,考虑到clash还是挺吃cpu负载的,而且全局代理还会影响ssh的连接速度,因此还是建议不要设置自动开启。
完成代理配置后可以创造虚拟环境了(此处不再赘述CUDA和pytorch的相关问题)。
2.2 环境配置与依赖安装
创建虚拟环境
conda create -n sd-webui python==3.10
conda activate sd-webui
下载项目
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
完成之后安装相应的依赖(建议用清华源)
cd stable-diffusion-webui
pip install -r requirements_versions.txt
pip install -r requirements.txt
2.3 启动stable-diffusion-webui
这边建议用python命令启动:
python launch.py
启动后也会安装一些依赖,还会自动下载一个5g左右大小的模型,stable-diffusion-v1-5/stable-diffusion-v1-5,注意保持网络稳定(好的梯子特别重要)。
最后能够看到一下界面就说明启动成功了:


如果需要中文界面的话可以去Extensions里安装:

选择一个汉化包下载(本人选了zh-Hans,最下面好像也有官方的)。
在Setting里找到User Interface,并在Localization里选择汉化包。

重载UI后可能会卡住,刷新一下就好。

3.文生图简单使用
stable-diffusion-webui的功能很多,主要有如下 2 个:
- 文生图(text2img):根据提示词的描述生成相应的图片。
- 图生图(img2img):将一张图片根据提示词描述的特点生成另一张新的图片。
此处可以简单体验一下文生图的部分。
正向提示词:
a cute cat, cyberpunk art, by Adam Marczyński, cyber steampunk 8 k 3 d, kerem beyit, very cute robot zen, beeple
反向提示词:
(deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, flowers, human, man, woman
采样方法:Euler a
点击生成即可。

效果还不错。
Comments
评论
Loading comments...
登录后可以评论。 Login