【Stable Diffusion - Ai】小白入门必看(想控制AI的绘画结果?ControlNet 预处理篇)!真材实料!不卖课!!!
对于ControlNet来说,很多人都会感觉到陌生;这个插件简单来说就是通过选择不同的ControlNet预处理器结合对应的辅助生成模型,调整额外的控制参数来影响图片生成的输出结果,这些预处理器可以有边缘线稿、人物姿态、脸部特征、分块、局部重绘等等,相比于之前直接用提示词来控制生成图片结果会更加精准和符合你的预期。
1. ControlNet 插件的安装
1.1 安装方式
ControlNet 插件的安装,对于新版本来说,ControlNet 是自带的,无需安装;而对于旧版本来说,可通过 扩展 -> 从网址下载 -> https://github.com/Mikubill/sd-webui-controlnet -> 安装 -> 重启UI;
插件地址: https://github.com/Mikubill/sd-webui-controlnet
1.2 辅助生成模型下载(文章末尾下载)
初始的ControlNet 是缺少辅助生成模型的,可通过在Liblib等国内模型网址上搜索ControlNet 预处理器模型就能找到,并且本地下载速度很快,因为有各种预处理器类型,选择需要的进行下载就行,然后把预处理模型放到 项目存储盘:\sd-webui-aki-v4.9\extensions\sd-webui-controlnet\models中即可,刷新后点击某项预处理器就能在模型框中看到对应的预处理模型了;
1.3 更新方式
对于ControlNet 插件的版本更新,可在整合包主页选择版本管理,就能看见sd-webui-controlnet是否是最新版本,不是最新版本选择更新即可;对于ControlNet v1.0版本如需更新,请把 项目存储盘:\sd-webui-aki-v4.9\extensions\sd-webui-controlnet目录删除后再更新,否则可能会出现版本问题
1.4 如何增加多个ControlNet
对于需要增加多个 ControlNet 控制框,可在设置 -> 左侧下滑找到 ControlNet -> 调整 ControlNet 单元数量 -> 重启UI
2. ControlNet 插件的基本使用
接下来我们详细介绍下方ControlNet 插件中布局按钮的基本使用
2.1 上传图片框
- 图片上传框:上传需要作为参考的原图图片
- 创建画布:会创建一个白色的背景图片,可在下方设置宽高,点击创建新画布就可以在画布中进行涂鸦了,ControlNet会根据涂鸦的图片进行参考,最后辅助图片的生成
- 开启网络摄像头:ControlNet会调用电脑摄像头并实时传输画面,这一操作需要webui程序需要与你摄像头在同一环境下同一台PC主机上,且会操作浏览器授权调用摄像头的权限,点击画面中的拍摄按钮即可固定画面
- 镜像网络摄像头:相当于水平翻转摄像头画面
- 将当前尺寸信息发送到生成设置:相当于获取参考图片的宽高尺寸同步到生成设置中的宽高尺寸,类似于三角尺,这样会比较方便
2.2 功能按钮
- 启用:是否决定启用ControlNet 插件
- 低显存模式:对低显存进行优化,但生成花费的时间比较长
- 完美像素模式:让ControlNet 自行决定预处理图片的分辨率,能得到很好的优化预处理结果(建议勾选)
- 允许预览:点击右侧会出现预览窗口,用于展示预处理后的结果
- 高效子区蒙版:通过勾选高效子区蒙版,用户通过上传蒙版,可以指定画面中的某些区域进行特定的处理或控制,如改变颜色、调整景深、优化细节等,从而提高图像生成的效率和精度。
2.3 预处理器和模型
ControlNet 有两个主要功能,一个是将参考图转换为数据图的预处理;一个是通过模型应用控制的辅助生成或者说控制生成,我们选择某个控制类型后,会显示对应的预处理器和模型;点击爆炸按钮运行预处理,有些预处理会现场下载预处理所需的模型,等待时间比较长,除非科学上网;否则建议直接按上面所说的,把本地下载好的预处理模型放到 项目存储盘:\sd-webui-aki-v4.9\extensions\sd-webui-controlnet\models中,这样速度会快很多
2.3 控制权重和介入值
- 控制权重:ControlNet 对于生成结果的控制强度,这个数值越大,ControlNet的特征就会越明显;
- 引导介入时机:相当于ControlNet 在哪个时机介入到图片的生成当中,如果为0,则一开始就介入,指导引导终止时机
- 引导终止时机:相当于ControlNet 在哪个时间停止介入到图片的生成当中,靠模型默认走完剩下的流程
2.4 控制模式
三种控制模式(对预处理图片无影响,但对辅助生成图片时对图片结果有影响)
我们可以从上述图片中可以看到,三种控制模式的结果都存在一些差别,但效果并不是很明显,所以在使用时可尝试切换不同的控制模式来观察了解
2.4 缩放模式
-
仅调整大小:把图片硬拉成你设置的宽高比例尺寸
-
裁剪后缩放:把图片裁剪成你设置的宽高比例尺寸
-
缩放后填充空白:以图片的最后一个像素为基础填充新尺寸的元素
图生图的缩放模式是针对于webui所上传图片的处理,而画面缩放模式是对于ControlNet 所上传图片的处理,功能都是一样的,只是作用的对象不一样
3. 预处理器各项控制类型的详细介绍
-
Canny (硬边缘)
主要作用是将人物或物体的边缘线提取出来,可以看到Canny边缘检测出来的线条是统一粗细的,跟线稿线条深浅不一有明显区别;Canny边缘预处理器相对于其他类似线条的预处理器自由程度更高一些,主要体现在通过阈值区间获取图片的边缘结构,也就是说想要图片保留的细节多一些我们可以降低一下阈值,图片保留细节少一些可以通过提高阈值实现。
Canny硬边缘预处理器相对于其他边缘预处理器,自由程度会高一些,主要通过控制低阈值和高阈值的区间来筛选图片的边缘结构;想要生成图片跟原图的轮廓大概一致的话可以尝试一下,通过不断的调整阈值区间和权重来达到预想的效果。
-
Depth (深度)
遇到图片结构非常不错,但又想改变其中的内容,有很多小伙伴都会选择图生图调整重绘幅度+提示词来解决,但图生图的弊端就是如果给的重绘幅度太低,图片内容就跟原图没太大区别;如果给的太高,图片结构会发生很大变化;如何解决这一问题,我们可以使用ControlNet 中的Depth 预处理器来处理。
写实模型:林鹤-人像光影摄影极限写实真实感大模型_V2.6.1
正向提示词:snowing,snow,large area of forest,frozen river,masterpiece,best quality,8K,
反向提示词: NSFW,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,worstquality,bad proportions,logo,malformed limbs,cross-eyed,poorly drawn face,deformed,深度图就是通过提取图片中的深度信息,然后生成具有原图同样深度结构的深度图,对比原图和深度图,图片中颜色越浅代表物体与镜头就越近,反之颜色越深则代表物体与镜头就越远;在深度图中,有些预处理器我们会丢失一些细节但会保留图片的大体轮廓,就是由于深度图的这些轮廓我们才能最大程度上保留图片的基础结构,利用深度图这个特点,我们可以去生成与原图相同结构但不同内容的图片,内容的生成还是由提示词来修改决定。下面再来看下选项中常用的四个预处理器有哪些特点和区别:
从上面可以看到depth_leres的预处理器看起来会更加详细,因为它的成像的焦点在中间的景深图层,会有更远的景深,并且中间的物体边缘比较清晰,但是对于近景来说边缘会模糊一些;而depth_leres++在原有的基础上更加强调近景的细节问题,但生成深度图的时间比较长,这两个预处理器对于细节的处理还是比较好的;而depth_midas和depth_zoe更加注重近景,使用时候比较合适较大纵深的场景图,可以更好的表示远近关系,下面再介绍下depth_leres和depth_leres++可以设置的一些参数:
Remove Near % (删除前景)
Remove Background % (删除背景)
都是选择性的去保留图片的一些前景或者背景结构,通过调整两个参数就比较自由的去选择哪部分结构需要哪部分结构不需要了。
-
Inpaint (局部重绘)
ControlNet的Inpaint局部重绘和webui的局部重绘使用方式是一样的,但Inpaint预处理器的使用要更加简单高效,它与webui局部重绘的不同在于:
- 支持弱提示词、无提示词的修复(但对于手指畸形可能还是需要提示词引导)
- 使用方式更加简单高效
- 对于蒙版的涂抹区域要求并不严格
.
下面介绍Inpaint局部重绘中的三个预处理器(在对于生成结果不理想的时候,应加入提示词来引导):
正向提示词:little_boy,hands,v,
反向提示词:malformed hands,poorly drawn hands,mutated hands and fingers,bad hands,missing fingers,fused fingers,too many fingers,mutated hands,- inpaint_only:只会对于蒙版的内容进行重绘,并不会涉及蒙版以外的区域
- inpaint_oly+lama: inpaint_only的改良版本,在进入inpaint_only前会进行lama的一个抹除原图突出的特征,然后再进行生成
- inpaint_global_harmonious:更加侧重蒙版区域的融合,为了融合蒙版区域会改动蒙版区域以外的区域,从生成结果来看,全图的色调发生了改变,比较不确定性。
-
Tile (分块)
ControlNet 中的Tile 模型对于图片的细节是进行重绘而不是增强,它不会在保留原图细节的基础上去对图片进行改动,而是会忽略掉原图细节去生成全新的细节;那么我们在什么情况下会使用Tile 模型呢?对于生成的图片中有些细节不是很令你很满意的话,那么可以尝试使用Tile 模型来对这些细节进行重绘处理;如果生成的图片需要更多的细节我们除了调高重绘幅度外,我们还可以使用Tile 模型,它会根据图块的内容去引导扩散,并不会完全依照全局提示词去引导,减少图片人物结构内容的太大变化。下面我们主要介绍四款预处理器:
-
tile_resample
这个预处理器的功能是通过缩小图片,让原图中的细节因为分辨率的变化而忽略掉,再通过模型在缺失细节的位置上重新进行重绘,这样就会有比较多样的变化了;通过Down Sampling Rate参数我们可以调整缩小的比例,数值越大模糊程度越高。tile+无提示词
tile+原图提示词
通过仔细的观察我们会发现在人物和背景的细节进过缩小模糊后重绘的细节变化还是相对于原图来说是比较多样化的,再对比有无提示词能看到在保持人物画面风格一致性方面,加上原图提示词会更加的完善,而且人物细节会更加合理。
-
tile_colorfix
在tile模型中生成的图片对比与原图来说,画面色调可能或多或少有一些差异,这个现象在写实类人物中不是很明显,但在二次元动画风格中会比较明显,如何解决这种问题呢,我们需要 tile_colorfix 来处理这种情况了。从图看出 tile_resample 生成的图片色调偏淡,而 tile_colorfix 在这一方面得到改善,经过不断调高 Variation,人物色调会慢慢发生改变;建议还是选择数值比较低的进行尝试。
注意:tile_colorfix 还是有瑕疵的,它会对颜色进行锁定,如果你在提示词中引导衣服颜色是红色,但由于 tile_colorfix 的颜色锁定,生成图片的衣服颜色是没有按照提示词引导并体现出来的,尽管把控制模式改为提示词更重要也是如此。 -
tile_colorfix+sharp
对于这个预处理,相当于就是对tile_colorfix 进行改良,而加入sharp主要是锐化,为了解决Tile模型生成图片有可能会出现的模糊问题,这种模糊问题除了通过提示词来引导,还可以使用tile_colorfix+sharp 来进行锐化,而新出现的参数Down Sampling Rate 相当于控制图片锐化程度,数值越小,锐化程度越低;数值越大,锐化程度越大。 -
blur_gaussian
blur_gaussian是一个高斯模糊预处理器,主要作用是向图片添加高斯模糊,而新参数Sigma是用于控制图片的模糊程度,数值越小,预处理后的图片模糊程度越低,反之越大模糊程度越高,而生成的模糊图片分辨率也会发生变化;这样生成的图片有什么区别呢,图片会带有景深效果,需要景深的效果的可以尝试一下。
-
-
Lineart (线稿)
Lineart 预处理器主要功能是把图片转换为线稿,在通过转换后的线稿图对生成图片进行控制,通过线稿生成的图片与原图最大的差别是配色色调方面的,如果你对图片的线稿结果满意,但对其配色有要求,可以尝试使用Lineart 预处理器。
-
lineart_anime(适用于动漫图片处理)
优点:更擅长处理浅色图片,因为浅色图片没有太多的噪声,能够比较完整的保留图片的线稿和一些细节。
缺点:并不能很好的处理图片中的深色区域,会将深色区域识别为线稿,以噪声的形式存在。 -
lineart_anime_donoise(适用于动漫图片处理)
优点:更擅长处理深色图片,通过去噪保留正确的线稿部分。
缺点:由于存在去噪处理,对于细节部分的处理,会过多的消除线稿。 -
lineart_coarse(适用于近景图片,不适合远景)
优点:能够把近景图片转换为简单的素描线稿,比如人物肖像、静态图。
缺点:对于远景细节较多线条复杂的场景可能会导致线条杂乱,最终生成的图片可能会不太合理。近景:
远景:
-
lineart_realistic(适用于写实类,但对于一些复杂的动漫类效果往往比其他会好很多)
优点:能够最大程度保留原图的特征以及细节,比其他三个预处理器保留的细节更好,在处理复杂场景图片时,细节相对于其他预处理器会丰富很多。
缺点:捕捉的细节可能太多,无法消除一些不必要的细节,从而影响到图片最终的生成效果。 -
lineart_standard(适用于纯线稿的图片,类似于白底黑线,而不是正常图片,该预处理器会把纯线稿的图片转换成上述那种黑底白线,方便控制模型识别和使用)
-
-
SoftEdge (软边缘)
SoftEdge 软边缘处理器主要特点就是边缘柔和,对于处理毛发上会比硬边缘处理器更有优势,且该预处理类别中有四个可以直接使用的预处理器:
-
softedge_hed / softedge_hedsafe
优点:保留原图中更多的细节,细节比较丰富,而且图片中有些背景线条也会保留,图片整体的完整性更好。
缺点:对于物体内部线条的准确度稍差,会在刻画内部线条时出现一些与原图不一致不合理的地方。
区别:softedge_hedsafe 相当于在原有基础上,像硬边缘一样删除了固定数值的前后背景,避免其影响ControlNet 的生成结果,所以当前后景出现过多细节时,可以使用safe版本降低细节影响。 -
softedge_pidinet / softedge_pidisafe
优点:能够较为合理的保留图片中的主体内容,会忽略一些不必要的细节,在内部细节准确度上比较好,会更符合原图的线条刻画。
缺点:保留的细节较少
区别:softedge_pidisafe 相当于在原有基础上,像硬边缘一样删除了固定数值的前后背景,避免其影响ControlNet 的生成结果,所以当前后景出现过多细节时,可以使用safe版本降低细节影响。
-
-
Scribble (涂鸦)
Scribble 预处理器对图片的包容性很好,无论是绘画质量差的素描涂鸦,我们都可以通过涂鸦预处理器+提示词来生成质量比较高的图片内容;跟之前的预处理器一样,点击爆炸按钮可以把原图用较粗的线条转换为模型所能识别和使用的样子,下面我们再看看常用的三个预处理器:
画面质量低 -> 画面质量较高:
提示词:mouse,
-
scribble_hed / scribble_pidinet
跟软边缘预处理器一样的,scribble_hed 捕捉的细节比较多,但是由于涂鸦预处理器的线条比较粗,过多的细节对于模型最后生成的结果来说可能不是一件好事;scribble_pidinet 同样是保留主体结构,让画面结构更加合理。 -
scribble_xdog
scribble_xdog 对于前两个预处理器生成的线条精度更高,而新参数XDoG Threshold 的一个阈值可以控制图片的精细程度;这个数值越小精度越高,数值越大精度就越低,默认建议值:32,比较适合处理较为复杂细节的图片,且自由可控性更好。
-
-
Shuffle (随机洗牌)
Shuffle 预处理器的主要功能是打乱图片中的内容,但是色彩会被保留下来,可以利用这个特点去生成一些与原图风格色调相近的图片,但不建议单独使用,因为该处理器还在实验测试阶段,生成的图片结构很不理想,需要搭配其他预处理器进行组合使用,但最后的结果也是需要抽卡来挑选合适的图片;
-
Reference (参考)
Reference 也是个风格迁移预处理器,但对比于Shuffle 迁移的东西更多,无论是图片的颜色色调还是参考图中的特征,迁移的结果会比Shuffle 更好一些;而且对于最后结果的稳定性上会更优于Shuffle ,减少图片崩坏和不合理的概率,而且操作也是十分简单,因为该预处理器使用的是算法,所以就不需要辅助模型参与完整的生成。
-
reference_only
该类型效果整体偏向ControlNet的参考图,对比于另外两个预处理器稳定性会更好一些,而且在风格差异化上,可以接受较大的变化。 -
reference_adain
该类型效果整体偏向于大模型生成的结果,以大模型为主,ControlNet 参考图为辅,将参考图风格迁移过来的预处理器,生成的结果与参考图有较大改变。 -
reference_adain+attn
该类型效果最为接近参考图,整合了上述两个预处理器的算法,在理论生成效果上最佳,但由于比较强大的算法和比较贴合参考图,就会不利于产生更多的变化。
该预处理器有个新的参数叫做 Style Fidelity (only for Balanced mode) 风格保真度(仅适用于控制模式为:均衡)控制迁移参考图风格的强度,数值越大参考图的风格越明显,但从实际生成结果来看 0.25 - 0.5 的值是比较符合参考图的,而太低或太高都有可能导致人物结构发生改变。
-
-
Recolor (重上色)
Recolor 预处理器的主要逻辑就是把参考图转换为黑白颜色的图片,然后再把黑白图通过辅助模型上色,下面再来介绍一下这两个预处理器的区别:
-
recolor_luminance / recolor_intensity
仔细发现我们可以看出两个预处理器会有一些差异,造成这种差异的原因是 recolor_intensity 注重于色彩饱和度,而recolor_luminance 注重于亮度,在个人的测试结果中recolor_luminance 可能会比recolor_intensity 更好一些,因为recolor_luminance 对于细节的保留程度比较高。
-
Gamma Correction参数代表着伽马校正度/灰度校正度,可以根据预处理后的图片调整生成图片的光暗程度(如果图片色调发生改变,可加入参考图提示词引导)
recolor_luminance
recolor_intensity
-
-
Segmentation (语义分割)
Segmentation 语义分割预处理器是以参考图中的物体为识别单位,然后对各单位进行分割,它会用遮罩形式和颜色来表达形状、位置和物体语义,而这种跟线稿预处理器有何不同呢,线稿预处理器相当于对物体进行素描重绘上色,对于画面细节无法指定性的进行太大改变;而语义分割针对的是物体为单位,人物是人物,背景是背景,可指定对某色块进行替换,再通过提示词进行引导生成需要的图片内容。
而针对于下面三个预处理器的区别:
-
seg_ofade20k
语义识别准确度是三个预处理器模型中最高的,能够识别150种物体(推荐) -
seg_ofcoco
语义识别出来的内容完整性最好,但会忽略一些细节问题,能够识别132种物体 -
seg_ufade20k
语义识别准确度偏差,分割完整性比较差,能够识别150种物体(不推荐)
如何使用:
我们把参考图上传后选择语义分割预处理器,把分割后的图片在PS等图片编辑软件中去根据下列表格中的语义物体的颜色进行油漆桶工具替换,图片中分割的每个色块代表着某种语义;把替换好的图片重新放入到参考图中,然后把预处理器设置为:无/none,因为我们已经预处理过了就无需使用预处理器再进行转换了;再把全部色块对应的提示词写上,如果只写一个的话,其他色块的语义有可能会跟原图不一致。
ade20k颜色对照表:ade20k颜色对照表.pdf - B站UP 橘夜唯晴 制作分享
coco颜色对照表:coco颜色对照表.pdf - B站UP 橘夜唯晴 制作分享-
按表格替换好颜色(把沙滩变成草地)+ 按表格填写对应提示词:
提示词:grass,sea,water,mount,sky,tree,person,bright weather,
-
按表格替换好颜色(把沙滩变成草地)+ 但只写替换的那个提示词:
提示词:grass,
-
-
OpenPose (姿态)
在AI绘图中,通过提示词去引导人物的姿态动作是比较不确定性的事情,有可能会通过不断的抽卡才能得到自己需要的人物姿态图,这样费时费力;那么通过ControlNet 的OpenPose 预处理器,我们可以将参考图的人物转换为一张骨骼图,使用骨骼图去引导图片的生成比提示词准确太多了。该类型有六个预处理器:
·
如何获得动作姿态骨骼图呢,除了我们自己拍摄图片上传生成外,还可以使用原有内嵌插件的编辑功能,对原有骨骼图的点位进行修改,或选择下载我分享的这份姿态写实大全,利用参考图去生成:姿态写实图集+骨骼图大全:点击下载
但上述修改骨骼图的是2D方法,如果需要姿态比较多元化的话可以尝试使用3D方法,在扩展 -> 可下载 -> 加载扩展列表(https://extension-list.oystermercury.top/automatic.json) -> 搜索 3D Openpose Editor -> 重启项目;我们就可以看到选项卡中有个3D 骨骼模型编辑(3D Openpose),可以在其中把编辑好的骨骼图下载保存并作为OpenPose (姿态)的参考图来使用。
使用骨骼图来固定姿势动作:
-
NormalMap (法线贴图)
NormalMap 法线贴图预处理器简单来说就是个凹凸模具,它是通过预处理器后的凹凸程度去展现图片的内容;而法线图对于近景中人物的细节保留的比较丰富,对于远景的细节比较模糊忽略,而该normal_midas 预处理器是旧版本的预处理器,法线图生成的结果与原图差异比较大,还是推荐使用normal_bae 预处理器。
-
MLSD (直线)
相比于其他预处理器,MLSD 预处理器更适合用于室内设计或者对于建筑设计规划等较为有规则的使用场景,可以用简单的直线结构图去通过AI绘图生成相应的规划概念图。
下面介绍下该预处理器下的两个参数:
-
MLSD Value Threshold
MLSD 预处理器在生成每条直线时都会给直线评分,质量越高评分越高,反之质量越低评分越低,而该参数是用于屏蔽低质量直线的一个参数,在较低阈值下可能会出现直线重叠,调整阈值可消除该情况,且实际情况下该阈值为 1 时,图片就不会存在任何线条了。 -
MLSD Distance Threshold
该参数为距离阈值,主要消除图片中的短线条,数值越大消除的线段也就越长,适用于预处理图片中存在较多零散的线条时,可调高参数消除零散线条。
-
对于ControlNet 预处理篇多种预处理器类型做了详细介绍,当然这些还不是全部,有些预处理器类型大家可以多尝试下,特别对于每个预处理器之间的区别,携带的参数作用,如果有哪些预处理器模型有疑问的都可以在末尾链接中去查看,那么本篇ControlNet 预处理篇介绍完成,有疑问的小伙伴们可以评论留言。
sd-webui-aki启动器和所需环境下载:
https://pan.quark.cn/s/2c832199b09b#/list/share/1d7c0615a2de45b7961768446e82034c-sd101webui101aki
SD推理模型分享:https://pan.quark.cn/s/d523667b73bb#/list/share/11720a23c0ea417e96bf92456110cd80-SD%E6%A8%A1%E5%9E%8B%E6%95%B4%E7%90%86
ControlNet 预处理器 + 全辅助模型下载:
https://pan.baidu.com/s/1qEEPnGnki1mj8nQIyU8F5g?pwd=msi3#list/path=%2F
https://pan.baidu.com/s/1XAitik47Fn5sDQoVH9qRcA?pwd=qat6#list/path=%2F
大模型、Lora模型和预处理器模型下载:
Liblib.Art:Liblib.Art 官网
Tusi.Art:Tusi.Art 官网
【Stable Diffusion - Ai】系列:
小白入门必看(前期准备篇) !真材实料!不卖课!!!
小白入门必看(图生图篇)!真材实料!不卖课!!!
小白入门必看(涂鸦、涂鸦重绘、局部重绘和重绘蒙版篇)!真材实料!不卖课!!!
小白入门必看(想控制AI的绘画结果?ControlNet 预处理篇)!真材实料!不卖课!!!