AIGC技巧2:SD插件ControlNet详解 让AI更易掌控!
myzbx 2025-05-08 03:32 10 浏览
Stable Diffusion是目前应用最广泛的本地AIGC,AI的最大特点就是强随机性,虽然在大部分时候它是优点,但难以掌控,随机抽卡也让用户颇为头疼。今天我们就为大家详细介绍一下Stable Diffusion中的ControlNet插件,它可以极大降低抽卡的随机性,让用户更容易的控制AI出图。
ControlNet是什么?有什么作用?
ControlNet是Stable Diffusion中的一款超强插件,它不同于模型,不会控制出图的风格,而是在底部的菜单栏中调用。
ControlNet需要结合不同大模型使用,插件本身的模型用于控制单元计算。
ControlNet可以多单元组合应用,增强出图控制。
ControlNet可以控制人物姿势、线稿生图(多种风格可选)、老照片上色、光影艺术字、固定照片物体生图、固定景深生图等等。
1 ControlNet插件界面讲解
在这里我们就不讲SD的操作以及插件的安装了,默认大家已经下好秋叶大神的整合包(里面包含ControlNet),如果想了解基础操作,可以翻看我前一篇文章。
AIGC技巧:SD图生图 如何控制变量生成想要的效果?
下面直接来看看ControlNet操作界面:
1.工作单元,ControlNet运行时可多单元同步参与计算
2.图像区,上传照片、手绘、效果预览(ControlNet的本质仍是图生图)
3.辅助功能区,新建画布,打开摄像头,尺寸同步等
4.设置勾选,勾选启用生成的图片才会参考ControlNet插件效果
5.控制类型,不同生成效果
6.模型区,ControlNet生成必须要有对应模型,预处理器可以空白
7.生成权重和介入控制区(这里我们后面详细讲解)
8.简单的字面意思
2 测试平台
SD出图对于显卡算力和显存的要求不过多赘述了,ControlNet对于显存的要求同样很高。在常规文生图中,我们大多数时间会参照模型(512×512或1024×1024)的尺寸进行生成。
但图生图会根据原图尺寸进行调整,如果想生成一次可用的图片,尺寸要比模型大很多,这时候对于显存的要求就非常高。
本次测试平台我们选择了技嘉提供的整机,整体采用纯白配件打造,兼顾美观与性能。对于内容创作者或玩家来说,也是桌搭非常好的选择。
显卡为技嘉GeForce RTX 4080 SUPER AERO OC雪鹰,RTX 4080拥有16GB大显存,304个Tensor Cores,达到780 AI TOPS,在简单的内容创作和日常主流AIGC软件中,都能够提供高速稳定的体验。
主板为技嘉B760M冰雕,采用16(14+1+1)相供电,且采用了M.2全覆盖散热以及供电全覆盖散热,轻松驾驭i9级处理器。
另外在AIGC软件中,图像或视频的生成均以GPU为主,在算力上GPU也要比CPU高出几十倍。不过我们在长时间的生成中,不可能干等着,所以一颗好的CPU也能够让我们同时处理更多工作。
下面直接进入正题,来看看ControlNet到底有何神奇之处。
PS:由于时间有限,每种效果仅用了简单的提示词控制,生成图像比较简陋。如果想生成理想图像,大家还需要在提示词上进行打磨,反复实验。
3 Canny(硬边缘)
Canny可以识别到画面中非常详细的线条,能够最大程度还原照片,可以说是ControlNet中约束性最强的控制。
在第一次讲解中,我们先大概了解一下ControlNet的操作流程。
首先上传一张图片后,如果生成想保持原图的尺寸,可以点击预处理结果预览右下方的上剪头;
在控制类型中选择好Canny后,下面的预处理器和模型会自动变成Canny对应的,大部分时间无需手动调节。但有时预处理中会有不同分支,需手动选择。
点击对话框中的爆炸图表,插件就会生成一张由该模型控制的预处理效果。从图中能看到在硬边缘模式下,生成图像为包含了所有边缘的黑白线稿。
控制权重默认为1,也是最为均衡的;引导介入时机和引导终止时机,可以理解为ControlNet在生成这张图片中参与了哪些部分,默认的0-1就是全程参与。
4 SoftEdge(软边缘)
用了最简单的Canny讲解操作方法后,我们再来看SoftEdge,相比硬边缘,它在预处理效果中的线条比较柔和,没有框定所有约束,给AI发挥的空间也就越大。
5 Lineart(线稿)
Lineart是专门提取线稿的模型,相比硬边缘和软边缘,它更接近手绘的风格,并且可以针对不同类型的图片进行不同的处理。
可以看到在不同线稿的提取方法中,预处理的线稿差别会很大,上图中标准线稿提取-白底黑线反色,比较好的还原了整个场景的结构和关系,但是它与硬边缘不同的是,仅靠白底反色处理,所以边缘仍然较为柔和,出图效果在最大程度还原原图结构外,也会有一些发挥空间。
而在coarse(粗略线稿提取)中,则更像标准的手绘线稿,而且它更偏向描绘主体。不过这样的问题就是AI发挥度更大,关键词少的话更容易崩。
在realistic(写实线稿提取)中,风格化更为明显。不过这几种先搞提取方法整体的出图效果大同小异,如果默认标准的提取无法达到效果,可以试试不同的手法。
6 Scribble/Sketch(涂鸦/草图)
Scribble/Sketch的风格更为粗犷一些,基本只保留了图片中的大致轮廓,所以生成出来的图片也只能看出与原图神似,但完全不是一回事。
不过既然是涂鸦玩法,那么使用照片显然有点违背初衷,在草稿上随便画几条线,然后静静看着AI能够联想出来什么,才是最有意思的。
而且这个功能相比NVIDIA Canvas所呈现的效果更好,毕竟Canvas是用画笔颜色代替物体,有点类似于Segmentation的效果,而Scribble/Sketch只是用画笔给了轮廓,重要的还是靠提示词来生成。
7 MLSD(直线)
MLSD是仅能提取直线的线稿,一般在建筑,或家居场景中使用的比较多,不过我们依然能发现一些有意思的用法。
可以看到模型将显卡边框的线条全部提取了出来,但是转角部位的弧形则没有。而且直线提取,少了很多具象化的东西,想象空间更大,非常容易出现意想不到的效果。
小结
上面几种都是属于线稿出图,只是在细分领域中有所区别。用过图生图的大家都知道,它依靠原图的效果来控制生成图像,所以可以做到与原图很像,但自由度非常小。想要更大的自由度又非常难以控制。
ControlNet这几个模型的本质上来说还是图生图,但相比图生图,它相当于有了一层蒙版,自由度更高,更可控。
8 Openpose(姿态)
Openpose是非常实用的一个工具,SD生图最大的困难就是对于姿态的控制,往往仅靠提示词,AI无法明确我们想表达的内容,而Openpose的火柴人就可以完美还原图中角色的姿态,更厉害的是,它还可以调节多人的不同姿态。
全身像适合full预设,姿态、手部及脸部都会被火柴人框住
Openpose预设中分的较为细致,对应不同的构图,可选择脸部、手部、姿态等范围。
在Openpose中,除了预处理,还可以手动调节捕捉细节,从而保障画面的真实or夸张,比如大家也可以把自己照片的腿部拉长,这样就会在其他结构不变的情况下,生成一个大长腿小姐姐。
9 Recolor(重上色)
Recolor可以对图片进行重新上色,它可以将现有的彩色照片进行黑白处理,然后重新由提示词填上颜色;但为黑白照片添加颜色应该才是大家最期望看到的,
为黑白老照片上色其实比较困难,首先老照片的清晰度都比较低,灰阶也没有现代黑白照片那样对比明显,AI识别起来很困难;另外老照片特有的噪点和马赛克又为AI区分细节增加了困难。
如果想要高清还原一张彩色照片,可以分为几步:1、运用AI的高清修复,先将照片分辨率放大;2、消除噪点、修复损坏部分;3、最后再进行上色填充。
不过相比于高分辨率无噪点的AI精修,个人还是更倾向于老照片那种“低保真”的年代感。其实用高糊原片,我们同样能够再利用PS对多张图片进行叠加处理,从而保留相对准确的部分。
10 AI光影艺术字
这一部分我没有写对应的控制类型,它可以用ControlNet自带的Tile/Blur(分块/模糊)来制作,也可以用自己下载的模型,都能达到想要的效果。
比如上面的图片,我使用了
Control_v1p_sd15_brightness模型来制作,它能够将字体通过光影的形式更好的融入图片中。
这里重点讲解一下AI艺术字的设置,原始图像可以在PS中直接写好字导出图片,或者使用ControlNet自带的画笔进行涂鸦。
如果使用Tile/Blur自带的模型,预处理器和模型这里都无需改动,如果想要选择自己下载的模型,预处理器需要选择none,然后刷新模型,找到自己想要的。
控制权重、引导介入时机、引导终止时机在其他模型中都是默认的,不过在艺术字中均要手动调节。
控制权重设置为0.5为宜,如果是1的话会让字体过于突出,而出现上图的效果。
引导介入时机和引导终止时机这两项是相辅相成的,0-1代表艺术字全程参与画面的迭代生成,但那样得出的效果与控制权重为1差不多。通常设置为0.2-0.4左右,代表着画面迭代在20%-40%的时间段有字体参与。
但这一数值并不绝对,如果你的画面迭代步数越高,引导终止时机则可以越大。
如果想要得到理想效果,仍需要多次尝试。在提示词、字体、大小、介入终止时机均达到理想平衡时,再更换文字,就能够比较快速的批量出图了。
11 Depth(深度)
Depth则可以很好地控制原图中的景深,如果想保持图像中的纵深结构可以选择。除了街景,在室内场景中,AI往往会生成出空间错乱的图片,Depth能够完美解决这一点。
Depth的发挥空间也非常大,能够看到它的预处理图像仅有“近白远黑”的概念,所以如果看到有哪些喜欢的构图,可以利用Depth借鉴一下。
除了ControlNet预处理的黑白图像,所有的模型都可以自定义上传蒙版,大家在PS中可以把过于突出的元素抹掉或增减,防止上图中出现明显边缘的情况。
12 NormalMap(法线贴图)
NormalMap比较神奇,它能够计算图片中主体的明暗关系,并且相对较为还原原图的姿势。
不过相对来说,NormalMap在预处理之后的修改空间不大,如果是普通的二三次元转换,不如线稿来的方便可操作性强;但如果是明暗光影效果较强的图片,想要保留这些细节的话NormalMap是不错的选择。
13 Segmentation(语义分割)
Segmentation拥有超强的稳定性和发散性,它的预处理结果不像其他模型是线稿,而是色块图,不同色块也有对应的不同物体。
可以看到Segmentation拥有超强的固定性,虽然预处理只是一些不同的色块,但每个色块都代表着固定的东西,这个模型也非常适合居家类风格,它可以将物体原本的形状固定住,然后转换为任何形式。
另外,虽然是色块图,但Segmentation不像NormalMap的预处理那么难以修改,知道了颜色代码之后,用户同样可以自行绘制色块到蒙版上,生成图像中就会出现对应的物体;以及在预处理识别不准确的时候也可以手动修改。
14 总结
这次技巧相对比较详细的介绍了ControlNet的各种控制类型,一些没讲到的相对大同小异,或者可替代性较强,当然大家也可以自行尝试。由于时间关系,本次所有模型出图均以演示为主,效果有所欠缺。
ControlNet本质上来讲,依然是图生图。但相比SD自带的图生图,它又更偏向以文字生成。在都有原图约束的情况下,他们最大的区别在于ControlNet拥有多种底稿的控制类型,如边缘线稿、深度、光影、姿态等。
所以它能够在遵循原构图的情况下,对生成图像随意调整,而SD自带图生图想要拥有自由度,则需要靠重绘幅度来调整,但这样一来会对原图有较大破坏。
最后总结一下ControlNet中容易碰到的坑:
1、提示词很重要,没有正反提示词,即使有原图打底也容易生成奇怪的东西
2、更换大模型后,需要注意ControlNet模型是否丢失
3、所有ControlNet生图都会附带一张预处理结果预览,没有的话代表ControlNet没有启用
4、ControlNet必须要使用对应模型,但它的模型与大模型不同,不控制生图风格,更偏功能性
5、使用放大涂鸦绘制时,一定一定一定不要点这个叉子,它是删除图像,不是让图像复位……
(8690529)
相关推荐
- 怎么恢复7z文件 7z文件删除了怎么恢复
-
7z是一种压缩格式的文件,它运用LZMA压缩算法,该压缩算法的输出稍后被算数编码进行处理以便后续进一步压缩,压缩比十分高。我们可以将文件压缩成这种格式,便于传输,保存,占空间少。了解更多7z文件知识...
- 郎酒让消费者喝得明明白白 算术题里有答案
-
日前,『郎酒酱香产品企业内控准则』颁布,郎酒首次公开酱香产品生产全过程,公布酱香产品产能、储能及投放计划。随后,郎酒官微向消费者发出「品控算术题」有奖问答。郎酒亮出家底,消费者踊跃留言。8天后,谜底揭...
- 学龄前,比识字、算术更重要的是这三件事
-
“为了给孩子选择一家合适的幼儿园,我曾穿梭于纽约各家幼儿园的开放日,这些幼儿员既包括主流的公立幼儿园,还包括那些遥不可及的私人幼儿园。我的目的就是想了解他们的教育理念是什么,到底厉害在哪里,看看对于我...
- 参加CSP-J信奥赛需要掌握数学知识
-
在C++语法的学习中需要储备的数学知识如下①数据类型:需要知道整数、正整数、负整数、小数、判断对错②算术运算符:加法、减法、乘法、除法、取模运算③关系表达式:大于、大于等于、小于、小...
- 1g米饭能做多少深蹲?今天我们来算一算
-
减重我们都知道3分在练,7分在吃,吃这件事情上,真的是每一口都算数。今天我们来算一笔账,1粒米饭可以做多少事情?本着认真负责的态度,今天在食物秤上称了1g米饭,是16粒。根据能量换算:100g米饭是4...
- web 自动化测试,一定得掌握的 8 个核心知识点
-
使用cypress进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用JavaScript作为编程语言。传统主流的selenium框架是支持多语言的,大多数QA会的pytho...
- 大话C语言:赋值运算符(c语言中赋值运算符是什么)
-
赋值运算符是最基本的运算符之一,用于将右侧的值或表达式的计算结果赋给左侧的变量。它是一个二元运算符,意味着它需要两个操作数:一个是目标变量(左侧),另一个是要赋给该变量的值或表达式(右侧)。赋值运算符...
- Vue进阶(幺幺伍):js 将字符串转换为boolean
-
Boolean();参数为0、null和无参数返回false,有参数返回true。Boolean("");//输出为:falseBoolean(null);//输出为...
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
-
1).大于,小于,大于或等于,小于或等于$gt:大于$lt:小于$gte:大于或等于$lte:小于或等于例子:db.collection.find({"field":{$gt:valu...
- Python学不会来打我(21)python表达式知识点汇总
-
在Python中,表达式是由变量、运算符、函数调用等组合而成的语句,用于产生值或执行特定操作。以下是对Python中常见表达式的详细讲解:1.1算术表达式涉及数学运算的表达式。例如:a=5b...
- C|数据存储地址与字节偏移、数据索引
-
话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表示位置偏移,异质结构的结构体通过其...
- 下班后累懵?4 个 JS 手写题帮你搞定前端面试高频考点
-
打工人下班后最痛苦的事,莫过于拖着疲惫的身子还要啃前端面试题吧?看着那些密密麻麻的JS代码,脑子都快转不动了!别担心,今天咱就用轻松的方式,带你吃透4道高频手写题,让你在面试时自信满满,再也不...
- 嵌入式数据库sqlite3【进阶篇】-子句和函数的使用,小白一文入门
-
sqlite在《嵌入式数据库sqlite3命令操作基础篇-增删改查,小白一文入门》一文中讲解了如何实现sqlite3的基本操作增删改查,本文介绍一些其他复杂一点的操作。比如where、orderby...
- 前缀表达式与后缀表达式(前缀表达式后缀表达式中缀表达式计算)
-
昨天晚上和儿子一起学习了前缀表达式和后缀表达式。这应该是字符串算式如何被计算机识别并计算的2种方法。本来是想先给他讲一个逆波兰式(后缀表达式),以后再讲前缀表达式。没想到他还挺聪明,很快就把2个都掌握...
- Python快速入门教程1:基本语法、数据类型、运算符、数字字符串
-
Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、运算符、数字和字符串等内容,并附有使用实例场景。Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 选择器 (30)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)