Stable Diffusion基础:精准控制之ControlNet

news2025/4/7 4:08:34

在AI绘画中精确控制图片的生成是一件比较困难的事情,炼丹师们经常需要大量抽卡才能得到一张满意的图片,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解。 ControlNet 提供了十几种控制网络模型,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高绘画质量、提升生图速度特别有用;基于 ControlNet 的能力,炼丹师们还可以将AI绘画拓展到更多的应用场景,比如艺术二维码、光影文字、线稿上色、老照片修复、图片风格转绘等等。

本文将以 Stable Diffusion WebUI 为例介绍 ControlNet 的安装和使用方法。

安装

ControlNet 在 Stable Diffusion WebUI 中是以插件的形式存在的,大部分 SD WebUI 的整合包或者镜像都已经安装了这个插件,如果你的还没有安装,需要先安装它。已经安装好的跳过这一小节即可。

方法一

打开 Stable Dissusion WebUI 前端页面,进入“扩展插件”-“从网址安装”,在“扩展插件的git仓库网址”中输入:https://github.com/Mikubill/sd-webui-controlnet,然后点击“安装”,待安装完成后重启 SD WebUI。各种 ControlNet 模型和预处理器会在使用时自动下载安装。

方法二

如果访问github不畅,也可以通过别的方式下载插件包和对应的模型,然后自己部署到 stable-diffusion-webui 中。文章最后有我整理的插件包和各种模型的下载地址。

具体部署路径如下:

  1. ControlNet插件:<stable-diffusion-webui>/extensions
  2. ControlNet模型:<stable-diffusion-webui>/extensions/sd-webui-controlnet/models
  3. ControlNet预处理器:<stable-diffusion-webui>/extensions/sd-webui-controlnet/annotator/downloads

注意需替换 <stable-diffusion-webui> 为你自己的Stable Diffusion WebUI部署路径。

安装成功后,在“文生图”、“图生图”界面的下方会出现 ControlNet 区域,点击右侧的展开按钮,下边有4个ControlNet 单元,也就是我们最多可以同时使用4个 ControlNet 来控制出图的效果,一般情况都能满足。需要注意,同时使用的模型越多,生成图片的速度越慢。

如果你的 ControlNet 只有1个单元,或者你想修改这个单元的数量,可以到“设置”中调整,如下图所示,找到“多重控制网:最大模型数量”,更改之后别忘了重启。

使用

ControlNet 需要搭配大模型一起使用,这里以“文生图”为例来演示 ControlNet 的使用。

首先选择大模型,输入提示词和反向提示词。这里选择 AnythingV5 这个二次元模型,提示词很简单的:1girl,反向提示词也很简单:NFSW,避免生成不太方便的图片。

然后是采样参数、画布尺寸、提示词引导系数、生成种子,这些都不是重点,使用默认的就可以。

最后重点介绍 ControlNet 的配置方法。由于设置较多,为了方便对照阅读,我将分段介绍。

下面将按照图片中的数字顺序进行介绍。

第一段

1、ControlNet 模块的标题。如图所示,ControlNet 文字后跟一个版本号,“1 unit”表示当前启用了1个 ControlNet 单元。

2、默认情况下,ControlNet的面板是折叠起来的,点击这个按钮可以展开。

3、可以同时开启多个 ControlNet 单元,它们共同参与图片的绘制,已经启用的单元会用亮色标注出来。不过开启的越多,生成图片的速度越慢。

4、在每个 ControlNet 单元中可以上传一张参考图片,ControlNet 会根据当前选择的 Control Type 从参考图片中提取某种特征信息,用于生成图片。

5、预处理效果预览:预处理就是从参考图中提取图片的某种特征信息,预览就是以可视化的形式展示这些特征信息。大部分 ControlNet 都支持预览,也有部分 ControlNet 不支持预览。下面会介绍生成这张预览图的方法。

6、ControlNet 参与图片绘制时:线条需要是白色的、背景需要是黑色的。这里提示用户如果参考图中的线条是黑色、背景是白色的,需要在预处理器中使用“反转”进行处理。

7、这里有四个关于参考图的操作按钮,它们按照前后顺序分别是:

(1)使用画布:

点击这个按钮后,首先会显示创建画布的参数,设置宽高,点击“创建新画布”。

然后参考图这里就变成了一个画布,我们可以使用鼠标在这个画布上随便画画。画布的右上角有几个按钮,可以调整画笔的粗细、撤销操作、清空画布、关闭画布等。生成图片时 ControlNet 将使用画布中的内容作为参考图。

