一、引言
目前正在学习有关扩撒模型的相关知识,最近复现了Stable-diffuison,此文主要是想记录一下整体的复现过程以及我在复现过程中出现的一些奇怪的问题以及我的处理方法。这里我的复现主要是针对官网文档实现的,并没有用到webui版本,如果是想体验Stable-diffusion可以去下载webui版本,这里就不过多讲述。
二、环境配置
想要在Windows环境下部署,首先需要自身机器的显存大于4GB,(个人实测在没有改变默认参数的情况下是4GB是跑不动的,建议大于4GB)
在配置项目之前,请自行安装Python环境、Anaconda、Pycharm又或者Vscode等,以及Cuda、Cudnn的安装。
三、下载相关文件
1.CompVis/stable-diffusion:一种潜在的文本到图像扩散模型 (github.com)
下载stable-diffsuion项目并解压。
2.CompVis (CompVis) (huggingface.co)
下载预训练好的权重模型,打开链接后选择想要下载的模型,这里我选择的是CompVis/stable-diffusion-v1-4,选择stable-diffusion-v-1-4-original.
下载权重模型sd-v1-4.ckpt。
3.openai/clip-vit-large-patch14 at main (huggingface.co)
下载clip-vit-large-patch14,这里需要下载的文件主要如下:
下载完成后,在工程根目录创建文件夹openai\clip-vit-large-patch14
,将下载的内容放入其中。
4. CompVis/stable-diffusion-v1-4 at main (huggingface.co)
下载安全性检查器,主要下载的文件如下:
pytorch_model.bin(约1.13GB) config.json这里我们还需要下载一个文件 ,主要是用于特征提取器的配置文件,链接如下:
CompVis/stable-diffusion-v1-4 at main (huggingface.co)
下载完成后,在工程根目录创建文件夹CompVis\stable-diffusion-safety-checker
,将下载三个文件的内容放入其中。
四、构建整体项目
1.创建虚拟环境,根据官方文档的手册创建虚拟环境(ldm)
conda env create -f environment.yaml
conda activate ldm
在这里,主要可能会产生软件包版本产生冲突又或者软件下载不成功等问题,这里主要提到我遇到的一些问题
主要是clip和taming-transformers下载不成功的解决方法。
如果下载不成功,我们可以直接去github下载
CompVis/taming-transformers: Taming Transformers for High-Resolution Image Synthesis (github.com)
openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image (github.com) 下载后我们将它们解压,然后在项目中创建一个src文件夹,把它们放进去就OK了
如果我们在使用创建环境的命令时出现失败问题,可以用以下代码更新环境(当然你也可以选择删除整个环境哈哈):
conda env update -f environment.yaml
五、运行
整个项目构建好了之后,就可以运行了,但是在我自己进行运行的时候,出现了一个问题,就是我打算使用scripts/txt2img.py进行文本生成图像的时候,IDE提示我没有进入ldm包。
这里的ldm包是指我们工程项目下的ldm文件夹,但是明明项目里面是有的,怎么可能没有引入呢?我一开始也以为是文件目录问题,然后我查了很多解决方法,后来在也是在一个文章评论下面发现也有人产生的同样的问题,解决的办法其实就是将txt2img.py文件拉出来,这样文件就跟ldm文件夹在同一级别目录下了,试了一下还真行!(这是我在本地跑的时候出现的问题,但是就在刚刚我在实验室服务器上配好了项目环境跑的时候并没有产生这个问题,咱们就是说奇奇怪怪的哈哈哈。)
在工程根目录下,激活ldm
虚拟环境,然后直接运行script中的脚本即可。比如说我这里运行一个文本生成图像的命令:
python txt2img.py --ckpt "sd-v1-4.ckpt" --prompt "a photograph of an astronaut riding a horse" --plms --H 256 --W 256
官方文档中的采样参数说明如下:
超参数 解释 prompt 生成图像所需的提示,如文本、图像等。 outdir 生成结果保存的路径 skip_grid 不生成拼接的图像,拼接图像由n_iter和n_samples列构成。 skip_save 不生成独立的图像 ddim_steps DDIM采样步数 plms 用一个叫做plm的采样器 n_iter 一次运行进行n次采样H
生成图像的高 W 生成图像的宽 F 下采样因子 n_samples 一次采样生成n张图像 ckpt 模型权重文件路径文章开头也提到如果你的显存不够是很难运行整个模型的,一般都会爆出显存不足的问题,就像这样(电脑太拉,后面我用了实验室的服务器跑去了):
一切顺利的话,我们就可以生成图片啦!(终端提示示例如下!)
这里我输入的命令是
python scripts/txt2img.py --ckpt "sd-v1-4.ckpt" --prompt "a photograph of an astronaut play with a cute cat" --plms --H 512 --W 512
生成图片会默认放到项目工程下的outputs/txt2img-samples文件夹下(当然你也可以在配置文件中去修改存放路径)
生成图像如下(512*512的效果确实就是比256*256的好唉!!!):