【文生图系列】ControlNet如何在Stable Diffusion Webui中使用

文章目录

    • ControlNet
    • Stable Diffusion + ControlNet
    • 安装ControlNet插件
    • bug
    • 例子展示
    • 参考

ControlNet

ControlNet是一个神经网络结构,通过添加额外的条件控制扩散模型。给定任务条件,ControlNet能够提升已训练好的图像扩散模型。对于任意一个神经网络块,如下图所示, x , y x,y x,y为神经网络中的特征,蓝色虚线框为ControlNet。ControlNet由zero convolution和神经网络块组成,其中zero convolution为 1 × 1 1 \times 1 1×1的卷积,weight和bias的初始值为0,神经网络块为原神经网络块的复制品,原模型中的神经网络块在训练过程中被冻结,只有ControlNet中的复制品进行训练。 c c c是我们想要添加到扩散网络中的额外条件。
【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第1张图片

Stable Diffusion + ControlNet

Stable Diffusion生成的图片随机性太强,即使精心设计提示词,生成的图片仍不能满意。将ControlNet应用到Stable Diffusion模型中,用来控制stable diffusion模型的图片输出。ControlNet能够复用stable diffusion的编码器,将其作为一个强大的鲁棒的backbone用来学习不同的控制条件。
【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第2张图片

安装ControlNet插件

  1. 在Stable Diffusion Webui找到扩展(Extensions),选择从网址安装(Install from URL),输入网址https://github.com/Mikubill/sd-webui-controlnet.git,点击下载,然后等待下载sd-webui-controlnet项目。
    【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第3张图片
  2. 然后返回已安装(Installed)界面,点击检查更新(Check for Updates),等待一段时间,加载下载的sd-webui-controlnet项目。再然后点击应用并重启用户界面(Apply and restart UI)按钮,重启用户界面。
    【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第4张图片
  3. 返回文生图(txt2img)界面,在随机种子下面,多了ControlNet的选线,点击右面的三角进行展开。
    在这里插入图片描述
    ControlNet展开界面如下所示:
    【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第5张图片
  4. 在ControlNet展开页面中,找到模型选项,即使更新,还是None,没有模型。所以还需要从huggingface中下载模型到stable-diffusion-webui/models/ControlNet文件下。
    【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第6张图片
    目前huggingface中有ControlNet和ControlNet-v1-1两个版本。预训练的模型为Annotators,在进行预训练计算时,会自动下载,不过,如果网不是很好,就会报ConnectionError错误。
    下图是ControlNet模型界面的截图,模型都比较大。ControlNet-v1-1包含更多模型和yaml文件,相比于ControlNet,模型会小一些。
    【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第7张图片
  5. 设置ControlNet Unit的个数。默认只有一个Unit。设置–>ControlNet–>设置Multi ControlNet的最大网络数量,我设置了3,ControlNet将有三个Unit。然后保存设置并重启Webui。
    在这里插入图片描述

bug

Stable Diffusion的模型是v2-1_512,ControlNet和Stable Diffusion图像尺寸大小均是512,进行图片生成时,报下述运行错误。
在这里插入图片描述
解决方案:下载Stable Diffusion V1.5版的预训练模型,即可。

例子展示

首先,输入提示词“a cute dog”,大模型选择Stable Diffusion v1.5版的预训练模型,先不启用ControlNet,点击生成按钮,生成一张可爱的小狗照片。
【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第8张图片
下面,文生图的参数保持不变,在ControlNet Unit中上传图像,启用ControlNet,控制类型选择Canny,如下图所示。允许预处理查看(Allow Preview),点击预处理旁边的闪电标志,就能看到上传图片的轮廓图。补充提示词,然后点击生成按钮,就能返回一张可爱的小狗图片和轮廓图。
【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第9张图片
下表是不同模型生成图的对比,加入ControlNet之后的Stable Diffusion模型的生成图与参考图动作形态比较相似。

SD V1.5 SD+ControlNet 参考图 控制类型
【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第10张图片 【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第11张图片 【文生图系列】ControlNet如何在Stable Diffusion Webui中使用_第12张图片 Canny

参考

  1. stable diffusion webui
  2. ControlNet
  3. Adding Conditional Control to Text-to-Image Diffusion Models

你可能感兴趣的:(文生图系列,stable,diffusion,ControlNet,人工智能,AIGC)