Ai绘画目前可控性不强是一个共识,绝大部分工具甚至连人物姿势都无法控制,所以每次绘画都是一次开盲盒过程,在这种情况下,很难应用到实际工作中去,很多时候几乎就是一个玩具。
Controlnet的出现,改变了这种局面。它是Stable Diffusion(简称SD)一个至今最为强大的插件,作者叫张吕敏,是一名正在美国读博的年轻中国人,就是下面这个小伙子。
这个插件一经发布,在Ai绘画领域一夜之间风靡世界。
Controlnet通过额外的输入来控制Ai绘画效果,也就是说,绘画师画出的Ai女友,终于可以按照自己的设想摆出各种姿势,画出的房子等事物,终于可以控制在某个设想范围之内,也有网友借助它的强大控制能力开发出新的插件,使SD已经可以完成视频制作,完成重大跨越。
可以说Controlnet的出现,是Ai绘画进入生产环节的重要标志。
Controlnet直接在SD的Webui界面中使用,需要了解的地方不少,单是它本身可携带的模型数量,目前就高达14个,而且迭代也快,需要时常更新知识才可跟上步伐。对初学者来说,是不是感觉有些头大?
实际上,它的模型使用方式大同小异,可以一通多通,学会两三个典型用法之后,其它模型大多不在话下。网络上有很多详细教程,动不动是万字长文,读起来非常费劲,今天的这篇文章,尝试从一个初学者的角度去简化一下。
一、Controlnet能干啥
使用这个插件首先要了解的是:它主要能干什么事情。只有先搞清楚这一点,才知道什么时候需要用它。
我在下表尝试去总结一下它的常见能力。必须强调的是,表格中只列出Controlnet能力的一部分,而且为了便于理解而添加的备注,虽然不会离题,但也并非总能完整地涵盖这些模型的所有能力。
作为初学者,了解掌握这些已是一个很好的开端。而且,每一种能力都会有不同的应用,需要在实践中去尝试和灵活运用。
二、Controlnet有哪些常用模型
了解了Controlnet的常见能力,你就可以知道自己要的效果能不能通过它来控制实现。上述常见能力,都可以在Controlnet中找到具体的对应模型,对号入座即可。
在这里需要强调一下(敲黑板),Controlnet的使用,在选择模型之前,一般需要先选择对应的“预处理器”,这两者几乎都是“双宿双栖”的。
预处理器的名字前缀,和模型的核心名称是一致的,例如,目前openpose模型对应的预处理器分别有:openpose_face(脸部)、openpose_full(整体)等几种,可根据具体绘画目标来选择。
另一个重点是(再敲一次黑板),Controlnet的使用一般需要给出参考图(我的定义),引导算法按照参考图来作画。如果你给的图已经是骨骼姿态图/语义分割图(下面会讲),则预处理一栏留空,只需选择对应的模型即可。这一点很多人经常忘记,出来的图有时候会变得很奇怪。
三、Controlnet的使用方法
1.安装
在SD的Webui界面中,在“扩展”标签下输入这个地址安装重启即可。
https://github.com/lllyasviel/ControlNet-v1-1-nightly
也可以点击上图“可用”标签后在列表中找到它,点击安装。实际上,如果你用的是整合包,基本会自带这个插件。安装成功后,因为它有14个可用模型,需要你自行下载,下载地址在抱脸网站:
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
需要指出的是,这些模型中,名字带有V11P的是稳定版本,可放心使用。如下图框中的文件:
这些文件,只需要下载1.45G体积的那个即可,设置文件在使用时自动下载匹配。
2.Controlnet基础设置
先看界面(Controlnet版本V1.1.220),主要包括4个区域:
// 区域1
上传图像区,我在上面将这个图定义为“参考图”,也就是说,这张图是让Controlnet去结合具体的模型,引导控制图片的生成。
例如,你在这里上传了一张人物骨骼图(下图左),选择openpose模型,最终输出了右图结果,复刻了骨骼图的姿势。
// 区域2
要使Controlnet工作,必须在这个区域勾选“启用”插件,第二项低显存优化很容易理解,但勾选可能会损失一些效果。第三项建议勾选,免去再设置一次图片尺寸,第四项是预览项,可选可不选。
// 区域3
Control Type控制类型。选择任一种控制类型,下面对应的是细分的预处理器和模型设置。
其中,模型选项是必选的。前者多数时候要选,但一些时候并非必选,前文已有说明。
该区域下面的三项:
后面两项一般情况下保留默认值即可。
// 区域4
Control Mode,这三项的意思分别是:平衡、描述词更重要、Controlnet更重要。需要依据输出的图片结果来调整选择,一般默认“平衡”项。后两项也很容易理解,意思是希望绘画更偏重接近描述词还是Controlnet控制。
下面是页面缩放选项,一般默认中间项:裁剪和调整大小
3.描述词和绘图参数设置
设置好Controlnet后,还需输入你要生成的画面的正面描述和反面描述词,以及设置采样方法、步数、尺寸等。
四、Controlnet的使用案例
讲3个例子:姿势控制、线稿上色、语义分割。
// 姿势控制
➀上传一张参考人物姿势图(下图左边橙色衣服女人)。
➁选择预处理器和处理模型:openpose_full、openpose,点击预览(红色火花图标)后,可看到人物姿势转为骨骼图(下图右上):
➂选择真人绘画模型,输入绘画正反向描述词,设置参数后生成图片,生成结果如下图(右)
// 线稿上色
➀上传线稿参考图(下图左上)
➁选择预处理器和处理模型(均为canny,如图,右上为处理预览)
➂选择动漫类大模型,输入描述词及设置生成参数后,生成图片,结果如下图:
// 语义分割
➀上传一张建筑物参考图
➁选择预处理器和处理模型后生成预览(右上,语义分割图),如下:
➂选择适合的大模型,输入描述词及设置生成参数后生成图片,结果如下图:
这里说多一句,在需要高度自定义画面的时候,例如你想设计一个房子的外观,可以自己画出语义分割图后,让SD去生成,可迅速获得大量初步效果图,但要注意的是,语义分割图中的不同颜色,代表的意思并不一样,需要严格控制精确的颜色值。
我这里也有一张精确颜色对照表,类似下图,向本公众号发送“语义分割”四字可取。
以上用法,适合Controlnet的多数模型,思路基本一致。当然,它的能力远不止如此,本文只介绍了一些基础知识,回头有空再写一篇进阶教程。
Controlnet的官方中文说明文档,点击本文左下“阅读原文”可达(需科学上网)。
最后提供1个Controlnet输出复杂场景的例子:水浒的风雪山神庙插画(作者@blade2019runner),大家感受一下。
制作底图:
输出结果图: