找回密码
 立即注册
查看: 602|回复: 0

[教程] 【Stable Diffusion】ControlNet 详解篇

[复制链接]

61

主题

-8

回帖

195

积分

注册会员

积分
195
发表于 2023-7-2 13:17:57 | 显示全部楼层 |阅读模式

【Stable Diffusion】ControlNet 详解篇

作者:[mwdesign]

一、前言

女模特总是不配合?用它!游戏原画没灵感?也用它!建筑绘画各行各业设计都用它!它就是 ControlNet !只需简单调整参数就能产出无限创作灵感,提高我们的创作效率! 这款 SD 插件已成为了AI 绘画领域最新的热点。而它的出现代表着 AI 生成开始进入真正可控的时期,而 AIGC 的可控性是它进入实际生产最关键的一环。在此之前,大家用了很多方法想让 AI 生成的结果尽可能符合要求,但都不尽如人意,ControlNet 比之前 img2img 要更加精准和有效,可以直接提取画面的构图,人物的姿势和画面的深度信息等等。有了它的帮助,就不用频繁用提示词来碰运气抽卡式创作了。今天我们就详细探讨下 ControlNet 的各项参数,带着大家进入绘画创作的新大门!

二、ControlNet 缘起简介

ControlNet 作者:张吕敏,他是2021年本科毕业,目前正在斯坦福读博的中国人,为我们这位年轻同胞点赞。ControlNet 是作者提出的一个新的神经网络概念,就是通过额外的输入来控制预训练的大模型,比如 stable diffusion。这个本质其实就是端对端的训练,早在2017年就有类似的AI模型出现,只不过这一次因为加入了 SD 这样优质的大模型,让这种端对端的训练有了更好的应用空间。它很好的解决了文生图大模型的关键问题:单纯的关键词控制方式无法满足对细节精确控制的需要。 之前很火的 Style2Paints 也是这位作者制作的,除此之外他还做了一款名为 YGO PRO 2 的 Unity 纸牌游戏,这款游戏在国内外都有不少粉丝。

AI线稿上色这个领域他也有涉猎,Style2Paints 就是他创作的应用,已经迭代到了第5版。下图是 Style2Paints 线稿到插画的示例。项目地址:https://github.com/lllyasviel/style2paints

三、基础参数介绍

1. 启用(Enable)

勾选此选项后,点击 “生成” 按钮时,ControlNet 才会生效。

2. 反色模式(Invert Input Color)

将图像颜色进行反转后应用。

3. RGB 转 BGR(RGB to BGR)

把颜色通道进行反转,在 NormalMap 模式可能会用到。

4. 低显存优化(Low VRAM)

低显存模式,如果你的显卡内存小于等于4GB,建议勾选此选项。

5. 无提示词的猜测模式(Guess Mode)

也就是盲盒模式,不需要任何正面与负面提示词,出图效果随机,很有可能产生意想不到的惊喜效果!

6. 预处理器(Preprocessor)

在此列表我们可选择需要的预处理器,每个 ControlNet 的预处理器都有不同的功能,后续将会详细介绍。

7. 模型(Model)

配套各预处理器需要的专属模型。该列表内的模型必须与预处理选项框内的名称选择一致,才能保证正确生成预期结果。如果预处理与模型不致其实也可以出图,但效果无法预料,且一般效果并不理想。

8. 权重(Weight)

权重,代表使用 ControlNet 生成图片时被应用的权重占比。

9. 引导介入时机(Guidance Start(T))

在理解此功能之前,我们应该先知道生成图片的 Sampling steps 采样步数功能,步数代表生成一张图片要刷新计算多少次,Guidance Start(T) 设置为 0 即代表开始时就介入,默认为 0,设置为 0.5 时即代表 ControlNet 从 50% 步数时开始介入计算。

10. 引导退出时机(Guidance End(T))

和引导介入时机相对应,如设置为1,则表示在100%计算完时才会退出介入也就是不退出,默认为 1,可调节范围 0-1,如设置为 0.8 时即代表从80% 步数时退出介入。

11. 缩放模式(Resize Mode)

用于选择调整图像大小的模式:默认使用(Scale to Fit (Inner Fit))缩放至合适即可,将会自动适配图片。 一共三个选项:Just Resize,Scale to Fit (Inner Fit),Envelope (Outer Fit)

12. 画布宽度和高度(Canvas Width 和 Canvas Height)

画布宽高设置,请注意这里的宽高,并不是指 SD 生成图片的图像宽高比。该宽高代表 ControlNet 引导时所使用的控制图像的分辨率,假如你用 SD 生成的图片是 1000x2000 分辨率,那么使用 ControlNet 引导图像时,对显存的消耗将是非常大的;我们可以将引导控制图像的分辨率设置为 500x1000 ,也就是缩放为原本图像一半的分辨率尺寸去进行引导,这有利于节省显存消耗。

