百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、...