哈喽这里是海绵
目录
一、前言
二、ControlNet模型概况
三、边缘检测Canny
四、直线检测MLSD
五、深度检测Depth
六、法线贴图检测NormalBae
1
引言
在上一期的内容中,我详细介绍了ControlNet的安装和使用方法。
传送门:面向小白的ControlNet全面教学!如何安装和使用ControlNet?
这一期,我将详细介绍各个ControlNet模型作用、使用方法以及各参数的意义。这里边一定有很多你还不了解的东西,所以一定要看到最后哦!
由于内容较多,将会分两期进行讲解。
2
ControlNet模型概况
当你看到ControlNet模型长长的文件名时,可能会有些困惑。然而,这些命名实际上遵循严格的规则,并且每个字母和数字都有其特定含义。
从 ControlNet 1.1 版本开始,启用了新的命名规则,你可以从模型的文件名获得模型的一些关键信息。其中“控制方法”是区分不同模型的关键,因此,如果要找到目标的模型,主要看“控制方法”即可。
ControlNet 1.1 包括了14个模型(其中11个成品模型,和3个处于测试阶段的模型):
control_v11p_sd15_canny(边缘检测)
control_v11p_sd15_mlsd(直线线条检测)
control_v11f1p_sd15_depth(深度检测)
control_v11p_sd15_normalbae(法线贴图检测)
control_v11p_sd15_seg(语义分割)
control_v11p_sd15_inpaint(重绘)
control_v11p_sd15_lineart(线稿检测)
control_v11p_sd15s2_lineart_anime(动漫线稿检测)
control_v11p_sd15_openpose(人物姿势检测)
control_v11p_sd15_scribble(涂鸦)
control_v11p_sd15_softedge(软边缘检测)
control_v11e_sd15_shuffle(随机洗牌)
control_v11e_sd15_ip2p(自适应)
control_v11f1e_sd15_tile(分块重采样)
下面将分别进行介绍。
3
边缘检测模型canny
图像的边缘检测是一种计算机视觉技术,用于在图像中识别和定位物体的边界。边缘是图像中亮度或颜色发生显著变化的区域,通常表示物体之间的边界。我们之所以能够识别各种各样的物品也正是由于它们有清晰的轮廓,即所谓的边缘。
在正式开始之前,有必要简单介绍一下canny算法是如何界定边缘的,这对于更好理解canny的设置参数很有帮助。
在Canny算法中,首先通过计算图像的梯度来获得梯度幅值和方向信息。然后,低阈值和高阈值用于确定哪些边缘像素点被认为是强边缘和弱边缘。
**强边缘:**梯度幅值高于高阈值的像素点被标记为强边缘。
**弱边缘:**梯度幅值介于低阈值和高阈值之间的像素点被标记为弱边缘。
**非边缘:**梯度幅值低于低阈值的像素点被标记为非边缘。
接下来这些强边缘像素点和弱边缘像素点进行连接,形成完整的边缘。
低阈值和高阈值在Canny算法中起到不同的作用:低阈值用于确定弱边缘的范围,高阈值用于确定强边缘的范围。两个阈值的选择要基于实际应用的需求和图像特征来确定。
举个例子,如果将低阈值设置为100,高阈值设置为200,则梯度幅值在100到200之间的像素点将被标记为弱边缘,梯度幅值大于200的像素点将被标记为强边缘。在边缘连接过程中,强边缘像素点与其周围的弱边缘像素点会被连接起来,形成完整的边缘。
因此,低阈值和高阈值在Canny算法中作用互补,它们共同参与形成最终的边缘检测结果。
1)预处理选择
control_v11p_sd15_canny(边缘检测)模型需要配合 canny(边缘检测)预处理器一起使用。其它所有模型的情况差不多,都需要找名字相同的预处理器和模型搭配使用。如下图:
2)生成效果示例
提示词:raw photo, 1girl, beautiful, detailed clear eyes, (light red:0.6) lips, pink hair, pink dress, collarbone, highly detailed, sharp focus, (high contrast:1.2)
反向提示词:deformed, distorted
3)其它参数设置
**控制权重(Control Weight):**控制ControlNet模型的权重。控制权重越高,ControlNet提供的控制效果越强,控制权重越低,提示词(prompt)的效果越明显。默认权重为1,适当调整权重可以获得更满意的结果。
引导介入步数(Starting Control Step):“引导介入位置”这个翻译我觉得更为合适,因为这是控制ControlNet从第几步开始引导模型生成图片的参数。有点绕,举个例子就明白了。比如说设置迭代步数为20步,引导介入步数为0.2,那么ControlNet将在第4(20*0.2=4)步开始引导 stable diffusion 生成图片,而迭代的前3步都没有 ControlNet 的参与。数值越大,ControlNet的效果将越弱,而提示词的效果将越强,但数值不宜过大,否则无法生成正常的图片。
**引导结束步数(Ending Control Step):**与引导介入步数相反,这是控制ControlNet从第几步结束引导模型生成图片的参数。与引导开始步数不同,引导结束步数需要有较大的变动才会对图片产生较为明显的影响。这是因为 stable diffusion 迭代的的前几步对图像的整体构图的影响是最大的,而后面迭代步数只会改变一些细节,这就是为什么引导介入步数的设置不能太激进,而引导结束步数却需要大幅调整数值才有效果。
这里有个小技巧,提高引导开始步数或者降低引导结束步数都能够加快生成速度。
适当降低引导结束步数可以使得ControlNet与prompt的更好融合,生成质量更佳的图片。如图,当引导结束步数设置为0.2时,给人物的衣服增添了许多细节,与此同时还很好地保留了参考图的构图。
**预处理器分辨率(Preprocessor Resolution):**控制预处理器输出图片的分辨率。建议与参考图的分辨率一致。原图的分辨率为512x512,选择不同分辨率的预处理器处理。下图中的图片为方便对比进行了缩放,分辨率实际分别为256x256,512x512和768x768。。勾选完美像素模式(Pixel Perfect)后则无需设置此选项,插件会自动帮你选择最优的分辨率。
可以看出,图片分辨率与原图的分辨率一致时,生成的预处理图最细致。当然你也可以尝试更改分辨率来减少细节,从而让模型有更大的发挥空间。
**边缘低阈值(Canny Low Threshold):**Canny边缘检测算法的工作原理是通过对图像中的梯度进行分析来识别边缘。在边缘检测的过程中,像素的梯度强度被用来衡量该像素是否属于边缘。而Canny算法中的阈值则用于控制哪些边缘被认为是有效的。边缘低阈值是一个较低的阈值,用于过滤掉梯度强度低于该阈值的像素点。这些像素点通常对应于边缘比较弱或者噪声的区域。通过设置适当的低阈值,我们可以排除一些较弱的边缘,从而减少噪声对最终结果的影响
换句话说某些边缘的反差可能没那么明显,那么可以通过提高边缘低阈值来过滤掉这种不清晰的边缘,起到减少干扰的作用。数值越低,过滤的线条越少,能检测到的线条越多,反之亦然。需要注意的是,低阈值不宜设置过低,否则会把很多无意义的线条也检测出来,対生成结果产生影响。另外,相对少的线条更能释放模型的创造力,因此可以适当提高边缘低阈值。
**边缘高阈值(Canny High Threshold):**此参数用于标记梯度强度高于该阈值的像素点为强边缘点。这些强边缘点通常对应于图像中边缘比较明显的区域。高阈值能够帮助我们保留那些具有较强梯度强度的像素,这些像素很可能是真实的边缘。也就是说设置更高的边缘高阈值能够过滤掉一些反差相对弱的边缘,因此其数值越高,能检测的线条越少,反之则越高。同样的,此值设置也不宜设置过低,否则容易导致产生的干扰过大。
**控制模式(Control Mode):**有三个模式可供选择,分别为均衡、更注重提示词、更注重ControlNet。输入的参考图和提示词与“(2 生成效果示例”小节的内容完全相同,生成效果如下图,单从下图可以看第三种模式的生成效果会更好,原因是其质感更佳。但是需要注意的是,这并不意味着第三种模式就是最优的选择,在实际操作过程中,应该根据不同的模型、不同的提示词和不同的参数设置而进行实验,再选择该条件下相对理想的数值。
**缩放模式(Resize Mode):**当最终的生成图片和参考图片的分辨率不一致时,此选项才会其作用。例如参考图分辨率为512x512,而生成的图片分辨率却是512x768。下面是针对缩放模式选择不同设置的效果。可以看到“直接调整大小(Just Resize)”的设置是效果最差的,而“比例裁切后缩放(Crop and Resize)”效果最佳,“缩放后填充空白(Resize and Fill)”如果填充得当效果还是可以的,但往往填充得不太好,比如下图中手臂画得就很有缺陷。因此,第二种方法,即“比例裁切后缩放”是比较通常的选择。
4
直线检测MLSD
图像的直线线条检测是指在图像中识别和提取直线特征的方法。直线线条指的是图像中具有连续性和直线性质的像素点集合,通常表示物体的边界、线性结构或几何特征。此种方法比较适合用来检测具有直线特征的图片,比如建筑、地平线和道路等等。
MLSD预处理器可以自动检测参考图中的直线元素并生成一张只由直线构成的黑白图。
1)预处理器选择
control_v11p_sd15_mlsd(直线线条检测)模型需要配合mlsd预处理器一起使用。如下图:
2)生成效果示例
提示词:Interior design, 3D render,luxury, hall, highly detailed, sharp focus, (high contrast:1.2)
反向提示词:2D,flat
3)其它参数设置
相同的参数这里不再赘述,下面介绍这个模型独有的设置。
**MLSD值阈值(MLSD Value Threshold):**此参数用于控制检测到的线段的强度或显著性的阈值。使用MSLD检测的每条直线都有其对应的显著性数值,因此可以设置一个阈值,将显著性不强的线条过滤掉。数值越大,过滤的直线越多,因此检测到的直线越少,反之亦然。简单来说这个设置可以过滤掉那些不那么像直线的线条,而仅保留最直的直线。如果需要更多保留参考图的布局则将此数值调低,让模型有更多自由发挥的空间则将此值适当调高。
**MLSD长度阈值(MLSD Distance Threshold):**此参数用于过滤掉长度过短的直线。我们都知道,使用MSLD可以获得图像中的直线线段。然而,有些直线可能非常短小,对于布局的理解和分析可能没有太大帮助,甚至可能造成视觉上的干扰。因此,使用MLSD长度阈值可以选择性地去除这些过短的直线。通过调整该参数的数值大小,可以控制要去除的直线长度的阈值。较大的数值将去除更长的直线,从而过滤掉更多的直线。这一操作有助于减少短直线的干扰,同时保留主要的布局线条。
调整MLSD长度阈值的数值大小是一个权衡的过程。较小的阈值会保留更多的直线线段,但可能包括一些长度非常短的直线,导致结果不够清晰。较大的阈值则会过滤掉更多的直线线段,可能会损失一些细节信息。因此,根据具体应用的需求,选择适当的MLSD长度阈值可以实现对直线线段的有效过滤。
5
深度检测depth
图像的深度检测,是指通过计算机视觉技术来获取图像中物体或场景的三维深度信息。它模拟了人类双眼视觉的原理,通过分析图像中的视差或视差图,从而推断出物体距离相机的远近。
深度检测的目标是为每个像素提供相对于相机的距离或深度值。这对于理解场景的三维结构、实现立体重建、物体距离估计等任务非常重要。
深度检测处理后的图片是一张具有灰度的黑白图片,颜色越深表示距离相机越远,反之则越近。因此,黑色部分距离相机最远,白色部分则是最近的。
1)预处理器选择
深度图的预处理器有四种方式可供选择:LeReS深度图估算(Depth_leres),LeReS深度图估算++(Depth_leres++),MiDaS深度估算(Depth_midas)以及ZoE深度估算(Depth_midas)。每种预处理器都需要额外下载对应的预处理器模型,其中ZoE深度估算预处理模型大小与ControlNet模型相当,约1.3G,其它模型大小约为几百M,因此下载所有预处理器模型需要一定的时间。
每种预处理器的生成效果都不尽相同,下面来看看具体的区别,输入上面穿着蓝色裙子女子的图片。默认参数条件下,生成效果如下:
就图像的干净程度来看,MiDaS深度估算的预处理器生成的图片最干净,人物与背景的分离也更明显。因此,当你希望尽可能将主体与背景进行分离的时候选择这种预处理器。
就图片信息的保留程度来看,LeReS深度估算++处理后的图片细节最丰富,人物衣服和背景的草都还可以辨认。因此,当你希望尽可能保留图片信息的时候则可以使用这种预处理器。
就模型的大小来看,ZoE深度估算模型的参数量是最大的,因此对于处理复杂场景的效果最好,只是从上图结果很难看出。因此,遇事不决,ZoE就行了。
就最终生成图片的变化程度来看,LeReS深度估算生成的图片,经过ControlNet + stable diffusion 模型处理后生成结果与原图的差距会更大,可以从第2节的示例中看到,LeReS深度估算生成的图片背景与原图完全不同。因此,当你希望大幅改变原图内容的时候就可以选择LeReS深度估算这种方法。
2)生成结果示例
提示词:raw photo, 1girl, beautiful, detailed eyes, pink hair, pink dress, collarbone, highly detailed, sharp focus, high contrast
反向提示词:deformed, distorted
正如上面提到的,LeReS深度估算生成的图片相比于参考图的改变是最大的,背景中的草地直接被变成了床。当然,这也可能是模型本身的偏好,但起码说明LeReS深度估算对于背景信息的保留是很少的。
LeReS深度估算++对深度信息的大幅度保留也在最终生成的图片中得到了验证,因为背景中的草地清晰可见。
MiDaS和ZoE则可以获得很强的景深效果,即背景与主体分离得很开,主体很清晰,背景则非常模糊。
3)其它参数设置
相同的参数这里不再赘述,只讲深度检测独特的两个参数:近景移除(Remove Near)和背景移除(Remove Background),只有LeReS和LeReS++才有这两个参数。
**近景移除:**近景移除是指通过调整参数来移除图像中距离摄像机较近的内容。随着参数数值的增加,深度图像中较近物体的像素值会逐渐变为白色,并且会丢失近景物体的细节。这个功能的作用是消除图像中一些近景物体的信息,以便让SD模型更加自由地进行创作。比如下图中,当近景移除数值达到20%时,主体细节已经基本消失。对应的最终生成图片,人物主体的变化相对较大,而背景的变化则相对要小一些,只不过是颜色有些不同。
**背景移除:**背景移除与近景移除类似,不同之处在于它移除的是距离摄像机较远的画面内容,即图像中的黑色部分。通过增加背景移除参数的数值,可以完全去除图像的背景信息,只保留主体的轮廓。这样可以彻底改变参考图的背景,为生成图像提供更大的自由度。比如下图中,当背景移除达到80%时,背景信息已经基本消失。而对应的最终生成图片,人物主体的变化较小,而背景变化极大。
6
法线贴图检测NormalBae
Normal Maps(法线贴图)是一种常用的纹理贴图技术,用于增强表面细节和几何细节的渲染效果。它通过在纹理图像的每个像素上存储表面法线信息,从而模拟出光照和阴影对物体表面产生的微小凹凸效果,了解3D建模的小伙伴对此应该不陌生。
法线即垂直与某一平面的一条线。**在法线贴图中,每个像素的RGB值被用来表示表面的法线方向。**法线是垂直于表面的向量,用于指示表面在该点的方向和倾斜度。通过使用法线贴图,渲染引擎可以在每个像素上计算出该点的法线向量,并结合光照计算来产生更真实的光照效果。
通过使用法线贴图,我们可以让SD模型更准确地模拟物体表面的凹凸细节和光照效果。法线贴图提供了关于物体表面法线方向的信息,帮助SD模型生成更真实的光影效果。例如,当光线照射到一个凹陷的表面时,法线贴图可以指示SD模型在该区域生成阴影效果,使其看起来更加逼真。
简单来说,通过检测获得的法线贴图可以帮助我们了解图片中物体表面的朝向,并将其用于指导SD模型生成更好的光影效果。不止于此,法线贴图还可以复制图片元素的布局以及人物姿势等等。
在法线贴图中,不同的颜色表示不同方向的表面。例如,绿色表示一个方向的表面,红色表示另一个方向的表面,蓝色表示另一个方向的表面,而事实上这三种颜色标识的表面是相互垂直的。结合上面的图像,我们可以观察到红、绿、蓝三个颜色标识的表面确实刚好垂直。
1)预处理器选择
法线贴图的预处理器有两种:Bae 和 MiDaS
在上面的深度预处理中也有一个MiDaS,那么这里的MiDaS与深度图估算中的MiDaS是不是有什么关系呢?答案是有的。MiDaS法线贴图提取有赖于MiDaS深度估算,从深度估算结果中经过进一步处理获得法线贴图。
1)生成效果示例
提示词:1girl, young, stunningly beautiful, detailed clear eyes, dress, indoors, palace, highly detailed, sharp focus, cinematic lighting, high contrast
反向提示词:distorted, deformed, ugly, low contrast, asymetric eyes, monochrome
Bae的生成效果非常理想,基本保留了人物的光影效果和姿势。
而MiDaS的生成效果则相对抽象,自动识别了很多奇怪的线条。不过也可以发现,MiDaS能将主体很好的从背景中分离出来,这是它的优势。不过,话又说回来,如果要将主体从背景中分离出来,深度(depth)检测效果会更好一些。
关于AI绘画技术储备
学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助!
感兴趣的小伙伴,赠送全套AIGC学习资料和安装工具,包含AI绘画、AI人工智能等前沿科技教程,模型插件,具体看下方。
需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
一、AIGC所有方向的学习路线
AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、AIGC必备工具
工具都帮大家整理好了,安装就可直接上手!
三、最新AIGC学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
这份完整版的学习资料已经打包好了,朋友们如果需要可以点击下方CSDN官方认证卡片微信扫描二维码免费领取【保证100%免费】