研究文生图也有了一段时间,复现的论文也算是不少,这篇博客主要记录我自己踩的坑。
目前实现文生图的项目主要分为两类:
一、基于Stable-diffusion原项目文件实现
原项目地址:https://github.com/Stability-AI/stablediffusion
有一部分论文的代码都是基于这个原项目进行开发的。我们不太可能每个项目都重新去创建一个虚拟环境,所以我们难免会在同一个环境上运行多个项目。但是python它的环境相对而言并不是特别友好,同一个包的不同版本也会有差异。所以常常会出现一些问题。
就拿我之前复现Vico来说吧。我训练好模型进行推理的时候,它给我报错:
它说它无法联网下载模型,但是我明明已经在项目代码中把它配置成本地的路径了,怎么说也不可能再出这种问题。然后我就看它的错误回溯,我发现它在运行的时候居然跑了同文件夹下Dreambooth的代码,当时我以为是因为文件同名,系统获取依赖路径的时候自动顺序读取了,然后我就打印系统路径:
我把跟Dreambooth有关的都删除了之后,仍然不起作用。想了想肯定还是环境的问题。后来才发现,是因为没有将本地项目ldm安装,而环境仍然使用的是之前安装的ldm。其实解决也很简单,就是需要执行 pip install -e .就行。
包括它如果说没有ldm模块实际上也是这个问题:
二、基于扩散器包diffusers实现
基于diffusers实现,其实用扩散器包实现是相对简单的。很多东西都已经配置好了。但是不同的diffusers版本之间是存在的不兼容的问题的,所以如果你运行不出来记得看看diffusers版本是否符合当前项目。