(2)使用摄像头:

点击这个按钮之后,参考图这里将变成摄像头,我们可以使用电脑摄像头拍摄照片作为参考图。

(3)镜像摄像头:

点击这个按钮会将摄像头的画面水平反转。

(4)发送尺寸到 Stable Diffusion:

点击这个箭头按钮会把参考图的尺寸填写到 Stable Diffusion 的画布尺寸中,也就是填写到下图的位置:

8、启用:勾选这个按钮之后,当前的 ControlNet 单元才生效,才会参与生成图片。

9、低显存模式:如果显卡内存小于4GB,建议勾选。

10、完美匹配像素:勾选此项后,无需手动设置某些预处理器生成预览图的分辨率参数,ControlNet 将自动计算,更好的匹配 Stable Diffusion。建议勾选,不同的值,对出图还是有些影响的。以Canny为例:

Stable Diffusion画布尺寸为 512*512,预处理器分辨率分别为:512、1024和2048时的效果。

11、允许预览:勾选这个后,会在参考图的右侧出现一个预处理效果预览区域,也就是序号5这个位置。有了这个预览效果,我们就可以快速的了解各个预处理器的能力。这个效果预览不是上传参考图就自动出现的,下面会介绍生成这张预览图的方法。

12、Preview as input:勾选此项,生成图片时 ControlNet 会跳过预处理器的处理,直接使用预览图参与图片生成。这有一些用处,比如使用 OpenPose 控制网络时,我们可能需要修改预处理生成的人物姿势,然后再上传到这里用来生成人物的新姿势;再比如使用x/y/z图表时,勾选了这个之后,ControlNet 就会直接使用这里的预览图,也不需要生成每张测试图片之前都进行重复的预处理,这可以节省一些时间。

第二段

13、Control Type:这里选择当前要使用的控制网络类型。选择某个类型之后,14、16中会自动加载对应的默认预处理器和模型;如果选择All,预处理器和模型需要自己手动选择。

14、预处理器:提取参考图片中的某种特征信息,作为生成图片时 ControlNet 模型的参数。不同 Control Type 支持的预处理类型和数量各不相同,有的 Control Type 不支持预处理器,比如 IP2P。我将在介绍具体单个Control Type 时详细介绍他们。

15、生成预览图:点击这个爆炸图标会使用当前选中的预处理器生成效果预览,并展示在序号5的位置。

16、模型:ControlNet 参与图片生成时使用的模型,不同 Control Type 支持的预处理类型和数量各不相同。我将在介绍具体单个Control Type 时详细介绍他们。

17、ControlNet 参与图片生成的三个参数:

(1)控制权重:ControlNet 模型在生成图片时的权重,降低这个权重,ControlNet 对绘图的约束就会变弱。

(2)启动控制的步数:生成图片时 ControlNet 介入的时机,取值范围:0-1,默认0,采样步数乘以这个值就是 ControlNet 开始参与的步数。 这个值越小,ControlNet 对生成图片的约束力越强。

(3)结束控制的步数:生成图片时 ControlNet 退出的时机,取值范围:0-1,默认1,采样步数乘以这个值就是 ControlNet 退出绘制的步数。这个值越大,ControlNet 对生成图片的约束力越强。

可以根据出图的效果,灵活调整这三个参数的值。根据经验,SD一般会在前30%的采样内确定图片的整体结构,所以需要保持图片结构时启动控制的步数不宜过大。

18、预处理器的参数,不同的预处理器参数不同。

以canny为例,通过调整阈值可以控制边缘图中保留细节的多少。

  • Canny Low Threshold:去掉过细的线段。大于低阈值的线段被认定为边缘。
  • Canny High Threshold:去掉零散的线段。大于高阈值的线段被认定为强边缘,全部保留;高阈值和低阈值之间的线段认定为弱边缘,只保留强边缘相邻的弱边缘。

19、控制模式:ControlNet 的通用设置,以提示词为主,还是以 ControlNet 为主,默认是平衡模式。

以提示词为主时,细节上会有更多自由发挥,效果如下图所示:

19、缩放模式:ControlNet的通用设置,参考图与要生成的图片尺寸不一致时如何处理。拉伸有变形的问题,一般使用裁剪和填充。

裁剪:根据画布的宽高比例对参考图进行裁剪,然后再将参考图缩放到画布尺寸;

