latent diffusion model 复现问题记录
按照官方github配置虚拟环境
官方github地址:
latent diffusion model
下载environment.yaml和setup.py文件进行环境配置
conda env create -f environment.yaml
conda activate ldm
在配置环境的过程中,会出现报错
Installing pip dependencies: \ Ran pip subprocess with arguments:
['/home/****/.conda/envs/ldm/bin/python', '-m', 'pip', 'install', '-U', '-r', '/mnt/****/****/latent-diffusion-main/condaenv.ie4dsr_m.requirements.txt']
Pip subprocess output:
Obtaining taming-transformers from git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers (from -r /mnt/****/****/latent-diffusion-main/condaenv.ie4dsr_m.requirements.txt (line 13))
Cloning https://github.com/CompVis/taming-transformers.git (to revision master) to ./src/taming-transformers
Pip subprocess error:
ERROR: Command errored out with exit status 128: git clone -q https://github.com/CompVis/taming-transformers.git /mnt/****/****/latent-diffusion-main/src/taming-transformers Check the logs for full command output.
failed
CondaEnvException: Pip failed
这是由于environment.yaml的下面两行导致的
#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
- -e .
这时候可以直接把这两行注释掉,利用下面的命令进行手动安装,
pip install taming-transformers
pip install clip
在这个路径下可以看到两个安装的模型即安装成功
/home/user/.conda/envs/ldm/lib/python3.8/site-packages/xxx(taming, clip)/
如果第一次安装出现了问题,可以使用以下命令更新环境
conda env update -n environment_name -f environment.yaml
下载预训练模型
官方已经给出了各个数据集的预训练模型,直接点连接下载即可。
下载的模型要进行一步解压,并且要从/models/ldm/ffhq256/
下载一个config.yaml文件放到该目录下(之后会用到, 并且会省去很多不必要的麻烦),目录结构如图所示
ModuleNotFoundError: No module named ‘ldm’
按道理来说,环境到这里就算配置完成了,但是有一个巨坑一定要注意!!!!如果直接运行sample-diffusion.py,会出现ModuleNotFoundError: No module named 'ldm’的错误,这时候不要用pip install ldm手动安装,因为此ldm非彼ldm啊啊啊啊啊!
这时候可以下载整个项目,把sample-diffusion.py放在和ldm文件夹的同一级目录下,才可以引包成功!!!试了半天绝对路径的调用方法,不如直接调换代码文件的位置来的快~
基于此,就可以按照官方给的指令运行代码,生成自己的数据集了
生成数据集
CUDA_VISIBLE_DEVICES=<GPU_ID> python scripts/sample_diffusion.py -r models/ldm/<model_spec>/model.ckpt -l <logdir> -n <\#samples> --batch_size <batch_size> -c <\#ddim steps> -e <\#eta>
参数可以根据自己的需求设置
在运行的过程中,如果出现
或者
则说明自己的config.yaml文件没有放对位置,要放在和model.ckpt相同的目录下。
此外,如果出现**ModuleNotFoundError: No module named ‘XXX’ **则说明包的版本不对,可以按照environment.yaml的要求,替换成正确的包。
如果出现
则把quantize.py替换成下面连接里的代码
quantize.py
效果展示
到此为止,应该就可以生成自己的图片了生成效果如下
参考链接
新手第一次上路,遇到了许多问题,感谢前人总结的经验!
复现问题记录 | Stable Diffusion(LDM) (in python3)(一)
ImportError: cannot import name ‘get_num_classes’ from ‘torchmetrics.utilities.data’
ImportError: cannot import name ‘VectorQuantizer2’ from ‘taming.modules.vqvae.quantize’