Stable Diffusion 跑通总结

记录了自己跑通Stable Diffusion的过程和踩过的坑,目前只是初步跑了一下,没有很深入的使用代码,希望能有一些参考价值。

 在Windows系统运行,需要提前装好Conda

一、下载代码和模型

1、下载代码:

代码下载:代码地址

或者

git clone https://github.com/CompVis/stable-diffusion.git

2、下载预训练模型:

a.下载sd-v1-4.ckpt模型

地址:模型地址

按照下列顺序点击下载模型

Stable Diffusion 跑通总结_第1张图片

Stable Diffusion 跑通总结_第2张图片

红圈模型有4G,下面的模型有7G,自行选择下载

  • 在stable-diffusion-main\models\ldm路径下创建文件夹stable-diffusion-v1,将模型放在里面
  • 将模型名称改为model.ckpt

Stable Diffusion 跑通总结_第3张图片

b.下载clip-vit-large-patch14模型

模型地址

Stable Diffusion 跑通总结_第4张图片

下载红框内文件。

  • 放置在路径stable-diffusion-main\openai\clip-vit-large-patch14下,自己创建路径。

Stable Diffusion 跑通总结_第5张图片

c.下载safety_checker模型

模型地址

Stable Diffusion 跑通总结_第6张图片

依旧下载红框内文件

  • 文件存放在stable-diffusion-main\CompVis\stable-diffusion-safety-checker下,自行创建路径。
  • 将这次下载的safety_checker_config文件命名为config.json
  • 将上一块中下载的preprocessor_config.json文件粘贴过来

Stable Diffusion 跑通总结_第7张图片

二、配置环境

使用conda配置环境,在Anaconda Prompt下指向stable-diffusion-main文件夹,运行:

conda env create -f environment.yaml

报错:

Installing pip dependencies: - Ran pip subprocess with arguments:
['C:\Users\neals\.conda\envs\ldm\python.exe', '-m', 'pip', 'install', '-U', '-r', 'I:\tmp\sd\stable-diffusion-main\condaenv.wws0680u.requirements.txt', '--exists-action=b']
Pip subprocess output:
Obtaining taming-transformers from git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers (from -r I:\tmp\sd\stable-diffusion-main\condaenv.wws0680u.requirements.txt (line 17))
Cloning https://github.com/CompVis/taming-transformers.git (to revision master) to i:\tmp\sd\stable-diffusion-main\src\taming-transformers
Pip subprocess error:
ERROR: Command errored out with exit status 128: git clone -q https://github.com/CompVis/taming-transformers.git 'I:\tmp\sd\stable-diffusion-main\src\taming-transformers' Check the logs for full command output.
failed
CondaEnvException: Pip failed

将environment.yaml中的这两行删掉:

- -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers
- -e git+https://github.com/openai/CLIP.git@main#egg=clip

改用pip命令自己手动配置这两个包:

pip install taming-transformers
pip install clip

但是environment.yaml总是报错或者conda总是卡住,把文件里pip后的部分用一个requirements.txt存储,使用pip安装:(如果pytorch这些没装上就手动安装一下)

pip install -r requirements.txt

下载太慢就给pip配上清华源,教程

三、运行代码

我运行的是文本生成图像任务,在终端中输入指令:

python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 

运气好的话直接就能生成图像,生成的图像存储在outputs\txt2img-samples\samples下。

报错 ModuleNotFoundError: No module named ‘ldm’:

这里报错的ldm是指stable-diffusion-main文件夹下的ldm文件夹。

解决方法:

将scripts文件夹下的所有内容复制到stable-diffusion-main文件夹下,指令改为:

python txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 

报错 ImportError: cannot import name 'VectorQuantizer2' from 'taming.modules.vqvae.quantize'

原因:taming库的版本问题

解决方法:

将stable-diffusion-main\ldm\models下的autoencoder.py中的:

from taming.modules.vqvae.quantize import VectorQuantizer2 as VectorQuantizer

改为:

from taming.modules.vqvae.quantize import VectorQuantizer

报错:RuntimeError: CUDA out of memory.

原因:显卡的内存不够

可能的解决方法:

在终端里使用指令:

python txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --n_samples 1

设置n_samples=1运行,或者在txt2img.py文件中修改这个参数为1。

n_samples的注释是:how many samples to produce for each given prompt. A.k.a. batch size

如果更改后还是内存不够,可以去看看有没有什么其他的参数可以修改,试试能不能减少显卡用量。

报错couldn't connect to 'https://huggingface.co'

原因:没有搜索到本地下载好的模型,试图连接https://huggingface.co失败

检查模型是否下好了,位置和命名是否正确。

跑通后的生成的一些图像:

Stable Diffusion 跑通总结_第8张图片

参考链接,感谢大佬们的指点:

AIGC:文生图模型Stable Diffusion-CSDN博客

latent diffusion model 复现问题记录-CSDN博客

Diffusion程序调试相关问题汇总-CSDN博客

你可能感兴趣的:(stable,diffusion,AIGC,text2img)