填充:将参考图的至少一条边缩放到画布尺寸,并自动补充画布中空白的部分。

我将画布尺寸改为427*640,出图对比效果如下:

20、图像迭代:目前仅在批处理模式下生效。勾选后会使用上次生成的图像作为下一次迭代的参考图。网上的介绍不多,能找到的用途有两个:连续优化一张比较差的图片;转绘视频帧时用于减少序列帧的画面不一致性。较难使用,比较鸡肋。

资源下载

本系列使用的模型、插件,生成的图片,都已经上传到我整理的 Stable Diffusion 绘画资源中,后续也会持续更新,如有需要,请关/注/公/众/号:萤火遛AI(yinghuo6ai),发消息:SD,即可获取下载地址。


以上就是本文的主要内容了,如有问题,欢迎留言沟通交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用大模型知识图谱技术,告别繁重文案,实现非结构化数据高效管理

我&#xff0c;作为一名产品经理&#xff0c;对文案工作可以说是又爱又恨&#xff0c;爱的是文档作为嘴替&#xff0c;可以事事展开揉碎讲清道明&#xff1b;恨的是只有一个脑子一双手&#xff0c;想一边澄清需求一边推广宣传一边发布版本一边申报认证实在是分身乏术&#xff0…

【uniapp】小程序开发:2 安装uni-ui组件库、使用pinia状态管理、自定义http请求

一、安装uni-ui组件库 1、安装 pnpm i -D sass pnpm i dcloudio/uni-ui2、配置组件自动导入 使用 npm 安装好 uni-ui 之后&#xff0c;需要配置 easycom 规则&#xff0c;让 npm 安装的组件支持 easycom 打开项目根目录下的 pages.json 并添加 easycom 节点&#xff1a; //…

LeetCode 75-03:拥有最多糖果的孩子

func kidsWithCandies(candies []int, extraCandies int) []bool {maxCandy : 0for _, v : range candies{if v > maxCandy{maxCandy v}}res : make([]bool, len(candies))for i,candy : range candies{res[i] candy extraCandies > maxCandy}return res }

对象的生命周期、配置文件参数化、自定义类型转换器

目录 一、对象的生命周期 1、什么是对象的生命周期 2、为什么要学习对象的生命周期 3、生命周期的三个阶段 &#xff08;1&#xff09;创建阶段 &#xff08;2&#xff09;初始化阶段 1、InitializingBean 接口 2、对象中提供一个普通的方法 3、细节分析 &#xff08…

linux离线安装make

一、下载rpm包 https://pkgs.org/search/?qmake 二、拷贝至服务器 三、安装make rpm -ivh make-3.82-24.el7.x86_64.rpm四、查看是否安装成功 make -v

Git 设置公钥

一、公钥管理 1、生成公钥 WinR&#xff0c;输入cmd&#xff0c;打开命令行窗口&#xff0c;执行ssh-keygen命令 查看生成的公钥&#xff0c;使用everything搜索id_rsa.pub&#xff0c;如下&#xff1a; 2、配置公钥 打开服务端网站&#xff0c;添加公钥 3、修改Git Tourtise配…

PostgreSQL 技术内幕(十)WAL log 模块基本原理

事务日志是数据库的重要组成部分&#xff0c;记录了数据库系统中所有更改和操作的历史信息。 WAL log(Write Ahead Logging)也被称为xlog&#xff0c;是事务日志的一种&#xff0c;也是关系数据库系统中用于保证数据一致性和事务完整性的一系列技术&#xff0c;在数据库恢复、高…

Ubuntu 安装golang

目录 1. 从官方网站下载合适的安装包 2. 解压安装包 3. 设置环境变量 4. 验证安装是否成功 1. 从官方网站下载合适的安装包 到官网&#xff1a;https://go.dev/dl/查找对应的版本 # 下载golang对应的版本 wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz 2. …

PM2.5 激光粉尘传感器之DSL-08(DS-08)

一款产品里用到粉尘检测&#xff0c;最后在淘宝上找一到了一款&#xff0c;攀藤型号是&#xff1a;PMS9003 还有一款外形类似型号是DSL-08。看了资料是可以通用的。 传感器的产品资料放在百度网盘里 链接&#xff1a;https://pan.baidu.com/s/1oNCwO7n9oEdzju91cF99xg?pwd12…

PX4 通过 Vision 实现 Position、Altitude 和 Offboard 模式