13. 创建空白画布(Create Blank Canvas)

如果之前使用过 ControlNet 功能,那么将会在 ControlNet 的图像区域留有历史图片,点击该按钮可以清空之前的历史,也就是创建一张空白的画布。

14. 预览预处理结果(Preview Annotator Result)

点击该按钮可以预览生成的引导图。例如:如果使用 Canny 作为预处理器,那么点击该按钮之后,可以看到一张通过 Canny 模型提取的边缘线图片。

15. 隐藏预处理结果(Hide Annotator Result)

点击该按钮可以隐藏通过 Preview 按钮生成的预览图像窗口(不建议隐藏)

四、预处理器功能详解

ControlNet 的核心能力就是能让我们通过设置各种条件来让AI更可控地生成最终图像结果。这些条件就是通过调节预处理器参数来实现的,所以我们首先要先了解下 ControlNet 各种预处理器的功能。

1. Canny 边缘检测

Canny 边缘检测预处理器可很好识别出图像内各对象的边缘轮廓,常用于生成线稿。

· 预处理器分辨率

预处理器分辨率数值越高越精细,也越吃显存。但如果数值太低生成的线条也会很粗糙。默认512,具体设置时需根据素材大小和实际情况来做权衡。

· 长和宽的阈值

这个值越高线条越简单,越低线条越复杂。

注意:一定要找到和预处理器对应名字一样的模型。

重绘幅度越高,AI越放飞自我。

Prompt: "cute dog"

给线稿上色制作的小动画效果也挺好。https://twitter.com/izumisatoshi05/status/1625835599017148416

2. Depth 深度检测

通过提取原始图片中的深度信息,生成具有原图同样深度结构的深度图,越白的越靠前,越黑的越靠后。

· MiDaS 深度信息估算

MiDaS 深度信息估算,是用来控制空间距离的,类似生成一张深度图。一般用在较大纵深的风景,可以更好表示纵深的远近关系。

注:有时我们也可以用于生成遮罩蒙版。

· LeReS 深度信息估算

LeReS 深度信息估算比 MiDaS 深度信息估算方法的成像焦点在中间景深层,这样的好处是能有更远的景深,且中距离物品边缘成像会更清晰,但近景图像的边缘会比较模糊,具体实战中需用哪个估算方法可根据需要灵活选择。

如下图能看出我们很好地控制住了生成结果的整体结构,这与原图基本保持一致。

3. HED 边缘检测

HED 边缘检测可保留更多柔和的边缘细节,类似手绘效果。

参数也是分辨率越高越精细,但也越吃显存。

Prompt: "oil painting of handsome old man, masterpiece"

相对于使用普通的 img2img ,边缘线提取的方式可以生成更加清晰完整的图,黑色描边也得到了很好的重绘。

4. M-LSD 线条检测

M-LSD 线条检测用于生成房间、直线条的建筑场景效果比较好。

rompt: "room"

Prompt: "building"

5. Normal Map 法线贴图

Normal Map 法线贴图能根据原始素材生成一张记录凹凸信息的法线贴图,便于AI给图片内容进行更好的光影处理,它比深度模型对于细节的保留更加的精确。法线贴图在游戏制作领域用的较多,常用于贴在低模上模拟高模的复杂光影效果。

· RGB 转 BGR

如需要把 Normal map 从 RGB 反转成 BGR 的可把这个选项勾上。(注:因坐标系问题,有时需要反转下通道信息,如生成结果的光照信息和你预期是反的,可能需要勾选此选项)

6. OpenPose 姿态检测

OpenPose 姿态检测可生成图像中角色动作姿态的骨架图,这个骨架图可用于控制生成角色的姿态动作。这个没有涉及手部的骨架,所以手部控制不行有时会出问题。

· OpenPose 姿态及手部检测

OpenPose 姿态及手部检测解决了姿态检测手的问题。如下图有了手部骨骼控制生成的手部效果会更好。

除了生成单人的姿势,它甚至可以生成多人的姿势,这点非常关键,在此之前AI生成的画面里多个人物的特定动作是几乎无法靠提示词来实现的。

通过控制人物姿势,在人物角色设计时也可以得到很好应用。

7. PiDiNet 边缘检测(像素差分网络,配合 hed 模型)

PiDiNet 边缘检测生成的线条较粗壮,类似雕刻效果。

这个预处理器要配合选择 hed 模型效果才会比较好。

8. Scribble 涂鸦(要配合 scribble 模型)

设置画布高度和宽度,一般默认 512x512 就可以了,点击 “Create blank canves” 创建画布。

把画笔调小一点,勾画出想要的图像轮廓(如下图)。

再添加一些提示词描述,控制下生成效果。

最终生成的图像效果,如下图。

· Fake_Scribble 伪涂鸦

不用自己画,扔个图片给AI,生成类似涂鸦效果的草图线条。

9. Segmentation(ADE20k 语义分割,配合seg模型)

