Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】

官方实现代码地址: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

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第1张图片

将下载的所有文件存放于项目文件夹openai/clip-vit-large-patch14中。

3.下载想要运行的模型

lllyasviel/ControlNet · Hugging Face

从上述链接中下载想要运行使用的模型,项目中给出了多个不同的示例脚本,这里我以gradio_canny2image.py为例,可以在代码中看到对应所用的模型,我们将对应模型下载好了放到相应路径中即可,比如这里要运行gradio_canny2image.py则需要下载control_sd15_canny.pth并放到models文件夹下。

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第2张图片

三、运行

这里主要还是以 gradio_canny2image.py为例:

python gradio_canny2image.py

如果一切正常,则会出现如下界面:

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第3张图片如果你是在本机运行的,直接点 http://0.0.0.0:7860这个URL即可,当然如果你和我一样是在服务器上跑的,则需要将0.0.0.0改成服务器的IP地址运行,运行所得界面如下:

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第4张图片

 上面呢是一切都正常的情况,然而我在复现过程中还是遇到了很多问题,我总结了一些大多还是环境冲突的问题,因为我用了之前创建的虚拟环境,并没有重新建一个新的虚拟环境,下面主要是讲我在复现过程中遇到的一些问题:

(1).

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第5张图片

这里出现了一个莫名参数,然后我看报错文件内容的路径确发现他跑到了stable diffusioin的项目文件夹下去了,其实这个问题在我复现Dreambooth等项目的时候也有出现过,说实话我也不太清楚为啥,解决的办法目前只有重新创建一个新的虚拟环境。

(2).

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第6张图片 这里是我在安装basicsr软件包的时候出现了冲突问题,我看了解决的方法主要是要先安装cython软件包,于是我就安装了cython,安装后还是出现了问题:

 说是找不到合适的tb-nightly版本,然后我看网上有人说可能是源的问题,于是我换成了阿里云的镜像:

python -m pip install tb-nightly -i https://mirrors.aliyun.com/pypi/simple

这次就安装好了,然后再次去安装basicsr软件包,就安装成功了!

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第7张图片 (3).

这里说是在transformer处遇到一个未知的key,原因是我的transformer版本太高了,于是我把高版本给卸载了重新安装了4.19.2版本,问题就得以解决了。

(4).

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第8张图片 然后我再次运行,又出现了一个未知参数,这次是发生在gradio上的,原因也是我安装的版本过高,于是我换成了项目给出的版本: gradio==3.16.2,但是!!!后面还是出现了问题!!!

如果你安装的也是 gradio==3.16.2版本,你也可以进入到gradio界面,但是你会发现你在运行的时候,一直在run但是不出结果,如果你查看资源管理器你也会发现你的GPU使用率为0%。

命令行会报错AssertionError: No event data

Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】_第9张图片

这里实际上也是版本问题,所以安装3.16.2也是会有问题的,我们需要安装 3.38.0版本,然后就可以顺利运行了!

测试、出图:

 四、训练自己的ControlNet

ControlNet/docs/train.md 位于主 ·lllyasviel/控制网 (github.com)

官方的训练文档我个人认为比较详细,并且我在训练过程中也没有遇到什么问题,所以这里不过多叙述,我自己也是按照上面的步骤试验了一下,目前还在训练中...我用的是一块RTX 3090,我把batchsize调成了1,可以根据自己的GPU大小来调整参数。

还有就是我并没有看到他所设置的epoch大小,不知道是如何设定的,研究ing...

你可能感兴趣的:(代码复现,python,深度学习,图像处理)