本文通过 VINS-Fusion 的里程计信息为 PX4 提供视觉信息&#xff0c;从而达到 视觉定高和定点 的目的 主要工作为创建一个将 vins 里程计信息发布给 Mavros 的 /mavros/vision_pose/pose 话题 首先创建一个工作空间 mkdir -p ~/catkin_ws/src/vision_to_mavros/src/ cd ~/ca…

使用Java将PPT、PPTX和PDF转换为图片

从Office到图片—使用Java实现文件格式转换 PDF转图片1. 万事第一步2. 撸代码 PPT/PPTX转图片1. 万事第一步2. 撸代码验收一下 最近小雨遇到了一个需求&#xff0c;需要在前端小程序中嵌入展示Office文件的功能。然而&#xff0c;前端使用开源组件进行在线预览会导致性能消耗较…

PostgreSQL设置主键为自增

1、创建自增序列 CREATE SEQUENCE table_name_id_seq START 1; 2、设置字段默认值 字段默认值中设置 nextval(table_name_id_seq) 3、常用查询 -- 查询所有序列 select * from information_schema.sequences where sequence_schema public; -- 查询自增序列的当前值 select cu…

【分布式计算】七、同步 synchronization 重难点

两个协议&#xff1a; 1、NTP&#xff08;Network Time Protocal)–>广泛使用    机器周期向时间服务器获取准确时间   2、没有协议名称 − > -> −>没有广泛使用    时间服务器周期扫描所有机器&#xff0c;计算时间平均值&#xff1b;导致时间服务器负载…

Mac使用sz/rz

从使用体验上说,sz/rz要比scp要好得多.但Mac上使用这两个命令需要进行相应配置. sz&#xff1a;将选定的文件发送&#xff08;send&#xff09;到本地机器 rz&#xff1a;运行该命令会弹出一个文件选择窗口&#xff0c;从本地选择文件上传到Linux服务器 下载安装lrzsz brew i…

小红书“不误正夜”指南丨2023夜间营销数据报告

对于当代年轻人来说&#xff0c;白天的 8 小时需要献给工作、学习和社交&#xff0c;夜晚时光才真正属于自己。“下班后开始新的一天”&#xff0c;越来越多人开始认同这个概念&#xff0c;告别“报复性熬夜”&#xff0c;重新掌握晚间生活的方向盘&#xff0c;多样化的生活方式…

芯片核数造假,华为不装了,网友直呼这一波赚翻了!

首先说一下之前以为华为是青岛新恩制作的芯片&#xff0c;但是在最新的一个消息中发现&#xff0c;麒麟芯片其实是华为子公司自主研发生产的。 2个重量级消息&#xff0c;华为突破芯片封锁后&#xff0c;美国科技界惊出一身冷汗&#xff01; 华为麒麟9000s是中芯国际做的吗&…

Linux-Nginx安装

一、Nginx下载 官网下载地址&#xff1a; https://nginx.org/en/download.html 国内镜像地址&#xff1a; https://mirrors.huaweicloud.com/nginx 二、Nginx安装 1. 将下载的Nginx安装包上传到Linux服务器指定安装盘符下&#xff0c;解压zip包 tar -zxvf nginx-1.23.3.ta…

使用亚马逊云服务器在 G4 实例上运行 Android 应用程序

随着 Android 应用程序和游戏变得越来越丰富&#xff0c;其中有些甚至比 PC 上的软件更易于使用和娱乐&#xff0c;因此许多人希望能够在云上运行 Android 游戏或应用程序&#xff0c;而在 EC2 实例上运行 Android 的解决方案可以让开发人员更轻松地测试和运行 Android 应用程序…

京东商品详情数据采集接口

使用京东商品详情接口的具体流程如下&#xff1a; 注册账号并登录。填写应用相关信息&#xff0c;包括应用名称、应用描述、应用回调地址等&#xff0c;然后提交申请。审核通过后&#xff0c;进入应用管理页面&#xff0c;点击“应用信息”&#xff0c;获取应用Key和应用Secre…

Kubernetes(k8s)上搭建一主两从的mysql8集群

Kubernetes上搭建一主两从的mysql8集群 环境准备搭建nfs服务器安装NFS暴露nfs目录开启nfs服务器 安装MySQL集群创建命名空间创建MySQL密码的Secret安装MySQL主节点创建pv和pvc主节点的配置文件部署mysql主节点 安装第一个MySQL Slave节点创建pv和pvc第一个从节点配置文件部署my…