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


    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是我们想要添加到扩散网络中的额外条件。
    在这里插入图片描述

    Stable Diffusion + ControlNet

    Stable Diffusion生成的图片随机性太强,即使精心设计提示词,生成的图片仍不能满意。将ControlNet应用到Stable Diffusion模型中,用来控制stable diffusion模型的图片输出。ControlNet能够复用stable diffusion的编码器,将其作为一个强大的鲁棒的backbone用来学习不同的控制条件。
    在这里插入图片描述

    安装ControlNet插件

    1. 在Stable Diffusion Webui找到扩展(Extensions),选择从网址安装(Install from URL),输入网址https://github.com/Mikubill/sd-webui-controlnet.git,点击下载,然后等待下载sd-webui-controlnet项目。
      ![在这里插入图片描述](https://img-blog.csdnimg.cn/6b307b6c7d914154910a74378f9702f1.png
    2. 然后返回已安装(Installed)界面,点击检查更新(Check for Updates),等待一段时间,加载下载的sd-webui-controlnet项目。再然后点击应用并重启用户界面(Apply and restart UI)按钮,重启用户界面。
      在这里插入图片描述
    3. 返回文生图(txt2img)界面,在随机种子下面,多了ControlNet的选线,点击右面的三角进行展开。
      在这里插入图片描述
      ControlNet展开界面如下所示:
      在这里插入图片描述
    4. 在ControlNet展开页面中,找到模型选项,即使更新,还是None,没有模型。所以还需要从huggingface中下载模型到stable-diffusion-webui/models/ControlNet文件下。
      在这里插入图片描述
      目前huggingface中有ControlNetControlNet-v1-1两个版本。预训练的模型为Annotators,在进行预训练计算时,会自动下载,不过,如果网不是很好,就会报ConnectionError错误。
      下图是ControlNet模型界面的截图,模型都比较大。ControlNet-v1-1包含更多模型和yaml文件,相比于ControlNet,模型会小一些。
      在这里插入图片描述
    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 Unit中上传图像,启用ControlNet,控制类型选择Canny,如下图所示。允许预处理查看(Allow Preview),点击预处理旁边的闪电标志,就能看到上传图片的轮廓图。补充提示词,然后点击生成按钮,就能返回一张可爱的小狗图片和轮廓图。
    在这里插入图片描述
    下表是不同模型生成图的对比,加入ControlNet之后的Stable Diffusion模型的生成图与参考图动作形态比较相似。

    SD V1.5SD+ControlNet参考图控制类型
    在这里插入图片描述在这里插入图片描述在这里插入图片描述Canny

    参考

    1. stable diffusion webui
    2. ControlNet
    3. Adding Conditional Control to Text-to-Image Diffusion Models
  • 相关阅读:
    C超市商品信息查询系统
    在线权鉴、签约、授权-逐浪CMS面向web3.0的韬略与实践
    CF837G Functions On The Segments
    Java设计模式之组合模式
    记一次接口优化操作
    17.13使用元数据分析数据库(血干JAVA系类)
    对话永洪科技CEO何春涛:专注BI,决胜AI时代丨数据猿专访
    【Python】python常用用法细节(1)
    Linux head/tail
    C++:面试二叉树的遍历
  • 原文地址:https://blog.csdn.net/weixin_42111770/article/details/131851471