上两期图文教程,我们分享了stable diffusion webUI AI绘图的安装步骤,以及stable diffusion webUI 汉化插件的安装,与相关stable diffusion webUI 的相关参数解析,本期我们就介绍一下controlNet 控件的安装与使用。
首先说一下,stable diffusion webUI 相关的软件已经更新,安装完成后,会提示pytorch CUDA版本与torchvision CUDA版本不一致的问题,这里可以安装如下pip 进行相关pytorch CUDA与torchvision CUDA版本的安装即可。ControlNet控件的安装与使用,我们需要使用ControlNet控件来模仿如下图片的人体姿态,生成AI图片。
RuntimeError: Detected that PyTorch and torchvision were
compiled with different CUDA versions.
PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8.
Please reinstall the torchvision that matches your PyTorch install.
当安装完成,运行脚本提示以上错误时,请安装如下库文件。
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1
torchaudio==0.13.1 torchdata==0.5.1 –extra-index-url
https://download.pytorch.org/whl/cu117
ControlNet控件的安装与使用
第一:stable diffusion webUI的安装
在安装ControlNet控件前,我们需要运行stable diffusion webUI
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
%cd stable-diffusion-webui
!git clone https://github.com/Stability-AI/stablediffusion repositories/stable-diffusion-stability-ai
###########
第一步,clone以上2个工程文件
!pip install -r requirements.txt
!pip install open_clip_torch
!pip install k_diffusion
!pip install taming_transformers-rom1504
!pip install fastapi==0.90
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1 torchaudio==0.13.1 torchdata==0.5.1 –extra-index-url https://download.pytorch.org/whl/cu117
############
第二步,安装以上第三方库
!python launch.py –share –xformers –enable-insecure-extension-access –theme dark
第三步,直接运行即可,是的,就需要以上三步,就可以运行了
第二:stable diffusion webUI ControlNet控件的安装
安装ControlNet控件的步骤与我们汉化教程类似,首先,我们打开stable diffusion webUI程序,然后依次打开Extensions>>Available>>Load from>> Extension index URL,此URL一般都默认填充了,如没有链接,可以直接输入图片中的链接,然后直接选择Load from按钮。
点击此Load from按钮后,webui程序会加载所有webui兼容的扩展程序,我们直接Ctrl+F4进行搜索关键词controlnet。找到sd-webui-controlnet插件,直接点击install安装即可。
这里install安装完成后,后提示installed,然后选择Extensions>>installed>>sd-webui-controlnet选择Apply and restart UI即可。
重启webui程序后,我们就可以在图生图或者文生图功能界面下面看到controlNet的菜单栏了,通过以上的步骤我们就成功安装了controlNet插件。当然若想成功运行controlNet,我们还需要下载相关模型。
第三:stable diffusion webUI ControlNet控件的模型下载
controlNet的运行同样需要下载相关的模型,这里我们需要进行人体姿态的检测,因此我们需要下载openpose的相关模型,其模型可以直接到hugging face上面直接搜索即可。controlnet控件下主要2个文件夹,其中models文件下放置我们下载的预训练模型,annotator文件夹下放置预处理模型,当然这个预处理模型可以不用下载,代码运行时,模型的相关文件会自动下载。
stable-diffusion-webui/extensions/sd-webui-controlnet/models#放置模型文件stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/openpose#放置openpose预处理文件
搜索到controlnet模型库后,我们可以看到其中主要包含2个文件夹,一个models,一个annotator,当然里面包含了很多相关的模型,本期,我们重点介绍的是人体姿态,依次我们下载相关的open pose模型即可。
这里关于预处理模型,我们下载body pose与hand pose 2个模型,下载完成后,放置到
extensions/sd-webui-controlnet/annotator/downloads/openpose文件夹,当然这里也可以不提前下载,代码运行时会自动下载。
openpose的模型文件,我们下载control openpose即可,但是这个模型有6G大小,下载速度很慢,我们下载webui提供的control open pose即可。
webui提供的control open pose,我们直接下载
control_openpose-fp16.safetensors即可,下载完成的模型,放置到
extensions/sd-webui-controlnet/models文件夹下。通过以上的步骤,我们的controlnet控件就可以正常使用了。这里重启一个webui界面,加载相关模型。
第四:stable diffusion webUI ControlNet控件的使用
这里我们使用文章第一张图片的prompt,在文生图界面下,按照一模一样的prompt,生成图片,可以看到在没有controlnet控件下,其生成的图片没有任何姿态。
这里,我们点击controlnet控件,上传上面我们的人体姿态图片,勾选enable.
preprocessor这里选择openpose,mode这里选择下载好的模型,其他参数默认即可。设置完成后,直接运行即可。
代码运行后,会自动检测openpose相关文件夹下的模型,其中预处理模型若找不到相关文件,其代码会自动下载相关模型。
##模型运行
Total progress: 100% 60/60 [00:42<00:00, 1.42it/s]
Loading model: control_openpose-fp16 [9ca67cc5]
Loaded state_dict from [/content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_openpose-fp16.safetensors]
Loading config: /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/cldm_v15.yaml
ControlNet model control_openpose-fp16 [9ca67cc5] loaded.
Loading preprocessor: openpose
preprocessor resolution = 512
ControlNet preprocessor location: /content/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads
Downloading: “https://huggingface.co/lllyasviel/Annotators/resolve/main/body_pose_model.pth” to /content/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/openpose/body_pose_model.pth
100% 200M/200M [00:00<00:00, 214MB/s]
Downloading: “https://huggingface.co/lllyasviel/Annotators/resolve/main/hand_pose_model.pth” to /content/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/openpose/hand_pose_model.pth
100% 141M/141M [00:00<00:00, 213MB/s]
Downloading: “https://huggingface.co/lllyasviel/Annotators/resolve/main/facenet.pth” to /content/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads/openpose/facenet.pth
模型运行完成后,便会重新生成一个带人体姿态检测的图片,前后对比可以看到,模型已经学习到了相关人体的姿态,并根据同样的prompt与人体姿态,重新生成了一个带人体姿态的,跟输入图片类似的图片。
当然,模型运行完成后,会自动生成一个人体姿态的图,有了这个人体姿态,我们完全可以使用这个图片作为输入图片,预处理哪里直接选择none即可。这里可以看到,预处理模型是为了检测人体姿态。
以上,便是本期介绍的controlnet控件的安装与使用,当然controlnet控件还包含了很多其他的功能,生成草绘图片,草绘图片上色等等功能,这个我们后期进行分享。