探索AIGC领域的体验设计师
在上一篇里我已经为大家介绍了关于ControlNet的基本功能、安装和使用技巧,相信大家对这款神级插件已经有了基本认识,今天我会为大家更详细的介绍14种官方控图模型的差异和使用技巧,以及最近刚面向SDXL更新的社区模型。
前文我们提到 ControlNet 模型是由张吕敏开源的,目前开源的模型包括以下这 14 种,作为 ControlNet 的布道者,我们可以将这些称之为经典的官方模型。
这类社区模型虽然没有完全遵照官方模型的命名规则,但也能从名称上看出模型的类型,比如xl
表示是针对SDXL
使用的模型,sai
表示 StabilityAI 开发的模型,其中也有一些无需 ControlNet 模型也能使用,比如revision (SDXL)
和reference (SDXL)
。
我们先来了解下最基础的官方模型,最早时候开源的模型只有depth
、hed
、normal
、scribble
、seg
、openpose
、mlsd
、canny
这 8 种,随着这半年的迭代已经更新到 14 种之多。每种模型都有各自的特点,对新手来说想每个都完全记住实在有点困难,因此这里我按照模型的控图方向分为 4 种类型,分别是轮廓类、景深类、对象类和重绘类。
在下面的内容中我会为大家仔细介绍每种 ControlNet 的特点和差异,并配上展示效果图,但案例样本较少所以并不能排除绘图模型本身的影响,大家重点学习模型的控图特点和使用场景即可。
顾名思义,轮廓类指的是通过元素轮廓来限制画面内容,轮廓类模型有Canny 硬边缘
、MLSD 直线
、Lineart 真实线稿
、Lineart_anime 动漫线稿
、SoftEdge 软边缘
、Segmentation 语义分割
、Shuffle 随机洗牌
这7种,且每种模型都配有相应的预处理器,由于算法和版本差异,同一模型可能提供多种预处理器供用户自行选择。
我们先来看看第一种控制类型:Canny 硬边缘,它的使用范围很广,被作者誉为最重要的(也许是最常用的)ControlNet 之一,该模型源自图像处理领域的边缘检测算法,可以识别并提取图像中的边缘特征并输送到新的图像中。
Canny 中只包含了canny(硬边缘检测)
这一种预处理器。下图中我们可以看到,canny
可以准确提取出画面中元素边缘的线稿,即使配合不同的主模型进行绘图都可以精准还原画面中的内容布局。
canny(硬边缘检测)
还有invert(白底黑线反色)
的预处理器选项,它的功能并非是提取图像的空间特征,而是将线稿进行颜色反转。我们通过 Canny 等线稿类的预处理器提取得到的预览图都是黑底白线,但大部分的传统线稿都是白底黑线,为方便使用,很多时候我们需要将两者进行颜色转换,传统做法都是导出到 PS 等工具进行额外处理,非常繁琐。而 ControlNet 中贴心的内置了颜色反转的预处理功能,可以轻松实现将手绘线稿转换成模型可识别的预处理线稿图。
invert
的功能,我们就知道该预处理器并非 Canny 独有,而是可以配合大部分线稿模型使用。在最新版的 ControlNet 中,当我们选择 MLSD 直线、Lineart 线稿等控制类型时,预处理器中都能看到它的身影,后续就不挨个赘述了。
canny(硬边缘检测)
时,下方会增加Canny low threshold 低阈值
和 Canny high threshold 高阈值
2 项参数。
以下面这张图为例,预处理过程中检测到 3 条边缘线,其中 D 点位于非边缘区域,因此直接被排除,而 A 点位于强边缘区域被保留。虽然 B、C 点都位于弱边缘区域,但由于 B 点和 A 点是直接相连的,因此 B 点也被保留,而与 C 点相连的线全都位于弱边缘区域所以被排除。由此得到画面中最终被保留的边缘线只有 AB 这条线。
下图中我们可以看到不同密度的预处理线稿图对绘图结果的影响,密度过高会导致绘图结果中出现分割零碎的斑块,但如果密度太低又会造成控图效果不够准确,因此我们需要调节阈值参数来达到比较合适的线稿控制范围。
mlsd(M-LSD直线线条检测)
预处理后只会保留画面中的直线特征,而忽略曲线特征。
MLSD Value Threshold 强度阈值
和MLSD Distance Threshold 长度阈值
。MLSD 阈值控制的是 2 个不同方向的参数:强度和长度,它们的数值范围都是 0~20 之间。
Value 强度阈值用于筛选线稿的直线强度,简单来说就是过滤掉其他没那么直的线条,只保留最直的线条。通过下面的图我们可以看到随着 Value 阈值的增大,被过滤掉的线条也就越多,最终图像中的线稿逐渐减少。
Lineart 同样也是对图像边缘线稿的提取,但它的使用场景会更加细分,包括Realistic真实系和Anime动漫系 2 个方向。
在 ControlNet 插件中,将lineart
和lineart_anime
2 种控图模型都放在【Lineart(线稿)】控制类型下,分别用于写实类和动漫类图像绘制,配套的预处理器也有 5 个之多,其中带有anime
字段的预处理器用于动漫类图像特征提取,其他的则是用于写实图像。
下图中为大家展示了不同预处理器对写实类照片上的处理效果,可以发现后面 3 种针对真实系图片使用的预处理器coarse
、realistic
、standard
提取的线稿更为还原,在检测时会保留较多的边缘细节,因此控图效果会更加显著,而anime
、anime_denoise
这 2 种动漫类则相对比较随机。具体效果在不同场景下各有优劣,大家酌情选择使用。
lineart
和lineart_anime
模型进行绘制,可以发现lineart_anime
模型在参与绘制时会有更加明显的轮廓线,这种处理方式在二次元动漫中非常常见,传统手绘中描边可以有效增强画面内容的边界感,对色彩完成度的要求不高,因此轮廓描边可以替代很多需要色彩来表现的内容,并逐渐演变为动漫的特定风格。可以看出lineart_anime
相比lineart
确实更适合在绘制动漫系图像时使用。
HED
、HEDSafe
、PiDiNet
和PiDiNetSafe
。
在官方介绍的性能对比中,模型稳定性排名为PiDiNetSafe
> HEDSafe
> PiDiNet
> HED
,而最高结果质量排名HED
> PiDiNet
> HEDSafe
> PiDiNetSafe
,综合考虑后PiDiNet
被设置为默认预处理器,可以保证在大多数情况下都能表现良好。在下图中我们可以看到 4 种预处理器的实际检测图对比。
PiDiNet
即可。
HED
、PiDiNet
和XDoG
。通过下图我们可以看到不同 Scribble 预处理器的图像效果,由于HED
和PiDiNet
是神经网络算法,而XDoG
是经典算法,因此前两者检测得到的轮廓线更粗,更符合涂鸦的手绘效果。
Segmentation 的完整名称是 Semantic Segmentation 语义分割,很多时候简称为 Seg。和以上其他线稿类控制类型不同,它可以在检测内容轮廓的同时将画面划分为不同区块,并对区块赋予语义标注,从而实现更加精准的控图效果。
OneFormer ADE20k
、 OneFormer COCO
、 UniFormer ADE20k
。尾缀ADE20k
和COCO
代表模型训练时使用的 2 种图片数据库,而前缀OneFormer
和UniFormer
表示的是算法。
UniFormer
是旧算法,但由于实际表现还不错依旧被作者作为备选项保留下来,新算法OneFormer
经过作者团队的训练可以很好的适配各种生产环境,元素间依赖关系被很好的优化,平时使用时建议大家使用默认的OneFormer ADE20k
即可。
再来看看不同预处理器的实际出图效果,这里我们将环境由白天切换到黑夜,可以发现由于算法数据库不同,可识别的物体会稍有差异,比如第二种算法OneFormer COCO
对书店雨棚的还原效果不是很好。实际使用时大家也可以根据语义数据表自行填充色块来标识对应的画面元素。
前面的轮廓类都是在二维平面角度的图像检测,有没有可以体现三维层面的控图类型呢?这就不得不提景深类 ControlNet 模型了。景深一词是指图像中物体和镜头之间的距离,简单来说这类模型可以体现元素间的前后关系,包括Depth深度
和NormalMap法线贴图
这 2 种老牌模型。
LeReS
、LeReS++
、MiDaS
、ZoE
,下图中我们可以看到这四种预处理器的检测效果。
对比来看,LeReS
和LeReS++
的深度图细节提取的层次比较丰富,其中LeReS++
会更胜一筹。而MiDaS
和ZoE
更适合处理复杂场景,其中ZoE
的参数量是最大的,所以处理速度比较慢,实际效果上更倾向于强化前后景深对比。
MiDaS
算法可以比较完美的还原场景中的景深关系,实际使用时大家可以根据预处理的深度图来判断哪种深度关系呈现更加合适。
我们在中学时期有学过法线,它是垂直与平面的一条向量,因此储存了该平面方向和角度等信息。我们通过在物体凹凸表面的每个点上均绘制法线,再将其储存到 RGB 的颜色通道中,其中 R 红色、G 绿色、B 蓝色分别对应了三维场景中 XYX 空间坐标系,这样就能实现通过颜色来反映物体表面的光影效果,而由此得到的纹理图我们将其称为法线贴图。由于法线贴图可以实现在不改变物体真实结构的基础上也能反映光影分布的效果,被广泛应用在 CG 动画渲染和游戏制作等领域。
Bae
和Midas
2 种预处理器,MiDaS
是早期 v1.0 版本使用的预处理器,官方已表示不再进行维护,平时大家使用默认新的Bae
预处理器即可,下图是2种预处理器的提取结果。
MiDaS
预处理器时,下方会多出 Background Threshold背景阈值
的参数项,它的数值范围在0~1之间。通过设置背景阈值参数可以过滤掉画面中距离镜头较远的元素,让画面着重体现关键主题。下图中可以看到,随着背景阈值数值增大,前景人物的细节体现保持不变,但背景内容逐渐被过滤掉。
Bae
和Midas
预处理器的出图效果,也能看出Bae
在光影反馈上明显更胜一筹。
终于到了我们大名鼎鼎的 OpenPose,作为唯一一款专门用来控制人物肢体和表情特征的关键模型,它被广泛用于人物图像的绘制。
openpose
、face
、faceonly
、full
、hand
这 5 种预处理器,它们分别用于检测五官、四肢、手部等人体结构。
openpose
是最基础的预处理器,可以检测到人体大部分关键点,并通过不同颜色的线条连接起来。face
在openpose
基础上强化了对人脸的识别,除了基础的面部朝向,还能识别眼睛、鼻子、嘴巴等五官和脸部轮廓,因此face
在人物表情上可以实现很好的还原。faceonly
只针对处理面部的轮廓点信息,适合只刻画脸部细节的场景。hand
相当于在openpose
基础上增加了手部结构的刻画,可以很好的解决常见的手部变形问题。full
是对以上所有预处理功能的集合,可以说是功能最全面的预处理器。
full
预处理器即可。
除了基本的人体姿势,预处理器中包含了对人物五官和手部的结构信息,因此OpenPose在处理表情和手部等人体细节上是很不错的控图工具。
接着是最后的重绘类模型,在之前图生图篇我们有重点介绍过图像重绘的功能,而在 ControlNet 中对图像的重绘控制更加精妙,我们可以理解成这类重绘模型是对原生图生图功能的延伸和拓展。
Global_Harmonious
、only
和only+lama
,通过下图案例整体来看出图效果上差异不大,但在环境融合效果上Global_Harmonious
处理效果最佳,only
次之,only+lama
最差。
Tile 可以说是整个重绘类中最强大的一种模型,虽然还处于试验阶段,但依旧给社区带来了很多惊喜,因此值得我们多花点时间来好好介绍下它。
在 SD 开源这大半年中,绘制超分辨率的高清大图一直是很多极客玩家的追求,但限于显卡高昂的价格和算力瓶颈,通过 WebUI 直出图的方式始终难以达到满意的目标。后来聪明的开发者想到 Tile 分块绘制的处理方法,原理就是将超大尺寸的图像切割为显卡可以支持的小尺寸图片进行挨个绘制,再将其拼接成完整的大图,虽然绘图时间被拉长,但极大的提升了显卡性能的上限,真正意义上实现了小内存显卡绘制高清大图的操作。
1girl
,当图像分割为 16 块进行绘制时,每个块都会被识别成一张独立的图片,导致每个块中可能都会单独绘制一个女孩。而 ControlNet Tile 巧妙的解决了这个问题。在绘制图像时启用 Tile 模型,它会主动识别单独块中的语义信息,减少全局提示的影响。具体来说,这个过程中 Tile 进行了 2 种处理方式:-
忽略原有图像中的细节并生成新的细节。 -
如果小方块的原有语义和提示词不匹配,则会忽略全局提示词,转而使用局部的上下文来引导绘图。
colorfix
、colorfix+sharp
、resample
,分别表示固定颜色、固定颜色+锐化、重新采样。下图中可以看到三种预处理器的绘图效果,相较之下默认的resample
在绘制时会提供更多发挥空间,内容上和原图差异会更大。
InstructP2P 的全称为 Instruct Pix2Pix 指导图生图,使用的是Instruct Pix2Pix数据集训练的ControlNet。它的功能可以说和图生图基本一样,会直接参考原图的信息特征进行重绘,因此并不需要单独的预处理器即可直接使用。
下图中为方便对比,我们将重绘幅度降低到0.1,可以发现开启InstructP2P 后的出图效果比单纯图生图能保留更多有用细节。
IP2P 目前还处于试验阶段,并不是一种成熟的 ControlNet 模型,平时使用并不多,大家大致了解其功能即可。
随机洗牌是非常特殊的控图类型,它的功能相当于将参考图的所有信息特征随机打乱再进行重组,生成的图像在结构、内容等方面和原图都可能不同,但在风格上你依旧能看到一丝关联。
介绍完14种官方模型,下面我们再来看看一些常见的社区模型,由于没有经过系统测试和调整,这类模型可能存在质量参差不齐的情况,且有些控制类型无需预处理器或无ControlNet模型也能使用。
以下社区模型的使用频率并不高,很多效果也是对现有功能的优化或调整,大家大致了解其功能即可,如果有特定需求可以下载对应模型进行尝试,其中有些已经支持配合SDXL使用。
adain
、adain+attn
、only
。其中adain
、adain+attn
是V1.1.171版本后新增的预处理器,其中adain
表示Adaptive Instance Normalization 自适应实例规范化,+attn
表示Attention链接。
根据作者测试,adain+attn
使用的是目前最先进的算法,但有时效果过于强烈,因此依旧建议使用默认的only
预处理。
Recolor也是近期刚更新的一种ControlNet类型,它的效果是给图片填充颜色,非常适合修复一些黑白老旧照片。但Recolor无法保证颜色准确出现特定位置上,可能会出现相互污染的情况,因此实际使用时还需配合如打断等提示词语法进行调整。
intensity
和luminance
2种预处理器,通常推荐使用luminance
,预处理的效果会更好。
T2I-Adapter由腾讯ARC 实验室和北大视觉信息智能学习实验室联合研发的一款小型模型,它的作用是为各类文生图模型提供额外的控制引导,同时又不会影响原有模型的拓展和生成能力。名称中T2I 指的是的 text-to-image,即我们常说的文生图,而Adapter是适配器的意思。
T2I-Adapter 被集成在ControlNet中作为某一控制类型的选项,但实际上它提供了Lineart
、Depth
、Sketch
、Segmentation
、Openpose
等多个类型的控图模型来使用。
IP-Adapter是腾讯的另一个实验室Tencent AI Lab研发的控图模型。名称中的IP指的是Image Prompt图像提示,它和T2I-Adapter一样是一款小型模型,但是主要用来提升文生图模型的图像提示能力。IP-Adapter自9月8日发布后收到广泛好评,因为它在使用图生图作为参考时,对画面内容的还原十分惊艳,效果类似Midjourney的V按钮。它也同样内置了多种控图模型,下图中是官方提供的绘图案例。
本篇【ControlNet】是SD 学习指南系列的第6篇文章,应该已经囊括Stable Diffusion大部分的常用功能和操作,在公众号后台回复【SD资源】可获取 Stable Diffusion 的全部资源。
回复【软件】获取Mac必备软件
回复【字体】获取200+免费可商用中英文字体
回复【PPT】获取keyonte精品封面和模板
回复【书籍】获取100+必读设计书籍
回复【素材】获取3D元素、样机
回复【SD资源】获取 Stable Diffusion 历史资源
那就点个在看吧~
⬇️ ⬇️ ⬇️