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

2023-11-04

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.5 SD+ControlNet 参考图 控制类型
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 Canny

参考

  1. stable diffusion webui
  2. ControlNet
  3. Adding Conditional Control to Text-to-Image Diffusion Models
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Kafka源码阅读

    工程版本与工程建立 kafaka 使用scalar java 语言编写 kafaka 源码阅读版本 kafka 0 10 1 1 工程建立 1 安装 JDK8 2 安装 gradle 3 0 3 下载安装IDEA 社区版 免费 4 用IDE
  • 华为OD机试 C++ 矩阵稀疏扫描

    题目 描述 题目描述 一个矩阵 如果其中大部分元素都是0 我们就称它为 稀疏矩阵 稀疏矩阵在实际应用中很常见 处理这种矩阵可以大大提高计算效率 现在 你得到了一个矩阵 要求你检查哪些行和列是 稀疏 的 稀疏 的定义是 当一个行或列中的0的数
  • Java基础——this,super,构造函数

    this this是正在访问的代码所属的对象 是一个对象 关键字this有两个用途 引用隐式参数 调用该类其他的构造器 super super关键字有两个用途 调用超类的方法 调用超类的构造器 构造函数 构造函数可以重载 但是不能被继承 也
  • angular 如何实现ng-model

    最近在用angular5写项目 刚接触angular 他对于我还是陌生的朋友 最近写了一个组件 用到了ng model的实现 所以这里简单记录下 比如要创建一个组件叫my input 1首先 在 Component配置中添加encapsul
  • 达梦数据库教程:DM8查询慢SQL

    set echo off set feedback off set timing off set verify off set lineshow off SELECT SESS ID EXEC TIME FINISH TIME N RUNS
  • 使用Jupyter分析Wi-Fi数据

    在嗅探Wi Fi时 Wireshark是跨平台的 能够捕获大量数据 弄清这些数据完全是另一项任务 这就是Jupyter Notebook的用武之地 它可以帮助分析Wi Fi数据包 并确定特定电话以前连接过的网络 从而使我们可以了解所有者的身
  • buildroot之交叉编译环境

    前言 为了搭建交叉编译环境 查了很多的方法 有自己搭建的 高手 有的用cross ng工具的等等 最后查到了buildroot这个工具 最后为啥选择这个工具的原因是buildroot不仅能搭建交叉编译环境 而且还能编译内核 根文件系统 可见
  • 360无线网卡驱动服务器,360无线网卡驱动

    这是360无线网卡驱动下载 一款USB接口的无线网卡 插在台式机上 是可以做无线网卡接收Wi Fi上网的 作为 随身Wi Fi 其作用是把台式机或笔记本电脑的网络发射为Wi Fi热点 可以供手机 平板或者笔记本电脑等有Wi Fi功能的设备使
  • Java反编译器推荐:5款顶级工具助力Java代码逆向分析

    Java反编译器推荐 5款顶级工具助力Java代码逆向分析 Java反编译和编译是软件开发者 安全研究人员和逆向工程师在分析和理解Java代码时常常遇到的任务 本文将为您介绍五款最佳的Java反编译器 这些工具能够帮助您还原被编译为字节码的
  • 华为OD机试真题- 目录删除-2023年OD统一考试(B卷)

    题目描述 某文件系统中有N个目录 每个目录都一个独一无二的ID 每个目录只有一个父目录 但每个父目录下可以有零个或者多个子目录 目录结构呈树状结构 假设 根目录的ID为0 且根目录没有父目录 其他所有目录的ID用唯一的正整数表示 并统一编号
  • Connectify Hotspot,让你的电脑变成WIFI热点!!

    http www ttrar com html Connectify Hotspot Professional html down 我使用的是破解版
  • 在C语言中怎样定义一个字符串并输入输出

    在C语言中没有字符串类型 用字符数组处理字符串 字符数组定义 char 数组名 常量表达式 常量表达式 说明 一维字符数组 用于存储和处理一个字符串 二维字符数组 用于同时存储和处理多个字符串 输入输出方法 逐个字符输入输出 c 整个字符串
  • 使用HTTP获取 OAuth 2.0 access tokens(Google)

    请求access token流程 1 搭建开发环境 申请Google账号 登录Google账号 进入创作者工作室 进入直播栏目 打开个人账户直播功能 进入google develop console a 创建新项目 b 启用YouTube
  • 如何用qt获取/etc/network/interface文件中的配置信息及写入信息

    void read interface file QFile readFile etc network interfaces QString strAll if readFile open QIODevice ReadOnly QIODev
  • C语言学习系列1-helloworld示例

    操作环境 CentOS release 6 4 Final 新建文件helloworld c 编辑保存如下内容 include
  • C语言函数大全-- s 开头的函数(3)

    s 开头的函数 3 1 sleep 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 sopen 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 sound 3 1 函数说明 3 2 演示示例 4 spawnl 4 1 函
  • leetcode20. 有效的括号 [简单题]

    题目 给定一个只包括 的字符串 s 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 每个右括号都有一个对应的相同类型的左括号 示例 1 输入 s 输出 true 示例 2 输入 s 输出
  • Windows server远程桌面端口修改

    服务器的远程桌面端口号默认都是3389 修改端口方法如下 1 进入控制面板 防火墙 高级设置 入站规则 可以看到远程桌面TCP In的端口号默认是3389 2 进入注册表 运行 regedit 在注册表中 依次展开目录 HKEY LOCAL
  • ESP32-CAM使用过程的问题

    Esp32 cam算比较便宜实惠的摄像头模块 但是esp32在国内很冷门 可以查看的资料很少 使用过程走了很多弯路 一直跟厂家的技术支持沟通 终于可以显示画面了 以下是本人使用过程中遇到的一些问题 希望对大家有点帮助 有些问题有点蠢 1 a
  • 【文生图系列】如何在Stable Diffusion Webui中使用ControlNet

    文章目录 ControlNet Stable Diffusion ControlNet 安装ControlNet插件 bug 例子展示 参考 ControlNet ControlNet是一个神经网络结构 通过添加额外的条件控制扩散模型 给定