1.ControlNet是什么
ControlNet是Stable Diffusion用于图像风格迁移和控制的一款插件,作者是2021年才本科毕业,现在在斯坦福大学读博士一年级的中国学生张吕敏。ControlNet的出现代表着 AI 生成开始进入真正可控的时期,而 AIGC 的可控性是它进入实际生产最关键的一环。在此之前,大家用了很多方法想让 AI 生成的结果尽可能符合要求,但都不尽如人意,ControlNet 比之前 img2img 要更加精准和有效,可以直接提取画面的构图,人物的姿势和画面的深度信息等等。有了它的帮助,就不用频繁用提示词来碰运气抽卡式创作了。
2.ControlNet作用
它允许通过线稿、动作识别、深度信息等对原有的图像进行控制,用户可以手动编辑源图像,控制其某些属性,改变图像的画风、动作、颜料等,生成新的图像。
ControlNet应用领域非常广,如时尚设计师可以输入不同款式和图案,快速生成服装设计灵感和样品;游戏设计者可以使用该插件快速生成不同主题和风格的游戏资源,如不同时代的建筑、衣服、植被等;电商商家可以控制AI模特的动作,摆出相应的姿态等。
3.ControlNet基本流程
安装好ControlNet后,在页面上会出现ControlNet的各类选项
(1)上传需要处理的图像(Drop Image Here or Click to Upload)
直接将需要处理的原图像拖动到这里,或者点击进行图像上传。
(2)启用(Enable)
点击Enable,表示启用。
(2)启动反色模式(Invert Input Color)
Invert Input Color 表示启动反色模式,如果输入的图片是白色背景,开启它。
(3)色彩通道信息反转(RGB to BGR)
RGB to BGR 表示将输入的色彩通道信息反转,即 RGB 信息当做 BGR 信息解析,只是因为 OpenCV 中使用的是 BGR 格式。如果输入的图是法线贴图,开启它。
(4)低显存模式(Low VRAM)
Low VRAM 表示开启低显存优化,需要配合启动参数“–lowvram”,如果你的显卡内存小于等于4GB,建议勾选此选项。
(5)无提示词模式(Guess Mode)
Guess Mode 表示无提示词模式,也就是盲盒模式,不需要任何正面与负面提示词,出图效果随机,很有可能产生意想不到的惊喜效果!
(6)预处理(Preprocessor)
Preprocessor 指预处理器,它将对输入的图像进行预处理,包括canny、mlsd等,根据图像特征以及最后要生成的图像效果,进行预处理模型选择。如果图像已经符合预处理后的结果,请选择 None。譬如,图中导入的图像已经是 OpenPose 需要的骨架图,那么 preprocessor 选择 none 即可。
(7)模型(Model)
Model 中请选择想要使用解析模型,应该与输入的图像或者预处理器对应。请注意,预处理器可以为空,但模型不能为空。如果预处理与模型不一致其实也可以出图,但效果无法预料,且一般效果并不理想。
(8)调整权重值(Weight)
在 Weight 下,可以调整该项 ControlNet 的在合成中的影响权重。
(9)引导介入时机(Guidance Start(T))
Guidance strength 用来控制图像生成的前百分之多少步由 Controlnet 主导生成。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对于不同图像属性的调整,以及要生成的图像效果,主要是通过调节预处理(Preprocessor)和模型(Model)来实现的(Preprocessor和Model往往需要一样),下一节,我将通过实例来演示通过调节ControlNet的基本参数,配合所选择的大模型(Stable Diffusion checkpoint)来对ControlNet的基本用法进行讲解,欢迎关注、点赞、收藏,支持博主!
参考文献
[1]https://zhuanlan.zhihu.com/p/619721909
[2]https://cloud.tencent.com/developer/article/2273366?areaSource=100001.4
[3]https://zhuanlan.zhihu.com/p/606983243
[4]https://www.youtube.com/watch?v=x04Kb2sEm6Y