官方实现代码地址:lllyasviel/ControlNet: Let us control diffusion models! (github.com)
一、前言
此项目的使用需要显存大于8G,训练自己的ControlNet或需要更大,因此请注意查看自身硬件是否符合。
在此之前请确保已经安装好python以及相关IDE工具。
二、环境安装
这里主要还是基于官网文档来进行代码复现。
1.创建虚拟环境
conda env create -f environment.yaml
conda activate control
注:如果你之前安装过stablediffusion相关项目的虚拟环境,也可以继续使用,只需要安装没有装过的安装包即可,但可能在使用过程中会出现一些问题,大多可能都是安装包版本冲突的问题,需要更换安装包版本,后面我主要会讲一些我自己所遇到的问题。
2.下载clip-vit-large-patch14
将下载的所有文件存放于项目文件夹openai/clip-vit-large-patch14中。
3.下载想要运行的模型
lllyasviel/ControlNet · Hugging Face
从上述链接中下载想要运行使用的模型,项目中给出了多个不同的示例脚本,这里我以gradio_canny2image.py为例,可以在代码中看到对应所用的模型,我们将对应模型下载好了放到相应路径中即可,比如这里要运行gradio_canny2image.py则需要下载control_sd15_canny.pth并放到models文件夹下。
三、运行
这里主要还是以 gradio_canny2image.py为例:
python gradio_canny2image.py
如果一切正常,则会出现如下界面:
如果你是在本机运行的,直接点 http://0.0.0.0:7860这个URL即可,当然如果你和我一样是在服务器上跑的,则需要将0.0.0.0改成服务器的IP地址运行,运行所得界面如下:
上面呢是一切都正常的情况,然而我在复现过程中还是遇到了很多问题,我总结了一些大多还是环境冲突的问题,因为我用了之前创建的虚拟环境,并没有重新建一个新的虚拟环境,下面主要是讲我在复现过程中遇到的一些问题:
(1).
这里出现了一个莫名参数,然后我看报错文件内容的路径确发现他跑到了stable diffusioin的项目文件夹下去了,其实这个问题在我复现Dreambooth等项目的时候也有出现过,说实话我也不太清楚为啥,解决的办法目前只有重新创建一个新的虚拟环境。
(2).
这里是我在安装basicsr软件包的时候出现了冲突问题,我看了解决的方法主要是要先安装cython软件包,于是我就安装了cython,安装后还是出现了问题:
说是找不到合适的tb-nightly版本,然后我看网上有人说可能是源的问题,于是我换成了阿里云的镜像:
python -m pip install tb-nightly -i https://mirrors.aliyun.com/pypi/simple
这次就安装好了,然后再次去安装basicsr软件包,就安装成功了!
(3).
这里说是在transformer处遇到一个未知的key,原因是我的transformer版本太高了,于是我把高版本给卸载了重新安装了4.19.2版本,问题就得以解决了。
(4).
然后我再次运行,又出现了一个未知参数,这次是发生在gradio上的,原因也是我安装的版本过高,于是我换成了项目给出的版本: gradio==3.16.2,但是!!!后面还是出现了问题!!!
如果你安装的也是 gradio==3.16.2版本,你也可以进入到gradio界面,但是你会发现你在运行的时候,一直在run但是不出结果,如果你查看资源管理器你也会发现你的GPU使用率为0%。
命令行会报错AssertionError: No event data
这里实际上也是版本问题,所以安装3.16.2也是会有问题的,我们需要安装 3.38.0版本,然后就可以顺利运行了!
测试、出图:
四、训练自己的ControlNet
ControlNet/docs/train.md 位于主 ·lllyasviel/控制网 (github.com)
官方的训练文档我个人认为比较详细,并且我在训练过程中也没有遇到什么问题,所以这里不过多叙述,我自己也是按照上面的步骤试验了一下,目前还在训练中...我用的是一块RTX 3090,我把batchsize调成了1,可以根据自己的GPU大小来调整参数。
还有就是我并没有看到他所设置的epoch大小,不知道是如何设定的,研究ing...