Github下载地址
Created
Apr 24, 2023 05:17 AM
详情
Tags
简悦
描述
Origin
zhuanlan.zhihu.com
一、前言
女模特总是不配合?用它!游戏原画没灵感?也用它!建筑绘画各行各业设计都用它!它就是 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
10. Binary 二进制(黑白稿提取)
Binary 二进制就是把图像变成只有黑白两色(没有灰),如下图效果。
11. Clip_Vision 风格转移(配合 style 模型)
这是近期新出的一个模型,在实际使用中,选择预处理的时候并没有预览图像,猜测是因为风格转移,一种风格并不好预览。
首先生成一张颜色丰富的照片,然后以该照片作为 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
12. Color 色彩继承
色彩预处理后会检测出原图中色彩的分布情况,分辨率影响色彩块的大小。
不加任何提示词,生成的图像就艺术感爆棚,观察下颜色和检测出来的颜色分布趋于一致。
五、附录
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_openposet2iadapter_keypose | 提取人物骨骼姿势 |
openpose_hand | control_openpose | t2iadapter_openposet2iadapter_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. 参考资料汇总
- ControlNet-G 站主页:https://github.com/lllyasviel/ControlNet
- ControlNet-G 站教程:https://github.com/Mikubill/sd-webui-controlnet#examples
注:700m 版为压缩过的 16 位浮点模型(16fp 表示范围更小,但文件更小,内存需求也更小,每个模型仅 700MB)
▎本文由 简悦 SimpRead 转码。