语义分割可多通道应用,原理是用颜色把不同类型的对象分割开,让AI能正确识别对象类型和需求生成的区界。

B站大佬的详细视频教程:https://www.bilibili.com/video/BV1Wg4y1x7Ur

OneFormer 地址:https://huggingface.co/spaces/shi-labs/OneFormer

ADE20K 颜色表:https://drive.google.com/file/d/1lon9OBkWYFwj_xxh9lGFfkcQaZ0ErFAS/view

10. Binary 二进制(黑白稿提取)

Binary 二进制就是把图像变成只有黑白两色(没有灰),如下图效果。

11. Clip_Vision 风格转移(配合 style 模型)

这是近期新出的一个模型,在实际使用中,选择预处理的时候并没有预览图像,猜测是因为风格转移,一种风格并不好预览。

B站大佬教程:https://www.bilibili.com/video/BV1BL41117ka

首先生成一张颜色丰富的照片,然后以该照片作为 ControlNet 输入,该预处理器叫做 clip_vision,但是模型叫做 t2iadapter_style。有趣的是可以把一张照片的风格转移到另外一张上,如先生成一把剑,再将上述颜色丰富的照片和剑结合,就可以得到下图效果。

prompt: just a sword Negative prompt: man, woman, person, protagonist Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 2026071917, Size: 512x512, Model hash: fc2511737a, Model: chilloutmix_NiPrunedFp32Fix, ENSD: 31337, ControlNet-0 Enabled: True, ControlNet-0 Module: canny, ControlNet-0 Model: control_sd15_canny [fef5e48e], ControlNet-0 Weight: 1, ControlNet-0 Guidance Start: 0, ControlNet-0 Guidance End: 1

参考:https://github.com/TencentARC/T2I-Adapter/blob/main/docs/examples.md

12. Color 色彩继承

色彩预处理后会检测出原图中色彩的分布情况,分辨率影响色彩块的大小。

B站大佬视频教程:https://www.bilibili.com/video/BV1Uo4y1z7rC

不加任何提示词,生成的图像就艺术感爆棚,观察下颜色和检测出来的颜色分布趋于一致。

官方介绍 https://github.com/TencentARC/T2I-Adapter/blob/main/docs/examples.md

五、附录

1. 预处理器与对应模型清单

预处理器名称 对应ControlNet模型 对应腾讯t2i模型 功能描述
canny control_canny t2iadapter_canny 边缘检测,适合原画设计师
depth control_depth t2iadapter_depth MiDaS深度检测
depth_leres control_depth t2iadapter_depth LeReS深度检测
hed control_hed 边缘检测但保留更多细节,适合重新着色和风格化
mlsd control_mlsd 线段识别,识别人物功能极差,适合建筑设计师
normal_map control_normal 根据图片生成法线贴图,适合CG或游戏美术师
openpose control_openpose t2iadapter_openpose<br/>t2iadapter_keypose 提取人物骨骼姿势
openpose_hand control_openpose t2iadapter_openpose<br/>t2iadapter_keypose 提取人物+手部骨骼姿势
scribble control_scribble t2iadapter_sketch 应用自画的黑白稿
fake_scribble control_scribble t2iadapter_sketch 涂鸦风格提取(很强大的模型)
segmentation control_seg t2iadapter_seg 应用语义分割
binary control_scribble t2iadapter_sketch 提取黑白稿
clip_vision t2iadapter_style 风格转移
color t2iadapter_color 色彩分布

2. ControlNet 和 T2I-Adapter 有什么区别?

ControlNet 在论文里提到,Canny Edge Detector 模型的训练用了 300 万张边缘-图像-标注对的语料,A100 80G 的 600 个 GPU 小时。Human Pose (人体姿态骨架)模型用了 8 万张 姿态-图像-标注 对的语料, A100 80G 的 400 个 GPU 时。 T2I-Adapter 的训练是在 4 块 Tesla 32G-V100 上只花了 2 天就完成,包括 3 种 condition,sketch(15 万张图片语料),Semantic segmentation map(16 万张)和 Keypose(15 万张)。 两者的差异:ControlNet 目前提供的预训模型,可用性完成度更高,支持更多种 condition detector (9 大类)。 T2I-Adapter ”在工程上设计和实现得更简洁和灵活,更容易集成和扩展” 此外,T2I-Adapter 支持一种以上的 condition model 引导,比如可以同时使用 sketch 和 segmentation map 作为输入条件,或 在一个蒙版区域 (也就是 inpaint ) 里使用 sketch 引导。

3. 参考资料汇总

注:700m版为压缩过的16位浮点模型(16fp 表示范围更小,但文件更小,内存需求也更小,每个模型仅700MB)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|金房子

GMT+8, 2024-5-20 01:01 , Processed in 0.043815 second(s), 19 queries .

© 2023 金房子|AI发烧友社区

快速回复 返回顶部 返回列表